[Libreoffice-commits] core.git: Branch 'libreoffice-6-2' - sc/source

Dennis Francis (via logerrit) logerrit at kemper.freedesktop.org
Wed Apr 3 10:16:09 UTC 2019


 sc/source/ui/undo/undoblk.cxx |   28 +---------------------------
 1 file changed, 1 insertion(+), 27 deletions(-)

New commits:
commit 01f5cc7c6a1467ec3a788ffb0fb29a6a64963578
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Fri Mar 29 18:34:22 2019 +0530
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Wed Apr 3 12:15:44 2019 +0200

    tdf#120270 : ScUndoDragDrop - Notifying listeners of the area...
    
    is not enough. This needs to be done recursively, ie notify the
    listeners, notify the listeners of the listeners and so on.
    ScDocument::BroadcastCells() seems to do exactly that, so lets
    use it here intead of collect+notify.
    
    Change-Id: Ifa273fea5f08af661958cd9b4c3d01d9044b8727
    Reviewed-on: https://gerrit.libreoffice.org/70044
    Reviewed-by: Dennis Francis <dennis.francis at collabora.com>
    Tested-by: Dennis Francis <dennis.francis at collabora.com>
    (cherry picked from commit 86ba9cdc69976d9cdb7d6ec1a527012647abf10d)
    Reviewed-on: https://gerrit.libreoffice.org/70179
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 4e982824e2ea..71e29b1ee357 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -1317,22 +1317,6 @@ void ScUndoDragDrop::DoUndo( ScRange aRange )
     maPaintRanges.Join(aPaintRange);
 }
 
-namespace {
-
-class DataChangeNotifier
-{
-    ScHint const maHint;
-public:
-    DataChangeNotifier() : maHint(SfxHintId::ScDataChanged, ScAddress()) {}
-
-    void operator() ( SvtListener* p )
-    {
-        p->Notify(maHint);
-    }
-};
-
-}
-
 void ScUndoDragDrop::Undo()
 {
     mnPaintExtFlags = 0;
@@ -1385,17 +1369,7 @@ void ScUndoDragDrop::Undo()
         DoUndo(aDestRange);
         DoUndo(aSrcRange);
 
-        // Notify all area listeners whose listened areas are partially moved, to
-        // recalculate.
-        std::vector<SvtListener*> aListeners;
-        rDoc.CollectAllAreaListeners(aListeners, aSrcRange, sc::AreaPartialOverlap);
-
-        // Remove any duplicate listener entries.  We must ensure that we notify
-        // each unique listener only once.
-        std::sort(aListeners.begin(), aListeners.end());
-        aListeners.erase(std::unique(aListeners.begin(), aListeners.end()), aListeners.end());
-
-        std::for_each(aListeners.begin(), aListeners.end(), DataChangeNotifier());
+        rDoc.BroadcastCells(aSrcRange, SfxHintId::ScDataChanged, false);
     }
     else
         DoUndo(aDestRange);


More information about the Libreoffice-commits mailing list