diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-01-29 14:00:47 -0500 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-01-30 23:40:11 +0000 |
commit | 92346fb7714ca7c6a467771d8a8b01305c1b17d1 (patch) | |
tree | 8eafb751f8ab5095bb79a168c36859052eec0498 /sc/source/core | |
parent | 383e5543593848cbd1458d5c5dad5e7b7b17ee09 (diff) |
fdo#74014: Broadcast changes during undo and redo after paste.
Change-Id: I271bbba5e5eb70e48274a4a062d125456af8ff6c
(cherry picked from commit f5d8029a456c2c708cbc2b67f2d7875540dff1ab)
Reviewed-on: https://gerrit.libreoffice.org/7728
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'sc/source/core')
-rw-r--r-- | sc/source/core/data/column.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/data/column3.cxx | 12 | ||||
-rw-r--r-- | sc/source/core/data/document.cxx | 9 | ||||
-rw-r--r-- | sc/source/core/data/table2.cxx | 4 |
4 files changed, 17 insertions, 12 deletions
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 8c6102f9c79f..7771f0e065f8 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -484,7 +484,7 @@ void ScColumn::ClearSelectionItems( const sal_uInt16* pWhich,const ScMarkData& r } -void ScColumn::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark ) +void ScColumn::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark, bool bBroadcast ) { SCROW nTop; SCROW nBottom; @@ -493,7 +493,7 @@ void ScColumn::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark ) { ScMarkArrayIter aMarkIter( rMark.GetArray() + nCol ); while (aMarkIter.Next( nTop, nBottom )) - DeleteArea(nTop, nBottom, nDelFlag); + DeleteArea(nTop, nBottom, nDelFlag, bBroadcast); } } diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 798d5444a570..54b53f23cf69 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -574,7 +574,8 @@ public: } -void ScColumn::DeleteArea(SCROW nStartRow, SCROW nEndRow, sal_uInt16 nDelFlag) +void ScColumn::DeleteArea( + SCROW nStartRow, SCROW nEndRow, sal_uInt16 nDelFlag, bool bBroadcast ) { sal_uInt16 nContMask = IDF_CONTENTS; // IDF_NOCAPTIONS needs to be passed too, if IDF_NOTE is set @@ -626,9 +627,12 @@ void ScColumn::DeleteArea(SCROW nStartRow, SCROW nEndRow, sal_uInt16 nDelFlag) else if ((nDelFlag & IDF_HARDATTR) == IDF_HARDATTR) pAttrArray->DeleteHardAttr( nStartRow, nEndRow ); - // Broadcast on only cells that were deleted; no point broadcasting on - // cells that were already empty before the deletion. - BroadcastCells(aDeletedRows, SC_HINT_DATACHANGED); + if (bBroadcast) + { + // Broadcast on only cells that were deleted; no point broadcasting on + // cells that were already empty before the deletion. + BroadcastCells(aDeletedRows, SC_HINT_DATACHANGED); + } } bool ScColumn::InitBlockPosition( sc::ColumnBlockPosition& rBlockPos ) diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index c9f14cf44eab..11b6507a381b 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -5575,20 +5575,21 @@ void ScDocument::ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData } -void ScDocument::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark ) +void ScDocument::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark, bool bBroadcast ) { SCTAB nMax = static_cast<SCTAB>(maTabs.size()); ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end(); for (; itr != itrEnd && *itr < nMax; ++itr) if (maTabs[*itr]) - maTabs[*itr]->DeleteSelection( nDelFlag, rMark ); + maTabs[*itr]->DeleteSelection(nDelFlag, rMark, bBroadcast); } -void ScDocument::DeleteSelectionTab( SCTAB nTab, sal_uInt16 nDelFlag, const ScMarkData& rMark ) +void ScDocument::DeleteSelectionTab( + SCTAB nTab, sal_uInt16 nDelFlag, const ScMarkData& rMark, bool bBroadcast ) { if (ValidTab(nTab) && nTab < static_cast<SCTAB>(maTabs.size()) && maTabs[nTab]) - maTabs[nTab]->DeleteSelection( nDelFlag, rMark ); + maTabs[nTab]->DeleteSelection(nDelFlag, rMark, bBroadcast); else { OSL_FAIL("wrong table"); diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index f96d913b2cc5..ce4871afafe3 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -453,12 +453,12 @@ void ScTable::DeleteArea(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, sal } -void ScTable::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark ) +void ScTable::DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark, bool bBroadcast ) { { // scope for bulk broadcast ScBulkBroadcast aBulkBroadcast( pDocument->GetBASM()); for (SCCOL i=0; i<=MAXCOL; i++) - aCol[i].DeleteSelection( nDelFlag, rMark ); + aCol[i].DeleteSelection(nDelFlag, rMark, bBroadcast); } ScRangeList aRangeList; |