summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/inc/column.hxx2
-rw-r--r--sc/inc/mtvelements.hxx3
-rw-r--r--sc/source/core/data/column.cxx3
-rw-r--r--sc/source/core/data/column3.cxx2
-rw-r--r--sc/source/core/data/mtvelements.cxx5
5 files changed, 11 insertions, 4 deletions
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 6300fe70bca1..4c08e7b41479 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -123,8 +123,6 @@ class ScColumn
// Broadcasters for formula cells.
sc::BroadcasterStoreType maBroadcasters;
- sc::CellStoreEvent maCellsEvent;
-
// Cell values.
sc::CellStoreType maCells;
diff --git a/sc/inc/mtvelements.hxx b/sc/inc/mtvelements.hxx
index 636706e0c234..05a0970bd64d 100644
--- a/sc/inc/mtvelements.hxx
+++ b/sc/inc/mtvelements.hxx
@@ -95,6 +95,9 @@ public:
void element_block_acquired(const mdds::mtv::base_element_block* block);
void element_block_released(const mdds::mtv::base_element_block* block);
+
+ /** Stop processing events. */
+ void stop();
};
struct CellStoreTrait
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index 4bd91f60f3a0..3b148dda6b88 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -82,8 +82,7 @@ ScColumn::ScColumn(ScSheetLimits const & rSheetLimits) :
maCellTextAttrs(rSheetLimits.GetMaxRowCount()),
maCellNotes(rSheetLimits.GetMaxRowCount()),
maBroadcasters(rSheetLimits.GetMaxRowCount()),
- maCellsEvent(this),
- maCells(maCellsEvent),
+ maCells(sc::CellStoreEvent(this)),
mnBlkCountFormula(0),
nCol( 0 ),
nTab( 0 ),
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 9bbd9c1bca77..4a062a476a32 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -156,6 +156,8 @@ void ScColumn::Delete( SCROW nRow )
void ScColumn::FreeAll()
{
+ maCells.event_handler().stop();
+
auto maxRowCount = GetDoc().GetSheetLimits().GetMaxRowCount();
// Keep a logical empty range of 0-rDoc.MaxRow() at all times.
maCells.clear();
diff --git a/sc/source/core/data/mtvelements.cxx b/sc/source/core/data/mtvelements.cxx
index c7d7e52bfccf..ee6c9cf1499c 100644
--- a/sc/source/core/data/mtvelements.cxx
+++ b/sc/source/core/data/mtvelements.cxx
@@ -51,6 +51,11 @@ void CellStoreEvent::element_block_released(const mdds::mtv::base_element_block*
}
}
+void CellStoreEvent::stop()
+{
+ mpCol = nullptr;
+}
+
ColumnBlockPositionSet::ColumnBlockPositionSet(ScDocument& rDoc) : mrDoc(rDoc) {}
ColumnBlockPosition* ColumnBlockPositionSet::getBlockPosition(SCTAB nTab, SCCOL nCol)