diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-11 14:18:10 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-11 14:22:15 -0400 |
commit | 424bfaa773e58d6b609ac7f64907db4b542d1315 (patch) | |
tree | 70e9d9d3df747c65babf92648cd1998242b13f02 /sc | |
parent | 4027bc476a1df9df1924447795ddc2d8b7744e20 (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
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/undo/undoblk3.cxx | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/sc/source/ui/undo/undoblk3.cxx b/sc/source/ui/undo/undoblk3.cxx index 49e2280f7362..de1f238e5eba 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,16 +196,9 @@ 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); +// pDocShell->PostDataChanged(); } void ScUndoDeleteContents::Redo() @@ -206,10 +207,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); } |