From 7d0eeef90a85598a2862695755d4635bda4485b3 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 19 Nov 2010 13:00:59 -0500 Subject: [PATCH] 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 file changed, 7 insertions(+), 6 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index fc4614dc5..e797a36f9 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 */