summaryrefslogtreecommitdiff
path: root/sc/source/core/data
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-11-17 14:16:28 -0500
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-11-18 08:31:57 -0500
commit627bfb4e664a3fde23c06aa4dd0809de84ec97c5 (patch)
treecfca492718c296485329bcfd4d9868863366e03b /sc/source/core/data
parentde0b80aaaf1a01ee6106e7e63ef3d8e32a164f24 (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.cxx7
-rw-r--r--sc/source/core/data/document.cxx2
-rw-r--r--sc/source/core/data/document10.cxx5
-rw-r--r--sc/source/core/data/table7.cxx7
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);
}
}