From 62b3d1dedfd7dd85b18297890d35e2c9368f0fef Mon Sep 17 00:00:00 2001 From: Kohei Yoshida Date: Thu, 22 May 2014 20:56:04 -0400 Subject: fdo#78903: Don't broadcast prematurely during cell deletion. We need to wait until all the affected cells get marked dirty at the end of the deletion process. Change-Id: I49618fcc386ec2209f5f0267d50257ecb8dd21d1 (cherry picked from commit cb167ac784f9b16944da4494b65e56b2a5b66bb7) --- sc/source/core/data/column3.cxx | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 3d447d121289..2d54fd55b91d 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -169,11 +169,6 @@ public: maRows.push_back(i + nTopRow); } - void endFormulas() - { - mrDoc.EndListeningFormulaCells(maFormulaCells); - } - const std::vector& getNonEmptyRows() const { return maRows; @@ -266,12 +261,6 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize ) sc::AutoCalcSwitch aACSwitch(*pDocument, false); - // Parse all non-empty cells in the range to pick up their row positions, - // and end all formula cells. - DeleteRowsHandler aDeleteRowsFunc(*pDocument); - sc::ProcessFormula(itCell, maCells, nStartRow, nEndRow, aDeleteRowsFunc, aDeleteRowsFunc); - aDeleteRowsFunc.endFormulas(); - // Remove the cells. maCells.erase(nStartRow, nEndRow); maCells.resize(MAXROWCOUNT); @@ -285,22 +274,11 @@ void ScColumn::DeleteRow( SCROW nStartRow, SCSIZE nSize ) sc::SharedFormulaUtil::joinFormulaCellAbove(aPos); - // Single cell broadcasts on deleted cells. - BroadcastCells(aDeleteRowsFunc.getNonEmptyRows(), SC_HINT_DATACHANGED); - // Shift the text attribute array too (before the broadcast). maCellTextAttrs.erase(nStartRow, nEndRow); maCellTextAttrs.resize(MAXROWCOUNT); CellStorageModified(); - - if (!bShiftCells) - return; - - // Do area broadcast on the old non-empty cell ranges prior to the shift. - sc::SingleColumnSpanSet::SpansType aSpans; - aNonEmptySpans.getSpans(aSpans); - std::for_each(aSpans.begin(), aSpans.end(), RangeBroadcaster(*pDocument, nTab, nCol)); } sc::CellStoreType::iterator ScColumn::GetPositionToInsert( SCROW nRow ) -- cgit v1.2.3