diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-11 14:18:10 -0400 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-10-13 08:17:37 +0000 |
commit | eb5f25984307cd9e63e9cc88cbdb09228d66b097 (patch) | |
tree | a1fb8e6462c519622a04a169f13b3e12cab7a66a | |
parent | 4b2f0915f9f3bff7d2476ec41a272e5263fbb312 (diff) |
fdo#80846: Broadcast changes before EndUndo().
EndUndo() calls PostDataChanged(), which renders the recalculated formula
cells. Not broadcasting before EndUndo causes some dependent formula
cells to not get recalculated.
This one unfortunately is not currently unit-testable as this behavior
depends on the presence of ScTabViewShell....
Change-Id: I86288608b7f2627cda7c74be27a18029832775ef
(cherry picked from commit 424bfaa773e58d6b609ac7f64907db4b542d1315)
Reviewed-on: https://gerrit.libreoffice.org/11927
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sc/source/ui/undo/undoblk3.cxx | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx index 03edabff1fba..67841346000e 100644 --- a/sc/source/ui/undo/undoblk3.cxx +++ b/sc/source/ui/undo/undoblk3.cxx @@ -170,12 +170,20 @@ void ScUndoDeleteContents::DoChange( const bool bUndo ) SetChangeTrack(); } + if (nFlags & IDF_CONTENTS) + { + // Broadcast only when the content changes. fdo#74687 + if (mpDataSpans) + BroadcastChanges(*mpDataSpans); + else + BroadcastChanges(aRange); + } + ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); if ( !( (pViewShell) && pViewShell->AdjustRowHeight( aRange.aStart.Row(), aRange.aEnd.Row() ) ) ) /*A*/ pDocShell->PostPaint( aRange, PAINT_GRID | PAINT_EXTRAS, nExtFlags ); - pDocShell->PostDataChanged(); if (pViewShell) pViewShell->CellContentChanged(); @@ -188,15 +196,6 @@ void ScUndoDeleteContents::Undo() DoChange( true ); EndUndo(); - if (nFlags & IDF_CONTENTS) - { - // Broadcast only when the content changes. fdo#74687 - if (mpDataSpans) - BroadcastChanges(*mpDataSpans); - else - BroadcastChanges(aRange); - } - HelperNotifyChanges::NotifyIfChangesListeners(*pDocShell, aRange); } @@ -206,10 +205,6 @@ void ScUndoDeleteContents::Redo() DoChange( false ); EndRedo(); - if (nFlags & IDF_CONTENTS) - // Broadcast only when the content changes. fdo#74687 - BroadcastChanges(aRange); - HelperNotifyChanges::NotifyIfChangesListeners(*pDocShell, aRange); } |