diff options
author | Eike Rathke <erack@redhat.com> | 2016-05-30 18:30:48 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2016-05-30 18:34:06 +0200 |
commit | dc9eac5a5f4f247ba5efb67931ffde61f2c8d5b6 (patch) | |
tree | 74aa04cc1fe76c9cffc0caa9bc82971962c0990c /sc/source | |
parent | 00a45faf5ef929572c6f0df686716aec991503be (diff) |
Resolves: tdf#97158 CopyOneCellFromClip() does not handle multiple sheets
... so check that and bail out to let the remainder of CopyFromClip()
handle it.
Change-Id: I9d139de905fd108ae41fed79a38860058525272c
Diffstat (limited to 'sc/source')
-rw-r--r-- | sc/source/core/data/document.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/document10.cxx | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 68b1f8f52a7d..af943d4a92d5 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2806,7 +2806,7 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar else DeleteArea(nCol1, nRow1, nCol2, nRow2, rMark, nDelFlag, false, &aBroadcastSpans); - if (CopyOneCellFromClip(aCxt, nCol1, nRow1, nCol2, nRow2)) + if (CopyOneCellFromClip(aCxt, rMark, nCol1, nRow1, nCol2, nRow2)) continue; SCCOL nC1 = nCol1; diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index 59aff1326336..e99d0b4c39b0 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -65,7 +65,7 @@ void ScDocument::DeleteBeforeCopyFromClip( } bool ScDocument::CopyOneCellFromClip( - sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ) + sc::CopyFromClipContext& rCxt, const ScMarkData& rMark, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ) { ScDocument* pClipDoc = rCxt.getClipDoc(); if (pClipDoc->GetClipParam().mbCutMode) @@ -82,6 +82,11 @@ bool ScDocument::CopyOneCellFromClip( if (nDestColSize < nSrcColSize) return false; + if (rCxt.getClipDoc()->maTabs.size() > 1 || rMark.GetSelectCount() > 1) + // Copying from multiple source sheets or to multiple destination + // sheets is not handled here. + return false; + ScAddress aSrcPos = aClipRange.aStart; for (SCCOL nCol = aClipRange.aStart.Col(); nCol <= aClipRange.aEnd.Col(); ++nCol) |