B2016-130: Copy and paste replace steps causing missing and duplicate items in tree (problems with ‘NextItems’)

This commit is contained in:
2017-08-07 13:05:02 +00:00
parent e8ae40ef7f
commit 20a07c6a3e
12 changed files with 135 additions and 31 deletions

View File

@@ -153,7 +153,7 @@ namespace Volian.Print.Library
{
if ((childItemInfo.IsCaution || childItemInfo.IsNote) &&
childItemInfo.MyPrevious != null && childItemInfo.MyPrevious.MyContent.Type != childItemInfo.MyContent.Type &&
childItemInfo.NextItemCount > 0 && childItemInfo.NextItem!= null && childItemInfo.MyContent.Type == childItemInfo.NextItem.MyContent.Type)
childItemInfo.NextItem != null && childItemInfo.MyContent.Type == childItemInfo.NextItem.MyContent.Type)
childItemInfo.SetupTags(); // added for V.C. Summer Transition caution in EOP-15.0 step 5.4
if (lastHeader != null)
{
@@ -372,7 +372,7 @@ namespace Volian.Print.Library
if (nxt != null && (nxt.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DoubleBoxHLS) == E_DocStructStyle.DoubleBoxHLS) nxtIsBoxed = 0;
yoff += (nxtIsBoxed * vlnPrintObject.SixLinesPerInch);
}
if (childItemInfo.IsSequential && childItemInfo.NextItemCount > 0 && childItemInfo.MyParent.IsHigh && ((childItemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.XBlankW1stLevSub) == E_DocStructStyle.XBlankW1stLevSub))
if (childItemInfo.IsSequential && childItemInfo.NextItem != null && childItemInfo.MyParent.IsHigh && ((childItemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.XBlankW1stLevSub) == E_DocStructStyle.XBlankW1stLevSub))
yoff += vlnPrintObject.SixLinesPerInch;
boxHLS = false;
lastChild = childItemInfo;
@@ -811,7 +811,7 @@ namespace Volian.Print.Library
{
// This section of code draws the lines around the substeps (the actual table part)
Paragraph horzLine = new Paragraph(ii.ActiveFormat.PlantFormat.FormatData.BoxList[0].BXHorz, iSymblFont);
bool bottomOfTable = (ii.NextItem == null || ii.NextItemCount == 0) ||
bool bottomOfTable = ii.NextItem == null ||
(MyPageHelper.ParaBreaks.Count > 0 && MyPageHelper.ParaBreaks[0].MyItemInfo.ItemID == ii.NextItem.ItemID);
// if bottom of table use different cross/beg/end chars than if in middle of table.
Paragraph leftLine = new Paragraph(bottomOfTable ? bx.BXLLC : bx.BXMLS, iSymblFont);
@@ -857,7 +857,7 @@ namespace Volian.Print.Library
// Now handle middle parts of the table. For whatever sub level we're at, draw the cross character
// and the horizontal. This is case where the component number may have multiple descriptions,positions, etc. associated
// with it.
if (!ii.MyParent.IsHigh && ii.NextItem != null && ii.NextItemCount > 0)
if (!ii.MyParent.IsHigh && ii.NextItem != null)
{
// draw horizontally from this sublevel to the end.
int sublev = 0;
@@ -2283,15 +2283,17 @@ namespace Volian.Print.Library
// Go to the parent, and find its next and check if it or any of its substeps or next steps or any of their substeps have supinfo,
// and if so, return the id.
ItemInfo par = ii.MyParent;
if (!par.IsSection && par.NextItems != null && par.NextItems.Count > 0)
ItemInfo parsnxt = par.GetNext();
if (!par.IsSection && parsnxt != null)
{
par = par.NextItem;
par = parsnxt;
while (par != null && !par.IsSection)
{
id = GetIdThatHasSupInfoItemsSibNext(par, startid);
if (id != -1) return id;
par = par.MyParent;
if (!par.IsSection && par.NextItems != null && par.NextItems.Count > 0) par = par.NextItem;
ItemInfo sparsnxt = par.GetNext();
if (!par.IsSection && sparsnxt != null) par = sparsnxt;
else return -1;
}
}
@@ -2303,7 +2305,7 @@ namespace Volian.Print.Library
int id = -1;
while (ii != null)
{
SectionInfo supInfoSect = ii.MyActiveSection as SectionInfo;
SectionInfo supInfoSect = ii.ActiveSection as SectionInfo;
// if there is a pagebreak on this step section step, quit looking for supinfos. The
// break has to occur here.
if (supInfoSect.StepSectPageBreaks.Contains(ii.ItemID)) return -1;