From 50d4e7c928c372a14a5396971bc4c4ac1f437b51 Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Mon, 14 Sep 2015 17:27:41 +0200 Subject: Resolves: tdf#93895 broadcast cell changes when multi-selection was pasted It is not sufficient to collect the cells, one has to broadcast on the collection. Change-Id: I11f889936aff43f958c56789e539809289819752 (cherry picked from commit 97ad6393525a928b5dfe2a6562d7604446da7af0) Reviewed-on: https://gerrit.libreoffice.org/18573 Tested-by: Jenkins Reviewed-by: Tor Lillqvist --- sc/source/core/data/document.cxx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 153b77f6f86f..bb6431a84783 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2961,10 +2961,18 @@ void ScDocument::CopyMultiRangeFromClip( // Create Listener after everything has been inserted StartListeningFromClip(aDestRange.aStart.Col(), aDestRange.aStart.Row(), aDestRange.aEnd.Col(), aDestRange.aEnd.Row(), rMark, nInsFlag ); - // Re-broadcast after all Listener have been created - SetDirtyFromClip( - aDestRange.aStart.Col(), aDestRange.aStart.Row(), aDestRange.aEnd.Col(), aDestRange.aEnd.Row(), - rMark, nInsFlag, aBroadcastSpans); + + { + ScBulkBroadcast aBulkBroadcast( GetBASM()); + + // Set formula cells dirty and collect non-formula cells. + SetDirtyFromClip( + aDestRange.aStart.Col(), aDestRange.aStart.Row(), aDestRange.aEnd.Col(), aDestRange.aEnd.Row(), + rMark, nInsFlag, aBroadcastSpans); + + BroadcastAction aAction(*this); + aBroadcastSpans.executeColumnAction(*this, aAction); + } if (bResetCut) pClipDoc->GetClipParam().mbCutMode = false; -- cgit v1.2.3