summaryrefslogtreecommitdiffstats
path: root/sc/source
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2009-03-16 11:46:01 +0000
committerVladimir Glazounov <vg@openoffice.org>2009-03-16 11:46:01 +0000
commit3fa6016cfe4ceff50f08f6a6599c96b3b32f2e8d (patch)
tree22dc176bb44f99c2e0bd23cc84be5be160b8b252 /sc/source
parentCWS-TOOLING: integrate CWS chartranges_DEV300 (diff)
downloadcore-3fa6016cfe4ceff50f08f6a6599c96b3b32f2e8d.tar.gz
core-3fa6016cfe4ceff50f08f6a6599c96b3b32f2e8d.zip
CWS-TOOLING: integrate CWS calc31stopper_DEV300
2009-03-04 19:46:06 +0100 dr r268863 : #i99844# do not remove broadcaster from deleted cells before broadcasting the change
Diffstat (limited to 'sc/source')
-rw-r--r--sc/source/core/data/column3.cxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 3faf5f2415b8..793229116fe2 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -466,7 +466,8 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, USHORT nDelFla
{
// do not rescue note if it has to be deleted according to passed flags
ScPostIt* pNote = bDeleteNote ? 0 : pOldCell->ReleaseNote();
- SvtBroadcaster* pBC = pOldCell->ReleaseBroadcaster();
+ // #i99844# do not release broadcaster from old cell, it still has to notify deleted content
+ SvtBroadcaster* pBC = pOldCell->GetBroadcaster();
if( pNote || pBC )
pNoteCell = new ScNoteCell( pNote, pBC );
}
@@ -498,6 +499,8 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, USHORT nDelFla
aHint.GetAddress().SetRow( nOldRow );
aHint.SetCell( pOldCell );
pDocument->Broadcast( aHint );
+ // #i99844# after broadcasting, old cell has to forget the broadcaster (owned by pNoteCell)
+ pOldCell->ReleaseBroadcaster();
pOldCell->Delete();
}
}
@@ -524,6 +527,8 @@ void ScColumn::DeleteRange( SCSIZE nStartIndex, SCSIZE nEndIndex, USHORT nDelFla
aHint.SetAddress( (*aIt)->aPos );
aHint.SetCell( *aIt );
pDocument->Broadcast( aHint );
+ // #i99844# after broadcasting, old cell has to forget the broadcaster (owned by replacement note cell)
+ (*aIt)->ReleaseBroadcaster();
(*aIt)->Delete();
}
}