[gnome-shell] panel: fix up calendar-vs-menu handling on clock



commit 7d0eeef90a85598a2862695755d4635bda4485b3
Author: Dan Winship <danw gnome org>
Date:   Fri Nov 19 13:00:59 2010 -0500

    panel: fix up calendar-vs-menu handling on clock
    
    Give the clock's right-click menu its own PopupMenuManager so that if
    you drop down another menu and then mouseover the clock it doesn't
    pop up the right-click menu.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=634755

 js/ui/panel.js |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index fc4614d..e797a36 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -512,11 +512,14 @@ ClockButton.prototype = {
 
     _onButtonPress: function(actor, event) {
         let button = event.get_button();
-        if (button == 3 &&
-            (!this._calendarPopup || !this._calendarPopup.isOpen))
+        let menuShowing = this.menu.isOpen;
+        let calendarShowing = this._calendarPopup && this._calendarPopup.isOpen;
+
+        if (menuShowing || (button == 3 && !calendarShowing))
             this.menu.toggle();
         else
             this._toggleCalendar();
+        return true;
     },
 
     closeCalendar: function() {
@@ -525,15 +528,12 @@ ClockButton.prototype = {
 
         this._calendarPopup.hide();
 
-        this.menu.isOpen = false;
         this.actor.remove_style_pseudo_class('pressed');
     },
 
     openCalendar: function() {
         this._calendarPopup.show();
 
-        // simulate an open menu, so it won't appear beneath the calendar
-        this.menu.isOpen = true;
         this.actor.add_style_pseudo_class('pressed');
     },
 
@@ -803,7 +803,8 @@ Panel.prototype = {
         this._clockButton = new ClockButton();
         this._centerBox.add(this._clockButton.actor, { y_fill: true });
 
-        this._menus.addMenu(this._clockButton.menu);
+        let clockMenuManager = new PopupMenu.PopupMenuManager(this);
+        clockMenuManager.addMenu(this._clockButton.menu);
 
         /* right */
 



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