sc/inc/column.hxx | 6 ++-- sc/inc/document.hxx | 8 +---- sc/inc/formulacell.hxx | 1 sc/inc/table.hxx | 6 ++-- sc/source/core/data/column2.cxx | 22 --------------- sc/source/core/data/column4.cxx | 43 +++++++++++++++++++++--------- sc/source/core/data/documen4.cxx | 11 ------- sc/source/core/data/document10.cxx | 17 ++++++++++-- sc/source/core/data/formulacell.cxx | 51 ------------------------------------ sc/source/core/data/table4.cxx | 6 ---- sc/source/core/data/table7.cxx | 11 ++++++- sc/source/ui/docshell/dbdocfun.cxx | 12 ++++---- sc/source/ui/docshell/docfunc.cxx | 4 +- sc/source/ui/docshell/docsh5.cxx | 4 +- sc/source/ui/undo/undocell.cxx | 2 - sc/source/ui/undo/undodat.cxx | 8 ++--- sc/source/ui/undo/undorangename.cxx | 2 - sc/source/ui/unoobj/nameuno.cxx | 2 - sc/source/ui/view/dbfunc.cxx | 4 +- sc/source/ui/view/viewfunc.cxx | 2 - 20 files changed, 84 insertions(+), 138 deletions(-)
New commits: commit 217d0ed1cdb492def7220859ecb4931d90d8022c Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Mon Jul 28 21:34:40 2014 -0400 fdo#79578: Properly update formulas upon change in db collection. Update it to handle formula groups correctly. (cherry picked from commit 300845922eec7a28bc1da337acd21f138685d759) Conflicts: sc/source/ui/docshell/dbdocfun.cxx sc/source/ui/docshell/docfunc.cxx sc/source/ui/undo/undocell.cxx sc/source/ui/undo/undodat.cxx sc/source/ui/unoobj/nameuno.cxx sc/source/ui/view/viewfunc.cxx Change-Id: I009a7fcf3d3fb17ef6951c50534ca6bc1fffc259 Reviewed-on: https://gerrit.libreoffice.org/10604 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Eike Rathke <er...@redhat.com> diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx index 9bb6bd6..09b1588 100644 --- a/sc/inc/column.hxx +++ b/sc/inc/column.hxx @@ -381,9 +381,12 @@ public: void PreprocessRangeNameUpdate( sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ); - void PostprocessRangeNameUpdate( + void CompileHybridFormula( sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ); + void PreprocessDBDataUpdate( + sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ); + const SfxPoolItem* GetAttr( SCROW nRow, sal_uInt16 nWhich ) const; const ScPatternAttr* GetPattern( SCROW nRow ) const; const ScPatternAttr* GetMostUsedPattern( SCROW nStartRow, SCROW nEndRow ) const; @@ -486,7 +489,6 @@ public: void CollectListeners( std::vector<SvtListener*>& rListeners, SCROW nRow1, SCROW nRow2 ); void CompileDBFormula( sc::CompileFormulaContext& rCxt ); - void CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ); void CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ); sal_Int32 GetMaxStringLen( SCROW nRowStart, SCROW nRowEnd, rtl_TextEncoding eCharSet ) const; diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index bfeefc3..c8ca888 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -521,11 +521,8 @@ public: * Call this immediately before updating all named ranges. */ SC_DLLPUBLIC void PreprocessRangeNameUpdate(); - - /** - * Call this immediately after all named ranges have been updated. - */ - SC_DLLPUBLIC void PostprocessRangeNameUpdate(); + SC_DLLPUBLIC void PreprocessDBDataUpdate(); + SC_DLLPUBLIC void CompileHybridFormula(); /** * Insert a new named expression to the global scope. @@ -1981,7 +1978,6 @@ public: void StartTrackTimer(); void CompileDBFormula(); - void CompileDBFormula( bool bCreateFormulaString ); void CompileColRowNameFormula(); /** Maximum string length of a column, e.g. for dBase export. diff --git a/sc/inc/formulacell.hxx b/sc/inc/formulacell.hxx index 959779a..70072e5 100644 --- a/sc/inc/formulacell.hxx +++ b/sc/inc/formulacell.hxx @@ -309,7 +309,6 @@ public: bool IsRunning() const; void SetRunning( bool bVal ); void CompileDBFormula( sc::CompileFormulaContext& rCxt ); - void CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ); void CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ); ScFormulaCell* GetPrevious() const; ScFormulaCell* GetNext() const; diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index c5b58b5..e6289ec 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -860,9 +860,12 @@ public: void PreprocessRangeNameUpdate( sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ); - void PostprocessRangeNameUpdate( + void CompileHybridFormula( sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ); + void PreprocessDBDataUpdate( + sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ); + ScConditionalFormatList* GetCondFormList(); const ScConditionalFormatList* GetCondFormList() const; void SetCondFormList( ScConditionalFormatList* pList ); @@ -1045,7 +1048,6 @@ private: bool GetNextMarkedCell( SCCOL& rCol, SCROW& rRow, const ScMarkData& rMark ) const; bool TestTabRefAbs(SCTAB nTable) const; void CompileDBFormula( sc::CompileFormulaContext& rCxt ); - void CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ); void CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ); void StartListening( const ScAddress& rAddress, SvtListener* pListener ); diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx index f72c99e..c19be82 100644 --- a/sc/source/core/data/column2.cxx +++ b/sc/source/core/data/column2.cxx @@ -2938,21 +2938,6 @@ public: } }; -class CompileDBFormula2Handler -{ - sc::CompileFormulaContext& mrCxt; - bool mbCreateFormulaString; - -public: - CompileDBFormula2Handler( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ) : - mrCxt(rCxt), mbCreateFormulaString(bCreateFormulaString) {} - - void operator() (size_t, ScFormulaCell* p) - { - p->CompileDBFormula(mrCxt, mbCreateFormulaString); - } -}; - struct CompileColRowNameFormulaHandler { sc::CompileFormulaContext& mrCxt; @@ -2974,13 +2959,6 @@ void ScColumn::CompileDBFormula( sc::CompileFormulaContext& rCxt ) RegroupFormulaCells(); } -void ScColumn::CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ) -{ - CompileDBFormula2Handler aFunc(rCxt, bCreateFormulaString); - sc::ProcessFormula(maCells, aFunc); - RegroupFormulaCells(); -} - void ScColumn::CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ) { CompileColRowNameFormulaHandler aFunc(rCxt); diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx index a883891..131f8cc 100644 --- a/sc/source/core/data/column4.cxx +++ b/sc/source/core/data/column4.cxx @@ -552,15 +552,19 @@ void ScColumn::GetNotesInRange(SCROW nStartRow, SCROW nEndRow, namespace { -class PreRangeNameUpdateHandler +class RecompileByOpcodeHandler { ScDocument* mpDoc; + const boost::unordered_set<OpCode>& mrOps; sc::EndListeningContext& mrEndListenCxt; sc::CompileFormulaContext& mrCompileFormulaCxt; public: - PreRangeNameUpdateHandler( ScDocument* pDoc, sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ) : + RecompileByOpcodeHandler( + ScDocument* pDoc, const boost::unordered_set<OpCode>& rOps, + sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ) : mpDoc(pDoc), + mrOps(rOps), mrEndListenCxt(rEndListenCxt), mrCompileFormulaCxt(rCompileCxt) {} @@ -580,12 +584,7 @@ public: pTop = rEntry.mpCell; ScTokenArray* pCode = pTop->GetCode(); - - boost::unordered_set<OpCode> aOps; - aOps.insert(ocBad); - aOps.insert(ocColRowName); - aOps.insert(ocName); - bool bRecompile = pCode->HasOpCodes(aOps); + bool bRecompile = pCode->HasOpCodes(mrOps); if (bRecompile) { @@ -621,14 +620,14 @@ public: } }; -class PostRangeNameUpdateHandler +class CompileHybridFormulaHandler { ScDocument* mpDoc; sc::StartListeningContext& mrStartListenCxt; sc::CompileFormulaContext& mrCompileFormulaCxt; public: - PostRangeNameUpdateHandler( ScDocument* pDoc, sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) : + CompileHybridFormulaHandler( ScDocument* pDoc, sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) : mpDoc(pDoc), mrStartListenCxt(rStartListenCxt), mrCompileFormulaCxt(rCompileCxt) {} @@ -694,17 +693,35 @@ void ScColumn::PreprocessRangeNameUpdate( // Collect all formula groups. std::vector<sc::FormulaGroupEntry> aGroups = GetFormulaGroupEntries(); - PreRangeNameUpdateHandler aFunc(pDocument, rEndListenCxt, rCompileCxt); + boost::unordered_set<OpCode> aOps; + aOps.insert(ocBad); + aOps.insert(ocColRowName); + aOps.insert(ocName); + RecompileByOpcodeHandler aFunc(pDocument, aOps, rEndListenCxt, rCompileCxt); + std::for_each(aGroups.begin(), aGroups.end(), aFunc); +} + +void ScColumn::PreprocessDBDataUpdate( + sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ) +{ + // Collect all formula groups. + std::vector<sc::FormulaGroupEntry> aGroups = GetFormulaGroupEntries(); + + boost::unordered_set<OpCode> aOps; + aOps.insert(ocBad); + aOps.insert(ocColRowName); + aOps.insert(ocDBArea); + RecompileByOpcodeHandler aFunc(pDocument, aOps, rEndListenCxt, rCompileCxt); std::for_each(aGroups.begin(), aGroups.end(), aFunc); } -void ScColumn::PostprocessRangeNameUpdate( +void ScColumn::CompileHybridFormula( sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) { // Collect all formula groups. std::vector<sc::FormulaGroupEntry> aGroups = GetFormulaGroupEntries(); - PostRangeNameUpdateHandler aFunc(pDocument, rStartListenCxt, rCompileCxt); + CompileHybridFormulaHandler aFunc(pDocument, rStartListenCxt, rCompileCxt); std::for_each(aGroups.begin(), aGroups.end(), aFunc); } diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx index a156c3b..b8e5958 100644 --- a/sc/source/core/data/documen4.cxx +++ b/sc/source/core/data/documen4.cxx @@ -549,17 +549,6 @@ void ScDocument::CompileDBFormula() } } -void ScDocument::CompileDBFormula( bool bCreateFormulaString ) -{ - sc::CompileFormulaContext aCxt(this); - TableContainer::iterator it = maTabs.begin(); - for (;it != maTabs.end(); ++it) - { - if (*it) - (*it)->CompileDBFormula(aCxt, bCreateFormulaString); - } -} - void ScDocument::CompileColRowNameFormula() { sc::CompileFormulaContext aCxt(this); diff --git a/sc/source/core/data/document10.cxx b/sc/source/core/data/document10.cxx index f633a47..3629d4d 100644 --- a/sc/source/core/data/document10.cxx +++ b/sc/source/core/data/document10.cxx @@ -257,7 +257,20 @@ void ScDocument::PreprocessRangeNameUpdate() } } -void ScDocument::PostprocessRangeNameUpdate() +void ScDocument::PreprocessDBDataUpdate() +{ + sc::EndListeningContext aEndListenCxt(*this); + sc::CompileFormulaContext aCompileCxt(this); + + TableContainer::iterator it = maTabs.begin(), itEnd = maTabs.end(); + for (; it != itEnd; ++it) + { + ScTable* p = *it; + p->PreprocessDBDataUpdate(aEndListenCxt, aCompileCxt); + } +} + +void ScDocument::CompileHybridFormula() { sc::StartListeningContext aStartListenCxt(*this); sc::CompileFormulaContext aCompileCxt(this); @@ -265,7 +278,7 @@ void ScDocument::PostprocessRangeNameUpdate() for (; it != itEnd; ++it) { ScTable* p = *it; - p->PostprocessRangeNameUpdate(aStartListenCxt, aCompileCxt); + p->CompileHybridFormula(aStartListenCxt, aCompileCxt); } } diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 1d844b1..a6f3583 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -3442,57 +3442,6 @@ void ScFormulaCell::CompileDBFormula( sc::CompileFormulaContext& rCxt ) } } -void ScFormulaCell::CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ) -{ - // Two phases must be called after each other - // 1. Formula String with old generated names - // 2. Formula String with new generated names - if ( bCreateFormulaString ) - { - bool bRecompile = false; - pCode->Reset(); - for ( FormulaToken* p = pCode->First(); p && !bRecompile; p = pCode->Next() ) - { - switch ( p->GetOpCode() ) - { - case ocBad: // DB Area eventually goes bad - case ocColRowName: // in case of the same names - case ocDBArea: // DB Area - bRecompile = true; - break; - case ocName: - if ( p->GetIndex() >= SC_START_INDEX_DB_COLL ) - bRecompile = true; // DB Area - break; - default: - ; // nothing - } - } - if ( bRecompile ) - { - OUString aFormula = GetFormula(rCxt); - if ( GetMatrixFlag() != MM_NONE && !aFormula.isEmpty() ) - { - if ( aFormula[ aFormula.getLength()-1 ] == '}' ) - aFormula = aFormula.copy( 0, aFormula.getLength()-1 ); - if ( aFormula[0] == '{' ) - aFormula = aFormula.copy( 1 ); - } - EndListeningTo( pDocument ); - pDocument->RemoveFromFormulaTree( this ); - pCode->Clear(); - SetHybridFormula(aFormula, rCxt.getGrammar()); - } - } - else if ( !pCode->GetLen() && !aResult.GetHybridFormula().isEmpty() ) - { - rCxt.setGrammar(eTempGrammar); - Compile(rCxt, aResult.GetHybridFormula(), false); - aResult.SetToken( NULL); - SetDirty(); - } -} - void ScFormulaCell::CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ) { pCode->Reset(); diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index f378c89..e1e04d0 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -2178,12 +2178,6 @@ void ScTable::CompileDBFormula( sc::CompileFormulaContext& rCxt ) aCol[i].CompileDBFormula(rCxt); } -void ScTable::CompileDBFormula( sc::CompileFormulaContext& rCxt, bool bCreateFormulaString ) -{ - for (SCCOL i = 0; i <= MAXCOL; ++i) - aCol[i].CompileDBFormula(rCxt, bCreateFormulaString); -} - void ScTable::CompileColRowNameFormula( sc::CompileFormulaContext& rCxt ) { for (SCCOL i = 0; i <= MAXCOL; ++i) diff --git a/sc/source/core/data/table7.cxx b/sc/source/core/data/table7.cxx index 6ff53de..6763565 100644 --- a/sc/source/core/data/table7.cxx +++ b/sc/source/core/data/table7.cxx @@ -89,11 +89,18 @@ void ScTable::PreprocessRangeNameUpdate( aCol[i].PreprocessRangeNameUpdate(rEndListenCxt, rCompileCxt); } -void ScTable::PostprocessRangeNameUpdate( +void ScTable::PreprocessDBDataUpdate( + sc::EndListeningContext& rEndListenCxt, sc::CompileFormulaContext& rCompileCxt ) +{ + for (SCCOL i = 0; i <= MAXCOL; ++i) + aCol[i].PreprocessDBDataUpdate(rEndListenCxt, rCompileCxt); +} + +void ScTable::CompileHybridFormula( sc::StartListeningContext& rStartListenCxt, sc::CompileFormulaContext& rCompileCxt ) { for (SCCOL i = 0; i <= MAXCOL; ++i) - aCol[i].PostprocessRangeNameUpdate(rStartListenCxt, rCompileCxt); + aCol[i].CompileHybridFormula(rStartListenCxt, rCompileCxt); } void ScTable::UpdateScriptTypes( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2 ) diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx index 40b67de..dbc75d0 100644 --- a/sc/source/ui/docshell/dbdocfun.cxx +++ b/sc/source/ui/docshell/dbdocfun.cxx @@ -77,7 +77,7 @@ bool ScDBDocFunc::AddDBRange( const OUString& rName, const ScRange& rRange, bool bool bCompile = !pDoc->IsImportingXML(); bool bOk; if ( bCompile ) - pDoc->CompileDBFormula( true ); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); if ( rName == STR_DB_LOCAL_NONAME ) { pDoc->SetAnonymousDBData(rRange.aStart.Tab() , pNew); @@ -88,7 +88,7 @@ bool ScDBDocFunc::AddDBRange( const OUString& rName, const ScRange& rRange, bool bOk = pDocColl->getNamedDBs().insert(pNew); } if ( bCompile ) - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); if (!bOk) { @@ -126,9 +126,9 @@ bool ScDBDocFunc::DeleteDBRange(const OUString& rName) if (bUndo) pUndoColl = new ScDBCollection( *pDocColl ); - pDoc->CompileDBFormula( true ); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); rDBs.erase(*p); - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); if (bUndo) { @@ -162,7 +162,7 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew ) ScDBCollection* pUndoColl = new ScDBCollection( *pDocColl ); - pDoc->CompileDBFormula(true); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); rDBs.erase(*pOld); bool bInserted = rDBs.insert(pNewData); if (!bInserted) // Fehler -> alten Zustand wiederherstellen @@ -171,7 +171,7 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew ) pDoc->SetDBCollection(pUndoColl); // gehoert dann dem Dokument } - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); if (bInserted) // Einfuegen hat geklappt { diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index b67ef09..a52c3bd 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -4852,7 +4852,7 @@ bool ScDocFunc::SetNewRangeNames( ScRangeName* pNewRanges, bool bModifyDoc, SCTA else pDoc->SetRangeName( pNewRanges ); // takes ownership if ( bCompile ) - pDoc->PostprocessRangeNameUpdate(); + pDoc->CompileHybridFormula(); if (bModifyDoc) { @@ -4878,7 +4878,7 @@ void ScDocFunc::ModifyAllRangeNames( const boost::ptr_map<OUString, ScRangeName> pDoc->PreprocessRangeNameUpdate(); pDoc->SetAllRangeNames(rRangeMap); - pDoc->PostprocessRangeNameUpdate(); + pDoc->CompileHybridFormula(); aModificator.SetDocumentModified(); SFX_APP()->Broadcast(SfxSimpleHint(SC_HINT_AREAS_CHANGED)); diff --git a/sc/source/ui/docshell/docsh5.cxx b/sc/source/ui/docshell/docsh5.cxx index c52e287..ecec2a6 100644 --- a/sc/source/ui/docshell/docsh5.cxx +++ b/sc/source/ui/docshell/docsh5.cxx @@ -259,7 +259,7 @@ ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGe OUString aNewName; if (eMode==SC_DB_IMPORT) { - aDocument.CompileDBFormula( true ); // CreateFormulaString + aDocument.PreprocessDBDataUpdate(); pUndoColl = new ScDBCollection( *pColl ); // Undo fuer Import1-Bereich OUString aImport = ScGlobal::GetRscString( STR_DBNAME_IMPORT ); @@ -291,7 +291,7 @@ ScDBData* ScDocShell::GetDBData( const ScRange& rMarked, ScGetDBMode eMode, ScGe if ( pUndoColl ) { - aDocument.CompileDBFormula( false ); // CompileFormulaString + aDocument.CompileHybridFormula(); ScDBCollection* pRedoColl = new ScDBCollection( *pColl ); GetUndoManager()->AddUndoAction( new ScUndoDBData( this, pUndoColl, pRedoColl ) ); diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx index 1119a9e..47e85b4 100644 --- a/sc/source/ui/undo/undocell.cxx +++ b/sc/source/ui/undo/undocell.cxx @@ -1009,7 +1009,7 @@ void ScUndoRangeNames::DoChange( bool bUndo ) pDoc->SetRangeName( new ScRangeName( *pNewRanges ) ); } - pDoc->PostprocessRangeNameUpdate(); + pDoc->CompileHybridFormula(); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) ); } diff --git a/sc/source/ui/undo/undodat.cxx b/sc/source/ui/undo/undodat.cxx index 59845fa..e892c13 100644 --- a/sc/source/ui/undo/undodat.cxx +++ b/sc/source/ui/undo/undodat.cxx @@ -1131,9 +1131,9 @@ void ScUndoDBData::Undo() bool bOldAutoCalc = pDoc->GetAutoCalc(); pDoc->SetAutoCalc( false ); // Avoid unnecessary calculations - pDoc->CompileDBFormula( true ); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); pDoc->SetDBCollection( new ScDBCollection(*pUndoColl), true ); - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); pDoc->SetAutoCalc( bOldAutoCalc ); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) ); @@ -1149,9 +1149,9 @@ void ScUndoDBData::Redo() bool bOldAutoCalc = pDoc->GetAutoCalc(); pDoc->SetAutoCalc( false ); // Avoid unnecessary calculations - pDoc->CompileDBFormula( true ); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); pDoc->SetDBCollection( new ScDBCollection(*pRedoColl), true ); - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); pDoc->SetAutoCalc( bOldAutoCalc ); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_DBAREAS_CHANGED ) ); diff --git a/sc/source/ui/undo/undorangename.cxx b/sc/source/ui/undo/undorangename.cxx index db9b0e4..2c2d8aa 100644 --- a/sc/source/ui/undo/undorangename.cxx +++ b/sc/source/ui/undo/undorangename.cxx @@ -79,7 +79,7 @@ void ScUndoAllRangeNames::DoChange(const boost::ptr_map<OUString, ScRangeName>& rDoc.PreprocessRangeNameUpdate(); rDoc.SetAllRangeNames(rNames); - rDoc.PostprocessRangeNameUpdate(); + rDoc.CompileHybridFormula(); SFX_APP()->Broadcast(SfxSimpleHint(SC_HINT_AREAS_CHANGED)); } diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx index 14bceca..1844ad3 100644 --- a/sc/source/ui/unoobj/nameuno.cxx +++ b/sc/source/ui/unoobj/nameuno.cxx @@ -749,7 +749,7 @@ void ScNamedRangesObj::lock() /** called from the XActionLockable interface methods on final unlock */ void ScNamedRangesObj::unlock() { - pDocShell->GetDocument()->PostprocessRangeNameUpdate(); + pDocShell->GetDocument()->CompileHybridFormula(); } // document::XActionLockable diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx index 704fda7..d41983e 100644 --- a/sc/source/ui/view/dbfunc.cxx +++ b/sc/source/ui/view/dbfunc.cxx @@ -222,9 +222,9 @@ void ScDBFunc::NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const std:: // register target in SBA no longer necessary - pDoc->CompileDBFormula( true ); // CreateFormulaString + pDoc->PreprocessDBDataUpdate(); pDoc->SetDBCollection( new ScDBCollection( rNewColl ) ); - pDoc->CompileDBFormula( false ); // CompileFormulaString + pDoc->CompileHybridFormula(); pOldColl = NULL; pDocShell->PostPaint(ScRange(0, 0, 0, MAXCOL, MAXROW, MAXTAB), PAINT_GRID); aModificator.SetDocumentModified(); diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx index 9ce469a..1396233 100644 --- a/sc/source/ui/view/viewfunc.cxx +++ b/sc/source/ui/view/viewfunc.cxx @@ -2794,7 +2794,7 @@ bool ScViewFunc::InsertName( const OUString& rName, const OUString& rSymbol, bOk = true; pNewEntry = NULL; // never delete, insert took ownership - pDoc->PostprocessRangeNameUpdate(); + pDoc->CompileHybridFormula(); aModificator.SetDocumentModified(); SFX_APP()->Broadcast( SfxSimpleHint( SC_HINT_AREAS_CHANGED ) ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits