diff options
author | Eike Rathke <erack@redhat.com> | 2016-09-21 12:39:41 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2016-09-22 10:04:55 +0200 |
commit | 5306fabfea74c01b49f96920564c7eefa91e87aa (patch) | |
tree | d2e8b5bb802feda65f6dffea2d5ad17da02b1b89 /sc | |
parent | 14863b9a065ddc3332dd1da14c28708919b0101d (diff) |
tdf#87101 Revert "fdo#83067 also volatile cells need to listen to all refe"...
This reverts commit 0792aef9010007d5738723d8930990028bef2f9e.
It created a bottleneck with massive use of OFFSET() functions mixed
with other references, see tdf#87101 bugdoc. Will have to come up with a
different approach to solve the "broadcast cell move" problem.
Additionally, the unit test for tdf#83067 and the original problem still
work with the reverted change, so we seem to generally have fixed
something else in the meantime..
Conflicts:
sc/source/core/data/formulacell.cxx
Change-Id: Ida2e26398f99ff5878d43ffb46035bc4441dfff6
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/data/formulacell.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index b32d4ed45e36..5968110c5f2b 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -2144,7 +2144,7 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam ) if (pCode->IsRecalcModeAlways()) { // The formula was previously volatile, but no more. - pDocument->EndListeningArea(BCA_LISTEN_ALWAYS, false, this); + EndListeningTo(pDocument); pCode->SetExclusiveRecalcModeNormal(); } else @@ -4280,6 +4280,8 @@ void ScFormulaCell::StartListeningTo( ScDocument* pDoc ) if( pArr->IsRecalcModeAlways() ) { pDoc->StartListeningArea(BCA_LISTEN_ALWAYS, false, this); + SetNeedsListening( false); + return; } pArr->Reset(); @@ -4321,6 +4323,8 @@ void ScFormulaCell::StartListeningTo( sc::StartListeningContext& rCxt ) if( pArr->IsRecalcModeAlways() ) { rDoc.StartListeningArea(BCA_LISTEN_ALWAYS, false, this); + SetNeedsListening( false); + return; } pArr->Reset(); @@ -4392,6 +4396,7 @@ void ScFormulaCell::EndListeningTo( ScDocument* pDoc, ScTokenArray* pArr, if ( GetCode()->IsRecalcModeAlways() ) { pDoc->EndListeningArea(BCA_LISTEN_ALWAYS, false, this); + return; } if (!pArr) @@ -4443,6 +4448,7 @@ void ScFormulaCell::EndListeningTo( sc::EndListeningContext& rCxt ) if (pArr->IsRecalcModeAlways()) { rDoc.EndListeningArea(BCA_LISTEN_ALWAYS, false, this); + return; } pArr->Reset(); |