[Libreoffice-commits] core.git: Branch 'aoo/trunk' - sc/source
Damjan Jovanovic
damjan at apache.org
Wed Feb 17 02:07:59 UTC 2016
sc/source/core/data/document.cxx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
New commits:
commit 71de3699a30267d989ef78096477d9ecca329974
Author: Damjan Jovanovic <damjan at apache.org>
Date: Wed Feb 17 00:03:50 2016 +0000
#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
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 2aefa7a..0ccf481 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -1965,7 +1965,8 @@ void ScDocument::CopyBlockFromClip( SCCOL nCol1, SCROW nRow1,
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++)
More information about the Libreoffice-commits
mailing list