Author: damjan
Date: Wed Feb 17 00:03:50 2016
New Revision: 1730772
URL: http://svn.apache.org/viewvc?rev=1730772&view=rev
Log:
#i118023# Calc: Cut-and-paste between spreadsheets causes incorrect cell
reference changes
When pasting cut cells, Calc updates references to their old positions
to instead refer to their new positions. This is done using the tab index,
row and column, however the document is not taken into account. As a result,
when cutting and pasting between documents, cells in the target document
end up getting changed instead of in the source, potentially leading to
formula corruption, which is undoable but could easily go unnoticed,
causing data loss when the document is saved.
We don't really support inter-document reference updates anyway, so fix
this bug by restricting reference updates to the intra-document cut and
paste case only.
Patch by: me
Reviewed by: kschenk
Modified:
openoffice/trunk/main/sc/source/core/data/document.cxx
Modified: openoffice/trunk/main/sc/source/core/data/document.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/sc/source/core/data/document.cxx?rev=1730772&r1=1730771&r2=1730772&view=diff
==============================================================================
--- openoffice/trunk/main/sc/source/core/data/document.cxx (original)
+++ openoffice/trunk/main/sc/source/core/data/document.cxx Wed Feb 17 00:03:50
2016
@@ -1965,7 +1965,8 @@ void ScDocument::CopyBlockFromClip( SCCO
nClipTab = (nClipTab+1) % (MAXTAB+1);
}
}
- if ( pCBFCP->nInsFlag & IDF_CONTENTS )
+ if ( (pCBFCP->nInsFlag & IDF_CONTENTS) &&
+ (pCBFCP->pClipDoc->GetClipParam().getSourceDocID() ==
GetDocumentID()) ) // #118023# only update references for *intra-document* cut
and paste
{
nClipTab = 0;
for (SCTAB i = pCBFCP->nTabStart; i <= nTabEnd; i++)