[gnome-shell/gbsneto/remove-generic-container: 27/28] panel: Delegate container destruction to PanelMenu.ButtonBox



commit b0240b24bd09875c00086167db497845a1a6be91
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Aug 28 22:37:27 2018 -0300

    panel: Delegate container destruction to PanelMenu.ButtonBox
    
    Instead of taking care of the PanelMenu.ButtonBox.container
    destruction by itself, delegate that to the very object that
    created it in the first place: PanelMenu.ButtonBox itself.

 js/ui/panel.js     |  1 -
 js/ui/panelMenu.js | 10 +++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index e61557ab9..49759af4c 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -1158,7 +1158,6 @@ var Panel = new Lang.Class({
         let destroyId = indicator.connect('destroy', emitter => {
             delete this.statusArea[role];
             emitter.disconnect(destroyId);
-            container.destroy();
         });
         indicator.connect('menu-set', this._onMenuSet.bind(this));
         this._onMenuSet(indicator);
diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js
index 6f496db97..401419dec 100644
--- a/js/ui/panelMenu.js
+++ b/js/ui/panelMenu.js
@@ -30,6 +30,8 @@ var ButtonBox = new Lang.Class({
                                       child: this.actor });
 
         this.connect('style-changed', this._onStyleChanged.bind(this));
+        this.connect('destroy', this._onDestroy.bind(this));
+
         this._minHPadding = this._natHPadding = 0.0;
     },
 
@@ -90,6 +92,11 @@ var ButtonBox = new Lang.Class({
 
         child.allocate(childBox, flags);
     },
+
+    _onDestroy() {
+        this.container.child = null;
+        this.container.destroy();
+    },
 });
 
 var Button = new Lang.Class({
@@ -106,7 +113,6 @@ var Button = new Lang.Class({
 
         this.connect('event', this._onEvent.bind(this));
         this.connect('notify::visible', this._onVisibilityChanged.bind(this));
-        this.connect('destroy', this._onDestroy.bind(this));
 
         if (dontCreateMenu)
             this.menu = new PopupMenu.PopupDummyMenu(this.actor);
@@ -190,6 +196,8 @@ var Button = new Lang.Class({
     },
 
     _onDestroy() {
+        this.parent();
+
         if (this.menu)
             this.menu.destroy();
     }


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