summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2014-08-25 21:54:42 +0200
committerEike Rathke <erack@redhat.com>2014-08-25 22:00:24 +0200
commit0792aef9010007d5738723d8930990028bef2f9e (patch)
tree9f0e23256c12d3c21dd487cb46bda49558386de4
parentbc16ad7c8d08d3c97c19c80b2de39adf932bdfc1 (diff)
fdo#83067 also volatile cells need to listen to all references
As we now broadcast also cell moves it is not sufficient anymore to add volatile cells only to the BCA_LISTEN_ALWAYS broadcaster, add them as listener to all referenced cells and ranges as usual. Change-Id: I7901b73db7e0c82c4bac302ae746810cbc16ea44
-rw-r--r--sc/source/core/data/formulacell.cxx8
1 files changed, 1 insertions, 7 deletions
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index d8465010b003..d10b9d4ff763 100644
--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1854,7 +1854,7 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam )
if (pCode->IsRecalcModeAlways())
{
// The formula was previously volatile, but no more.
- EndListeningTo(pDocument);
+ pDocument->EndListeningArea(BCA_LISTEN_ALWAYS, this);
pCode->SetExclusiveRecalcModeNormal();
}
else
@@ -3786,8 +3786,6 @@ void ScFormulaCell::StartListeningTo( ScDocument* pDoc )
if( pArr->IsRecalcModeAlways() )
{
pDoc->StartListeningArea(BCA_LISTEN_ALWAYS, this);
- SetNeedsListening( false);
- return;
}
pArr->Reset();
@@ -3826,8 +3824,6 @@ void ScFormulaCell::StartListeningTo( sc::StartListeningContext& rCxt )
if( pArr->IsRecalcModeAlways() )
{
rDoc.StartListeningArea(BCA_LISTEN_ALWAYS, this);
- SetNeedsListening( false);
- return;
}
pArr->Reset();
@@ -3893,7 +3889,6 @@ void ScFormulaCell::EndListeningTo( ScDocument* pDoc, ScTokenArray* pArr,
if ( GetCode()->IsRecalcModeAlways() )
{
pDoc->EndListeningArea( BCA_LISTEN_ALWAYS, this );
- return;
}
if (!pArr)
@@ -3939,7 +3934,6 @@ void ScFormulaCell::EndListeningTo( sc::EndListeningContext& rCxt )
if (pArr->IsRecalcModeAlways())
{
rDoc.EndListeningArea(BCA_LISTEN_ALWAYS, this);
- return;
}
pArr->Reset();