Kaydet (Commit) 20e4ccc6 authored tarafından Eike Rathke's avatar Eike Rathke

correct 3D reference update on sheet deletion, tdf#90001 follow-up

be1b3dae missed a few cases
* a deleted reference start was shifted by two sheets instead of one if
  the formula was on a sheet before the deleted one
* a deleted reference end was not correct if the formula was on a sheet
  behind the deleted one and used relative sheet reference
* #REF! wasn't set when the entire referenced range was deleted

Change-Id: Ib9c7492a651a8429fa1c411c8e447593e366e09d
üst 8e0a9f97
...@@ -3471,26 +3471,27 @@ bool adjustDoubleRefOnDeleteTab(ScComplexRefData& rRef, SCTAB nDelPos, SCTAB nSh ...@@ -3471,26 +3471,27 @@ bool adjustDoubleRefOnDeleteTab(ScComplexRefData& rRef, SCTAB nDelPos, SCTAB nSh
ScAddress aEndPos = rRef2.toAbs(rOldPos); ScAddress aEndPos = rRef2.toAbs(rOldPos);
bool bMoreThanOneTab = aStartPos.Tab() != aEndPos.Tab(); bool bMoreThanOneTab = aStartPos.Tab() != aEndPos.Tab();
bool bModified = false; bool bModified = false;
if (bMoreThanOneTab && aStartPos.Tab() == nDelPos) if (bMoreThanOneTab && aStartPos.Tab() == nDelPos && nDelPos + nSheets <= aEndPos.Tab())
{ {
if (rRef1.IsTabRel()) if (rRef1.IsTabRel() && aStartPos.Tab() < rOldPos.Tab())
{ {
aStartPos.IncTab(nSheets); rRef1.IncTab(nSheets);
rRef1.SetAddress(aStartPos, rOldPos);
}
bModified = true; bModified = true;
} }
}
else else
{ {
bModified = adjustSingleRefOnDeletedTab(rRef1, nDelPos, nSheets, rOldPos, rNewPos); bModified = adjustSingleRefOnDeletedTab(rRef1, nDelPos, nSheets, rOldPos, rNewPos);
} }
if (bMoreThanOneTab && aEndPos.Tab() == nDelPos) if (bMoreThanOneTab && aEndPos.Tab() == nDelPos && aStartPos.Tab() <= nDelPos - nSheets)
{ {
aEndPos.IncTab(-nSheets); if (!rRef2.IsTabRel() || rOldPos.Tab() < aEndPos.Tab())
rRef2.SetAddress(aEndPos, rNewPos); {
rRef2.IncTab(-nSheets);
bModified = true; bModified = true;
} }
}
else else
{ {
bModified |= adjustSingleRefOnDeletedTab(rRef2, nDelPos, nSheets, rOldPos, rNewPos); bModified |= adjustSingleRefOnDeletedTab(rRef2, nDelPos, nSheets, rOldPos, rNewPos);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment