summaryrefslogtreecommitdiffstats
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-17 14:16:28 -0500
commit8efe63bf1c5f6f2a889b991fca4b3922a48f6e87 (patch)
treede529df296f7f4c2e50e9422a2ed307cd87eb882
parentRename methods whose name no longer represent what they do. (diff)
downloadcore-8efe63bf1c5f6f2a889b991fca4b3922a48f6e87.tar.gz
core-8efe63bf1c5f6f2a889b991fca4b3922a48f6e87.zip
Avoid unnecessary broadcasting when deleting cells prior to pasting.
Change-Id: Id224fd6fdb804350e7e00634db802e80090ae6d7
-rw-r--r--sc/inc/column.hxx4
-rw-r--r--sc/inc/document.hxx3
-rw-r--r--sc/inc/table.hxx3
-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
7 files changed, 17 insertions, 14 deletions
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 57ff8aa34a7a..86dbd39fd14f 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -247,7 +247,9 @@ public:
bool InitBlockPosition( sc::ColumnBlockPosition& rBlockPos );
bool InitBlockPosition( sc::ColumnBlockConstPosition& rBlockPos ) const;
- void DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol );
+ void DeleteBeforeCopyFromClip(
+ sc::CopyFromClipContext& rCxt, const ScColumn& rClipCol, sc::ColumnSpanSet& rBroadcastSpans );
+
void CopyOneCellFromClip( sc::CopyFromClipContext& rCxt, SCROW nRow1, SCROW nRow2, size_t nColOffset );
void CopyFromClip(
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index a09581b9f064..a3bfa0712bee 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1242,7 +1242,8 @@ public:
bool InitColumnBlockPosition( sc::ColumnBlockPosition& rBlokPos, SCTAB nTab, SCCOL nCol );
- void DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScMarkData& rMark );
+ void DeleteBeforeCopyFromClip(
+ sc::CopyFromClipContext& rCxt, const ScMarkData& rMark, sc::ColumnSpanSet& rBroadcastSpans );
bool CopyOneCellFromClip(
sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index daacd60dd96a..ea1e2a30ea26 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -426,7 +426,8 @@ public:
bool InitColumnBlockPosition( sc::ColumnBlockPosition& rBlockPos, SCCOL nCol );
- void DeleteBeforeCopyFromClip( sc::CopyFromClipContext& rCxt, const ScTable& rClipTab );
+ void DeleteBeforeCopyFromClip(
+ sc::CopyFromClipContext& rCxt, const ScTable& rClipTab, sc::ColumnSpanSet& rBroadcastSpans );
void CopyOneCellFromClip(
sc::CopyFromClipContext& rCxt, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 );
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 948782676c71..abfe1b0bbeba 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);
}
}