[gnome-shell/wip/appdisplay-leak: 5/8] appDisplay: Add destroy handler for FolderIcon



commit dbaee38096134fa8cdecf3f3f41a9d08f4cfa445
Author: Ray Strode <rstrode redhat com>
Date:   Mon Jul 22 10:57:57 2019 -0400

    appDisplay: Add destroy handler for FolderIcon
    
    It is important that the FolderView of a FolderIcon always
    gets destroyed before the AppFolderPopup, since the view
    may or may not be in the popup, and the view should
    get cleaned up exactly once in either case.
    
    This commit adds a destroy handler on FolderIcon to ensure
    things get taken down in the right order, and to make sure
    the view isn't leaked if it's not yet part of the popup.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/628

 js/ui/appDisplay.js | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 6c639c878..0689c581e 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -1141,6 +1141,7 @@ var FolderIcon = class FolderIcon {
             this.view.actor.vscroll.adjustment.value = 0;
             this._openSpaceForPopup();
         });
+        this.actor.connect('destroy', this.onDestroy.bind(this));
         this.actor.connect('notify::mapped', () => {
             if (!this.actor.mapped && this._popup)
                 this._popup.popdown();
@@ -1150,6 +1151,13 @@ var FolderIcon = class FolderIcon {
         this._redisplay();
     }
 
+    onDestroy() {
+        this.view.actor.destroy();
+
+        if (this._popup)
+            this._popup.actor.destroy();
+    }
+
     getAppIds() {
         return this.view.getAllItems().map(item => item.id);
     }
@@ -1324,7 +1332,6 @@ var AppFolderPopup = class AppFolderPopup {
 
         global.focus_manager.add_group(this.actor);
 
-        source.actor.connect('destroy', () => this.actor.destroy());
         this._grabHelper = new GrabHelper.GrabHelper(this.actor, {
             actionMode: Shell.ActionMode.POPUP
         });


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