[gnome-shell] panelMenu: Close menu when hiding the corresponding button



commit dabcd29fb6583746425f7ee1ce7c06adcb9ff421
Author: Florian Müllner <fmuellner gnome org>
Date:   Wed Jul 3 15:55:35 2013 +0200

    panelMenu: Close menu when hiding the corresponding button
    
    A PanelMenuButton added to the top bar might not be visible at all
    times. If it is hidden while the corresponding menu is open, we
    currently don't do anything at all, e.g. the menu remains open
    pointing to an arbitrary location in the top bar.
    Instead, close the menu automatically in that case.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=703540

 js/ui/panelMenu.js |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js
index b73152e..d77143b 100644
--- a/js/ui/panelMenu.js
+++ b/js/ui/panelMenu.js
@@ -110,6 +110,7 @@ const Button = new Lang.Class({
 
         this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
         this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
+        this.actor.connect('notify::visible', Lang.bind(this, this._onVisibilityChanged));
 
         if (dontCreateMenu)
             this.menu = new PopupMenu.PopupDummyMenu(this.actor);
@@ -183,6 +184,14 @@ const Button = new Lang.Class({
             return false;
     },
 
+    _onVisibilityChanged: function() {
+        if (!this.menu)
+            return;
+
+        if (!this.actor.visible)
+            this.menu.close();
+    },
+
     _onMenuKeyPress: function(actor, event) {
         if (global.focus_manager.navigate_from_event(event))
             return true;


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