[gnome-shell] workspace: Remove Long-press later with the actor



commit e53443daf903fe3434b0471582e40f0fbd369a25
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date:   Fri Jul 12 13:53:33 2019 +0200

    workspace: Remove Long-press later with the actor
    
    Ensure that the long-press later is removed with the actor, otherwise
    it will try to use invalidated data.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/700

 js/ui/workspace.js | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 95369997a0..f0951a63df 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -354,6 +354,11 @@ var WindowClone = GObject.registerClass({
         this.metaWindow._delegate = null;
         this._delegate = null;
 
+        if (this._longPressLater) {
+            Meta.later_remove(this._longPressLater);
+            delete this._longPressLater;
+        }
+
         if (this.inDrag) {
             this.emit('drag-end');
             this.inDrag = false;
@@ -388,9 +393,13 @@ var WindowClone = GObject.registerClass({
             let event = Clutter.get_current_event();
             this._dragTouchSequence = event.get_event_sequence();
 
+            if (this._longPressLater)
+                return true;
+
             // A click cancels a long-press before any click handler is
             // run - make sure to not start a drag in that case
-            Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+            this._longPressLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
+                delete this._longPressLater;
                 if (this._selected)
                     return;
                 let [x, y] = action.get_coords();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]