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
diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx
index d846501..d10b9d4 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();