[Libreoffice-commits] core.git: sc/source

Dennis Francis (via logerrit) logerrit at kemper.freedesktop.org
Wed Apr 3 07:42:40 UTC 2019


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

New commits:
commit 86ba9cdc69976d9cdb7d6ec1a527012647abf10d
Author:     Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Fri Mar 29 18:34:22 2019 +0530
Commit:     Dennis Francis <dennis.francis at collabora.com>
CommitDate: Wed Apr 3 09:42:17 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>

diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index 1393a8bff013..892febbaeb0c 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -1314,22 +1314,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;
@@ -1382,17 +1366,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