sc/inc/table.hxx | 2 +- sc/source/core/data/documen7.cxx | 23 +++++++++++++++++------ sc/source/core/data/document.cxx | 2 +- sc/source/core/data/table2.cxx | 4 ++-- 4 files changed, 21 insertions(+), 10 deletions(-)
New commits: commit 7b95b0cc2b7806aa00e5b201e0cd922274d0c04d Author: Eike Rathke <[email protected]> Date: Wed Dec 3 21:09:41 2014 +0100 do not construct an ScAddress on each iteration Change-Id: I3c89e649c289cd50035929d4025d0c18968b36f9 diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx index dc511a5..45c9416 100644 --- a/sc/source/core/data/documen7.cxx +++ b/sc/source/core/data/documen7.cxx @@ -157,10 +157,15 @@ void ScDocument::BroadcastCells( const ScRange& rRange, sal_uLong nHint ) ScConditionalFormatList* pCondFormList = GetCondFormList(nTab); if (pCondFormList) { + ScAddress aAddress( 0, 0, nTab); for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) { + aAddress.SetRow(nRow); for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) - pCondFormList->SourceChanged(ScAddress(nCol,nRow,nTab)); + { + aAddress.SetCol(nCol); + pCondFormList->SourceChanged(aAddress); + } } } } commit 99270aefbfbec2f759f1f96e8777f76bc113dabc Author: Eike Rathke <[email protected]> Date: Wed Dec 3 20:41:33 2014 +0100 slightly speed-up things by using ScTable access Change-Id: I378cd0e1eaa0f41799e4e18d1daae813540da77d diff --git a/sc/source/core/data/documen7.cxx b/sc/source/core/data/documen7.cxx index 6429fa5..dc511a5 100644 --- a/sc/source/core/data/documen7.cxx +++ b/sc/source/core/data/documen7.cxx @@ -120,16 +120,22 @@ void ScDocument::BroadcastCells( const ScRange& rRange, sal_uLong nHint ) for (SCTAB nTab = nTab1; nTab <= nTab2; ++nTab) { + ScTable* pTab = FetchTable(nTab); + if (!pTab) + continue; + rPos.SetTab(nTab); - for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) + for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) { - rPos.SetRow(nRow); - for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) + rPos.SetCol(nCol); + /* TODO: to speed-up things a per column iterator to + * cell-broadcast in a range of rows would come handy. */ + for (SCROW nRow = nRow1; nRow <= nRow2; ++nRow) { - rPos.SetCol(nCol); - SvtBroadcaster* pBC = GetBroadcaster(rPos); + SvtBroadcaster* pBC = pTab->GetBroadcaster( nCol, nRow); if (pBC) { + rPos.SetRow(nRow); pBC->Broadcast(aHint); bIsBroadcasted = true; } commit b8a7c39cf26f6d417efc34acdf6f4c2a6762052d Author: Eike Rathke <[email protected]> Date: Wed Dec 3 19:37:18 2014 +0100 introduce bool bBroadcast parameter for ScTable::SetDirty() Change-Id: I62c3714c8036fe8d4b70ee188546c7d69ece1ea5 diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx index 318805a..d5cb383 100644 --- a/sc/inc/table.hxx +++ b/sc/inc/table.hxx @@ -532,7 +532,7 @@ public: void ResetChanged( const ScRange& rRange ); void SetAllFormulasDirty( const sc::SetFormulaDirtyContext& rCxt ); - void SetDirty( const ScRange&, bool bIncludeEmptyCells ); + void SetDirty( const ScRange&, bool bBroadcast, bool bIncludeEmptyCells ); void SetDirtyAfterLoad(); void SetDirtyVar(); void SetTableOpDirty( const ScRange& ); diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index fdab204..a654eba 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -3627,7 +3627,7 @@ void ScDocument::SetDirty( const ScRange& rRange, bool bIncludeEmptyCells ) ScBulkBroadcast aBulkBroadcast( GetBASM()); SCTAB nTab2 = rRange.aEnd.Tab(); for (SCTAB i=rRange.aStart.Tab(); i<=nTab2 && i < static_cast<SCTAB>(maTabs.size()); i++) - if (maTabs[i]) maTabs[i]->SetDirty( rRange, bIncludeEmptyCells ); + if (maTabs[i]) maTabs[i]->SetDirty( rRange, true, bIncludeEmptyCells ); } SetAutoCalc( bOldAutoCalc ); } diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index fad5443..3665765 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -1684,13 +1684,13 @@ void ScTable::SetAllFormulasDirty( const sc::SetFormulaDirtyContext& rCxt ) aCol[i].SetAllFormulasDirty(rCxt); } -void ScTable::SetDirty( const ScRange& rRange, bool bIncludeEmptyCells ) +void ScTable::SetDirty( const ScRange& rRange, bool bBroadcast, bool bIncludeEmptyCells ) { bool bOldAutoCalc = pDocument->GetAutoCalc(); pDocument->SetAutoCalc( false ); // Mehrfachberechnungen vermeiden SCCOL nCol2 = rRange.aEnd.Col(); for (SCCOL i=rRange.aStart.Col(); i<=nCol2; i++) - aCol[i].SetDirty(rRange.aStart.Row(), rRange.aEnd.Row(), true, bIncludeEmptyCells); + aCol[i].SetDirty(rRange.aStart.Row(), rRange.aEnd.Row(), bBroadcast, bIncludeEmptyCells); pDocument->SetAutoCalc( bOldAutoCalc ); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
