From 6ed306e8b993b05f610c38a9d3933c8d03da1adf Mon Sep 17 00:00:00 2001 From: John Date: Wed, 1 Jun 2016 14:49:59 +0000 Subject: [PATCH] Fixed null reference error when inserting a figure off of a figure --- PROMS/Volian.Controls.Library/EditItem.cs | 16 ++++++++++++---- PROMS/Volian.Controls.Library/GridItem.cs | 6 +++--- PROMS/Volian.Controls.Library/RTBItem.cs | 6 +++--- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/PROMS/Volian.Controls.Library/EditItem.cs b/PROMS/Volian.Controls.Library/EditItem.cs index d90d811a..d10d686c 100644 --- a/PROMS/Volian.Controls.Library/EditItem.cs +++ b/PROMS/Volian.Controls.Library/EditItem.cs @@ -578,12 +578,11 @@ namespace Volian.Controls.Library EditItem lastChild = LastChild(siblingEditItems); siblingEditItems.Add(this); MyPreviousEditItem = lastChild; - if (MyParentEditItem == null) MyParentEditItem = parentEditItem; } else // Add to the middle of the list before a particular item { EditItem prevChild = nextEditItem.MyPreviousEditItem; - EditItem parent = nextEditItem.MyParentEditItem??parentEditItem; + EditItem parent = nextEditItem.MyParentEditItem; if(siblingEditItems.Contains(nextEditItem)) siblingEditItems.Insert(siblingEditItems.IndexOf(nextEditItem), this); else @@ -592,7 +591,7 @@ namespace Volian.Controls.Library _MyNextEditItem = nextEditItem; nextEditItem._MyPreviousEditItem = this; MyPreviousEditItem = prevChild;// If a previous exists - this will adjust the location and width of the EditItem - //nextEditItem.MyParentEditItem = null; // jsj 5-13-2016 commented out got null referenced error when deleting an empty figure type substep + nextEditItem.MyParentEditItem = null; MyParentEditItem = parent; // If a parent exists - this will adjust the location and width of the EditItem //nextEditItem.MyPreviousEditItem = this; MyStepPanel.ItemMoving--; @@ -1829,8 +1828,17 @@ namespace Volian.Controls.Library /// /// /// - protected Point TableLocation(EditItem myParentEditItem, StepSectionLayoutData myStepSectionLayoutData, int width) + protected Point TableLocation(StepSectionLayoutData myStepSectionLayoutData, int width) { + // bug fix: B2016-111 - myParentEditItem was getting a null reference error when inserting a figure before/after a figure + EditItem myParentEditItem = _MyParentEditItem; + if (myParentEditItem == null) + { + EditItem parentEI = _MyPreviousEditItem; + while (parentEI._MyPreviousEditItem != null) + parentEI = parentEI._MyPreviousEditItem; + myParentEditItem = parentEI._MyParentEditItem; + } // Should center on parent unless it is a centered table in the AER column int center = myParentEditItem.ContentLeft + myParentEditItem.ContentWidth / 2; int rightLimit = myParentEditItem.Right; diff --git a/PROMS/Volian.Controls.Library/GridItem.cs b/PROMS/Volian.Controls.Library/GridItem.cs index 1190e9db..4a1b80f1 100644 --- a/PROMS/Volian.Controls.Library/GridItem.cs +++ b/PROMS/Volian.Controls.Library/GridItem.cs @@ -153,7 +153,7 @@ namespace Volian.Controls.Library if (wNew > ItemWidth) { ItemWidth = wNew; - ItemLocation = TableLocation(MyParentEditItem, MyStepSectionLayoutData, wNew); + ItemLocation = TableLocation(MyStepSectionLayoutData, wNew); } } else @@ -162,7 +162,7 @@ namespace Volian.Controls.Library if (ItemWidth != newwidth) { ItemWidth = newwidth; - ItemLocation = TableLocation(MyParentEditItem, MyStepSectionLayoutData, newwidth); + ItemLocation = TableLocation( MyStepSectionLayoutData, newwidth); } } } @@ -452,7 +452,7 @@ namespace Volian.Controls.Library // We had a table that was in a funky state. This allows it to appear in editor so // that is could be deleted. if (_MyParentEditItem == null) return; - Point newLocation = TableLocation(_MyParentEditItem, MyStepSectionLayoutData, ItemWidth); + Point newLocation = TableLocation(MyStepSectionLayoutData, ItemWidth); if (!newLocation.Equals(ItemLocation)) ItemLocation = newLocation; } public override void SetToolTip(string tip) diff --git a/PROMS/Volian.Controls.Library/RTBItem.cs b/PROMS/Volian.Controls.Library/RTBItem.cs index 5a5c2d30..d11ad16e 100644 --- a/PROMS/Volian.Controls.Library/RTBItem.cs +++ b/PROMS/Volian.Controls.Library/RTBItem.cs @@ -124,7 +124,7 @@ namespace Volian.Controls.Library _MyStepRTB.Font = MyStepData.Font.WindowsFont; ItemWidth = (int)GetTableWidth(_MyStepRTB.Font, MyItemInfo.MyContent.Text, true); ItemLocation = new Point(50, _MyParentEditItem.Bottom); - ItemLocation = TableLocation(_MyParentEditItem, MyStepSectionLayoutData, ItemWidth); + ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth); } override public void SetToolTip(string tip) @@ -604,7 +604,7 @@ namespace Volian.Controls.Library if (wNew > ItemWidth) { ItemWidth = wNew; - ItemLocation = TableLocation(MyParentEditItem, MyStepSectionLayoutData, wNew); + ItemLocation = TableLocation(MyStepSectionLayoutData, wNew); } } else @@ -613,7 +613,7 @@ namespace Volian.Controls.Library if (ItemWidth != newwidth) { ItemWidth = newwidth; - ItemLocation = TableLocation(MyParentEditItem, MyStepSectionLayoutData, newwidth); + ItemLocation = TableLocation(MyStepSectionLayoutData, newwidth); } } }