diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-11-17 14:16:28 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-11-18 08:31:57 -0500 |
commit | 627bfb4e664a3fde23c06aa4dd0809de84ec97c5 (patch) | |
tree | cfca492718c296485329bcfd4d9868863366e03b /sc/source/core/data | |
parent | de0b80aaaf1a01ee6106e7e63ef3d8e32a164f24 (diff) |
Avoid unnecessary broadcasting when deleting cells prior to pasting.
Change-Id: Id224fd6fdb804350e7e00634db802e80090ae6d7
Diffstat (limited to 'sc/source/core/data')
-rw-r--r-- | sc/source/core/data/column4.cxx | 7 | ||||
-rw-r--r-- | sc/source/core/data/document.cxx | 2 | ||||
-rw-r--r-- | sc/source/core/data/document10.cxx | 5 | ||||
-rw-r--r-- | sc/source/core/data/table7.cxx | 7 |
4 files changed, 10 insertions, 11 deletions
diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index 2d6609db9649..f0d28eb82dd5 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -41,7 +41,8 @@ bool ScColumn::IsMerged( SCROW nRow ) const return pAttrArray->IsMerged(nRow); } -void ScColumn::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol ) +void ScColumn::DeleteBeforeCopyFromClip( + sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans ) { sc::CopyFromClipContext::Range aRange = rCxt.getDestRange(); if (!ValidRow(aRange.mnRow1) || !ValidRow(aRange.mnRow2)) @@ -107,7 +108,7 @@ void ScColumn::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const Sc SCROW nRow2 = it->mnRow2; if (nDelFlag & IDF_CONTENTS) - DeleteCells(aBlockPos, nRow1, nRow2, nDelFlag, aDeletedRows); + DeleteCells(aBlockPos, nRow1, nRow2, nDelFlag, aDeletedRows, &rBroadcastSpans); if (nDelFlag & IDF_NOTE) DeleteCellNotes(aBlockPos, nRow1, nRow2); @@ -134,8 +135,6 @@ void ScColumn::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const Sc else if ((nDelFlag & IDF_HARDATTR) == IDF_HARDATTR) pAttrArray->DeleteHardAttr(nRow1, nRow2); } - - BroadcastCells(aDeletedRows, SC_HINT_DATACHANGED); } void ScColumn::CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset ) diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index bca55c0590f7..8440e2b303ae 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2712,7 +2712,7 @@ void ScDocument::CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMar { // Delete cells in the destination only if their corresponding clip cells are not empty. aCxt.setDestRange(nCol1, nRow1, nCol2, nRow2); - DeleteBeforeCopyFromClip(aCxt, rMark); + DeleteBeforeCopyFromClip(aCxt, rMark, aBroadcastSpans); } else DeleteArea(nCol1, nRow1, nCol2, nRow2, rMark, nDelFlag, false, &aBroadcastSpans); diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index 49c0a9f77436..1f14d5dd16cd 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -37,7 +37,8 @@ bool ScDocument::IsMerged( const ScAddress& rPos ) const return pTab->IsMerged(rPos.Col(), rPos.Row()); } -void ScDocument::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScMarkData& rMark ) +void ScDocument::DeleteBeforeCopyFromClip( + sc::CopyFromClipContext& rCxt, const ScMarkData& rMark, sc::ColumnSpanSet& rBroadcastSpans ) { SCTAB nClipTab = 0; const TableContainer& rClipTabs = rCxt.getClipDoc()->maTabs; @@ -55,7 +56,7 @@ void ScDocument::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const while (!rClipTabs[nClipTab]) nClipTab = (nClipTab+1) % nClipTabCount; - pTab->DeleteBeforeCopyFromClip(rCxt, *rClipTabs[nClipTab]); + pTab->DeleteBeforeCopyFromClip(rCxt, *rClipTabs[nClipTab], rBroadcastSpans); nClipTab = (nClipTab+1) % nClipTabCount; } diff --git a/sc/source/core/data/table7.cxx b/sc/source/core/data/table7.cxx index 568692179170..79a645cbbf5e 100644 --- a/sc/source/core/data/table7.cxx +++ b/sc/source/core/data/table7.cxx @@ -24,7 +24,8 @@ bool ScTable::IsMerged( SCCOL nCol, SCROW nRow ) const return aCol[nCol].IsMerged(nRow); } -void ScTable::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScTable& rClipTab ) +void ScTable::DeleteBeforeCopyFromClip( + sc::CopyFromClipContext& rCxt, const ScTable& rClipTab, sc::ColumnSpanSet& rBroadcastSpans ) { sc::CopyFromClipContext::Range aRange = rCxt.getDestRange(); if (!ValidCol(aRange.mnCol1) || !ValidCol(aRange.mnCol2)) @@ -37,15 +38,13 @@ void ScTable::DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScT ScRange aClipRange = rCxt.getClipDoc()->GetClipParam().getWholeRange(); SCCOL nClipCol = aClipRange.aStart.Col(); { - ScBulkBroadcast aBulkBroadcast(pDocument->GetBASM()); - for (SCCOL nCol = aRange.mnCol1; nCol <= aRange.mnCol2; ++nCol, ++nClipCol) { if (nClipCol > aClipRange.aEnd.Col()) nClipCol = aClipRange.aStart.Col(); // loop through columns. const ScColumn& rClipCol = rClipTab.aCol[nClipCol]; - aCol[nCol].DeleteBeforeCopyFromClip(rCxt, rClipCol); + aCol[nCol].DeleteBeforeCopyFromClip(rCxt, rClipCol, rBroadcastSpans); } } |