diff options
author | Eike Rathke <erack@redhat.com> | 2015-08-18 13:54:32 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-08-18 14:01:10 +0200 |
commit | 1bea8310747b65516f40f6457ab1d174ef7ddce4 (patch) | |
tree | a9d20d33222ad140a82a04f224a5e21c3429d3af /sc/inc/document.hxx | |
parent | ba5fd0cc77d7d53004f46e4ca867a22d56c5baa7 (diff) |
introduce temporary hard-recalc state, tdf#92749 follow-up
This allows listeners to be setup and initial lookup caches to be kept,
which were thrown away after the initial calculation as an interim fix
for tdf#92749.
Change-Id: I34068b3f6b833a46f3c526579efbdc342a2e71df
Diffstat (limited to 'sc/inc/document.hxx')
-rw-r--r-- | sc/inc/document.hxx | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index aa1664a2c0b3..a2b78006d142 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -275,6 +275,15 @@ friend class sc::EditTextIterator; friend class sc::FormulaGroupAreaListener; typedef ::std::vector<ScTable*> TableContainer; + +public: + enum HardRecalcState + { + HARDRECALCSTATE_OFF = 0, /// normal calculation of dependencies + HARDRECALCSTATE_TEMPORARY, /// CalcAll() without broadcast/notify but setting up new listeners + HARDRECALCSTATE_ETERNAL /// no new listeners are setup, no broadcast/notify + }; + private: rtl::Reference<ScPoolHelper> xPoolHelper; @@ -391,7 +400,7 @@ private: sal_uInt16 nSrcVer; // file version (load/save) SCROW nSrcMaxRow; // number of lines to load/save sal_uInt16 nFormulaTrackCount; - bool bHardRecalcState; // false: soft, true: hard + HardRecalcState eHardRecalcState; // off, temporary, eternal SCTAB nVisibleTab; // for OLE etc., don't use inside ScDocument ScLkUpdMode eLinkMode; @@ -1949,8 +1958,8 @@ public: void TrackFormulas( sal_uLong nHintId = SC_HINT_DATACHANGED ); bool IsInFormulaTree( ScFormulaCell* pCell ) const; bool IsInFormulaTrack( ScFormulaCell* pCell ) const; - bool GetHardRecalcState() { return bHardRecalcState; } - void SetHardRecalcState( bool bVal ) { bHardRecalcState = bVal; } + HardRecalcState GetHardRecalcState() { return eHardRecalcState; } + void SetHardRecalcState( HardRecalcState eVal ) { eHardRecalcState = eVal; } void StartAllListeners(); void StartNeededListeners(); void StartAllListeners( const ScRange& rRange ); |