diff options
author | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-26 15:47:52 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@suse.com> | 2012-01-26 15:50:02 -0500 |
commit | af70bc00c6714eb8695babdf5af07416552f7034 (patch) | |
tree | e5acd6a702753ee372b05e14e7240add06695f9a /sc | |
parent | d3e30409530a94470a3c19612663b26a9eafa683 (diff) |
fdo#44143: Keep cells with broadcasters alive during deletion.
Or else it would partially break formula reference chain.
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/data/column3.cxx | 7 | ||||
-rw-r--r-- | sc/source/core/data/dpoutput.cxx | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 73c0bbbde9bb..8bd0a452a1f3 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -35,6 +35,7 @@ #include <sfx2/objsh.hxx> #include <svl/zforlist.hxx> #include <svl/zformat.hxx> +#include <svl/broadcast.hxx> #include "scitems.hxx" #include "column.hxx" @@ -414,6 +415,12 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe if( pNote || pBC ) pNoteCell = new ScNoteCell( pNote, pBC ); } + else + { + SvtBroadcaster* pBC = pOldCell->GetBroadcaster(); + if (pBC && pBC->HasListeners()) + pNoteCell = new ScNoteCell(pOldCell->ReleaseNote(), pBC); + } // remove cell entry in cell item list SCROW nOldRow = maItems[nIdx].nRow; diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx index 32179e3807aa..ccec280fb305 100644 --- a/sc/source/core/data/dpoutput.cxx +++ b/sc/source/core/data/dpoutput.cxx @@ -973,11 +973,6 @@ void ScDPOutput::Output() if ( bSizeOverflow || bResultsError ) // does output area exceed sheet limits? return; // nothing - // clear whole (new) output area - //! when modifying table, clear old area - //! include IDF_OBJECTS ??? - pDoc->DeleteAreaTab( aStartPos.Col(), aStartPos.Row(), nTabEndCol, nTabEndRow, nTab, IDF_ALL ); - if ( bDoFilter ) lcl_DoFilterButton( pDoc, aStartPos.Col(), aStartPos.Row(), nTab ); |