summaryrefslogtreecommitdiff
path: root/sc/inc/document.hxx
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-08-18 13:54:32 +0200
committerEike Rathke <erack@redhat.com>2015-08-18 14:01:10 +0200
commit1bea8310747b65516f40f6457ab1d174ef7ddce4 (patch)
treea9d20d33222ad140a82a04f224a5e21c3429d3af /sc/inc/document.hxx
parentba5fd0cc77d7d53004f46e4ca867a22d56c5baa7 (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.hxx15
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 );