[gnome-shell/wip/rstrode/rhel-7.9: 74/86] appDisplay: Stop watching FolderIcon parent view when destroyed




commit 8f53ffed31b54004d2283995a91451ed37b661d1
Author: Ray Strode <rstrode redhat com>
Date:   Thu Jul 18 14:49:30 2019 -0400

    appDisplay: Stop watching FolderIcon parent view when destroyed
    
    When a FolderIcon is opened, it asks the parent view to allocate
    space for it, which takes time.  Eventually, the space-ready
    signal is emitted on the view and the icon can make use of the new
    space with its popup.  If the icon gets destroyed in the
    interim, though, space-ready signal handler still fires.
    
    This commit disconnects the signal handler so it doesn't get called
    on a destroyed icon.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628

 js/ui/appDisplay.js | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 2392281a2c..4d04dc043c 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1315,6 +1315,11 @@ var FolderIcon = new Lang.Class({
     onDestroy() {
         this.view.actor.destroy();
 
+        if (this._spaceReadySignalId) {
+            this._parentView.disconnect(this._spaceReadySignalId);
+            this._spaceReadySignalId = 0;
+        }
+
         if (this._popup)
             this._popup.actor.destroy();
     },
@@ -1386,8 +1391,9 @@ var FolderIcon = new Lang.Class({
     },
 
     _openSpaceForPopup() {
-        let id = this._parentView.connect('space-ready', () => {
-            this._parentView.disconnect(id);
+        this._spaceReadySignalId = this._parentView.connect('space-ready', () => {
+            this._parentView.disconnect(this._spaceReadySignalId);
+            this._spaceReadySignalId = 0;
             this._popup.popup();
             this._updatePopupPosition();
         });


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