sc/inc/brdcst.hxx | 1 - sc/source/core/data/column.cxx | 2 +- sc/source/core/data/column3.cxx | 13 ++++++------- sc/source/core/data/formulacell.cxx | 2 +- sc/source/core/tool/chartlis.cxx | 2 +- sc/source/core/tool/lookupcache.cxx | 2 +- sc/source/ui/docshell/servobj.cxx | 2 +- sc/source/ui/unoobj/cellsuno.cxx | 2 +- sc/source/ui/unoobj/chart2uno.cxx | 2 +- 9 files changed, 13 insertions(+), 15 deletions(-)
New commits: commit 2ec086a11c2f61fd9bd703591e411793df11a700 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Fri May 3 16:39:10 2013 -0400 Remove SC_HINT_DYING. We don't do anything specific for this hint. Use SC_HINT_DATACHANGED instead, and do broadcast *after* the cell is removed from the cell array, to avoid the dying cell from being used during recalculation after the broadcast. Change-Id: I8eb31eafa50c737ab683ca697657e64e52ae52e7 diff --git a/sc/inc/brdcst.hxx b/sc/inc/brdcst.hxx index 737e7e8..069f032 100644 --- a/sc/inc/brdcst.hxx +++ b/sc/inc/brdcst.hxx @@ -27,7 +27,6 @@ class SvtBroadcaster; -#define SC_HINT_DYING SFX_HINT_DYING #define SC_HINT_DATACHANGED SFX_HINT_DATACHANGED #define SC_HINT_TABLEOPDIRTY SFX_HINT_USER00 #define SC_HINT_CALCALL SFX_HINT_USER01 diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx index 4e061ab..e20521a 100644 --- a/sc/source/core/data/column.cxx +++ b/sc/source/core/data/column.cxx @@ -1731,7 +1731,7 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol) } // Broadcast changes ScAddress aAdr( nCol, 0, nTab ); - ScHint aHint( SC_HINT_DYING, aAdr, NULL ); // areas only + ScHint aHint(SC_HINT_DATACHANGED, aAdr, NULL); // areas only ScAddress& rAddress = aHint.GetAddress(); // must iterate backwards, because indexes of following cells become invalid diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index dd22051..8983fa1 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -105,9 +105,6 @@ void ScColumn::Delete( SCROW nRow ) return; ScBaseCell* pCell = maItems[nIndex].pCell; - pDocument->Broadcast( - ScHint(SC_HINT_DYING, ScAddress(nCol, nRow, nTab), GetBroadcaster(nRow))); - maItems.erase(maItems.begin() + nIndex); maTextWidths.set_empty(nRow, nRow); maScriptTypes.set_empty(nRow, nRow); @@ -116,6 +113,9 @@ void ScColumn::Delete( SCROW nRow ) static_cast<ScFormulaCell*>(pCell)->EndListeningTo(pDocument); pCell->Delete(); + pDocument->Broadcast( + ScHint(SC_HINT_DATACHANGED, ScAddress(nCol, nRow, nTab), GetBroadcaster(nRow))); + CellStorageModified(); } @@ -124,13 +124,14 @@ void ScColumn::DeleteAtIndex( SCSIZE nIndex ) { ScBaseCell* pCell = maItems[nIndex].pCell; SCROW nRow = maItems[nIndex].nRow; - pDocument->Broadcast( - ScHint(SC_HINT_DYING, ScAddress(nCol, nRow, nTab), GetBroadcaster(nRow))); maItems.erase(maItems.begin() + nIndex); if (pCell->GetCellType() == CELLTYPE_FORMULA) static_cast<ScFormulaCell*>(pCell)->EndListeningTo(pDocument); pCell->Delete(); + pDocument->Broadcast( + ScHint(SC_HINT_DATACHANGED, ScAddress(nCol, nRow, nTab), GetBroadcaster(nRow))); + maTextWidths.set_empty(nRow, nRow); maScriptTypes.set_empty(nRow, nRow); CellStorageModified(); @@ -304,8 +305,6 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe "paste cells" operation, which removes the caption objects later in drawing undo. */ - ScHint aHint( SC_HINT_DYING, ScAddress( nCol, 0, nTab ), 0 ); - // cache all formula cells, they will be deleted at end of this function typedef ::std::vector< ScFormulaCell* > FormulaCellVector; FormulaCellVector aDelCells; diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index aa36598..cb13563 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -1512,7 +1512,7 @@ void ScFormulaCell::Notify( SvtBroadcaster&, const SfxHint& rHint) { const ScHint* p = PTR_CAST( ScHint, &rHint ); sal_uLong nHint = (p ? p->GetId() : 0); - if (nHint & (SC_HINT_DATACHANGED | SC_HINT_DYING | SC_HINT_TABLEOPDIRTY)) + if (nHint & (SC_HINT_DATACHANGED | SC_HINT_TABLEOPDIRTY)) { bool bForceTrack = false; if ( nHint & SC_HINT_TABLEOPDIRTY ) diff --git a/sc/source/core/tool/chartlis.cxx b/sc/source/core/tool/chartlis.cxx index 0b0f7a1..ed07960 100644 --- a/sc/source/core/tool/chartlis.cxx +++ b/sc/source/core/tool/chartlis.cxx @@ -213,7 +213,7 @@ uno::Reference< chart::XChartData > ScChartListener::GetUnoSource() const void ScChartListener::Notify( SvtBroadcaster&, const SfxHint& rHint ) { const ScHint* p = dynamic_cast<const ScHint*>(&rHint); - if (p && (p->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING))) + if (p && (p->GetId() & SC_HINT_DATACHANGED)) SetUpdateQueue(); } diff --git a/sc/source/core/tool/lookupcache.cxx b/sc/source/core/tool/lookupcache.cxx index 8e93647..235bb04 100644 --- a/sc/source/core/tool/lookupcache.cxx +++ b/sc/source/core/tool/lookupcache.cxx @@ -115,7 +115,7 @@ void ScLookupCache::Notify( SvtBroadcaster & /* rBC */ , const SfxHint & rHint if (!mpDoc->IsInDtorClear()) { const ScHint* p = PTR_CAST( ScHint, &rHint ); - if (p && (p->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING))) + if (p && (p->GetId() & SC_HINT_DATACHANGED)) { mpDoc->RemoveLookupCache( *this); delete this; diff --git a/sc/source/ui/docshell/servobj.cxx b/sc/source/ui/docshell/servobj.cxx index e0eb9db..c5fbfe8 100644 --- a/sc/source/ui/docshell/servobj.cxx +++ b/sc/source/ui/docshell/servobj.cxx @@ -228,7 +228,7 @@ void ScServerObject::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) // must be from Area broadcasters const ScHint* pScHint = PTR_CAST( ScHint, &rHint ); - if( pScHint && (pScHint->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING)) ) + if (pScHint && (pScHint->GetId() & SC_HINT_DATACHANGED)) bDataChanged = sal_True; else if (rHint.ISA(ScAreaChangedHint)) // position of broadcaster changed { diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx index b3d6ece..f0f5a0e 100644 --- a/sc/source/ui/unoobj/cellsuno.cxx +++ b/sc/source/ui/unoobj/cellsuno.cxx @@ -2830,7 +2830,7 @@ void SAL_CALL ScCellRangesBase::firePropertiesChangeEvent( const uno::Sequence< IMPL_LINK( ScCellRangesBase, ValueListenerHdl, SfxHint*, pHint ) { if ( pDocShell && pHint && pHint->ISA( SfxSimpleHint ) && - ((const SfxSimpleHint*)pHint)->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING) ) + (((const SfxSimpleHint*)pHint)->GetId() & SC_HINT_DATACHANGED)) { // This may be called several times for a single change, if several formulas // in the range are notified. So only a flag is set that is checked when diff --git a/sc/source/ui/unoobj/chart2uno.cxx b/sc/source/ui/unoobj/chart2uno.cxx index 6ce49d2..69b95aa 100644 --- a/sc/source/ui/unoobj/chart2uno.cxx +++ b/sc/source/ui/unoobj/chart2uno.cxx @@ -2937,7 +2937,7 @@ void ScChart2DataSequence::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint IMPL_LINK( ScChart2DataSequence, ValueListenerHdl, SfxHint*, pHint ) { if ( m_pDocument && pHint && pHint->ISA( SfxSimpleHint ) && - ((const SfxSimpleHint*)pHint)->GetId() & (SC_HINT_DATACHANGED | SC_HINT_DYING) ) + ((const SfxSimpleHint*)pHint)->GetId() & SC_HINT_DATACHANGED) { // This may be called several times for a single change, if several formulas // in the range are notified. So only a flag is set that is checked when _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits