Kaydet (Commit) af70bc00 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

fdo#44143: Keep cells with broadcasters alive during deletion.

Or else it would partially break formula reference chain.
üst d3e30409
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <sfx2/objsh.hxx> #include <sfx2/objsh.hxx>
#include <svl/zforlist.hxx> #include <svl/zforlist.hxx>
#include <svl/zformat.hxx> #include <svl/zformat.hxx>
#include <svl/broadcast.hxx>
#include "scitems.hxx" #include "scitems.hxx"
#include "column.hxx" #include "column.hxx"
...@@ -414,6 +415,12 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe ...@@ -414,6 +415,12 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, sal_uInt16 nDe
if( pNote || pBC ) if( pNote || pBC )
pNoteCell = new ScNoteCell( 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 // remove cell entry in cell item list
SCROW nOldRow = maItems[nIdx].nRow; SCROW nOldRow = maItems[nIdx].nRow;
......
...@@ -973,11 +973,6 @@ void ScDPOutput::Output() ...@@ -973,11 +973,6 @@ void ScDPOutput::Output()
if ( bSizeOverflow || bResultsError ) // does output area exceed sheet limits? if ( bSizeOverflow || bResultsError ) // does output area exceed sheet limits?
return; // nothing 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 ) if ( bDoFilter )
lcl_DoFilterButton( pDoc, aStartPos.Col(), aStartPos.Row(), nTab ); lcl_DoFilterButton( pDoc, aStartPos.Col(), aStartPos.Row(), nTab );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment