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++)


Reply via email to