Kaydet (Commit) 5ca17330 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

correctly update absolute refs in range names if pointing to copied area

üst fffd541c
......@@ -109,7 +109,7 @@ public:
/**
* Make all absolute references pointing to the copied range if the range is copied too
*/
void AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos );
void AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos, bool bRangeName = false );
};
#endif // SC_TOKENARRAY_HXX
......
......@@ -183,6 +183,7 @@ void adjustRangeName(ScToken* pToken, ScDocument& rNewDoc, const ScDocument* pOl
if (rNewDoc.GetPool() != const_cast<ScDocument*>(pOldDoc)->GetPool())
{
pRangeNameToken->ReadjustAbsolute3DReferences(pOldDoc, &rNewDoc, pRangeData->GetPos(), true);
pRangeNameToken->AdjustAbsoluteRefs(pOldDoc, aOldPos, aNewPos, true);
}
bool bInserted;
......
......@@ -1944,7 +1944,7 @@ void ScTokenArray::ReadjustAbsolute3DReferences( const ScDocument* pOldDoc, cons
}
}
void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos)
void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddress& rOldPos, const ScAddress& rNewPos, bool bRangeName)
{
for ( sal_uInt16 j=0; j<nLen; ++j )
{
......@@ -1959,8 +1959,11 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
ScSingleRefData& rRef2 = rRef.Ref2;
ScSingleRefData& rRef1 = rRef.Ref1;
AdjustSingleRefData( rRef1, rOldPos, rNewPos );
AdjustSingleRefData( rRef2, rOldPos, rNewPos );
// for range names only adjust if all parts are absolute
if (!bRangeName || !(rRef1.IsColRel() || rRef1.IsRowRel() || rRef1.IsTabRel()))
AdjustSingleRefData( rRef1, rOldPos, rNewPos );
if (!bRangeName || !(rRef2.IsColRel() || rRef2.IsRowRel() || rRef2.IsTabRel()))
AdjustSingleRefData( rRef2, rOldPos, rNewPos );
}
break;
......@@ -1971,7 +1974,9 @@ void ScTokenArray::AdjustAbsoluteRefs( const ScDocument* pOldDoc, const ScAddres
ScSingleRefData& rRef = static_cast<ScToken*>(pCode[j])->GetSingleRef();
AdjustSingleRefData( rRef, rOldPos, rNewPos );
// for range names only adjust if all parts are absolute
if (!bRangeName || !(rRef.IsColRel() || rRef.IsRowRel() || rRef.IsTabRel()))
AdjustSingleRefData( rRef, 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