Immediately pop up menu on right click

We were actually showing a menu on button 3 before, but only
through a chain of coincidences.  This patch explicitly supports
it and makes sure we show it immediately rather than after
a timeout. Pass the activating button in so that we only pop
down on that button.

https://bugzilla.gnome.org/show_bug.cgi?id=596371
This commit is contained in:
Colin Walters 2009-09-25 16:45:21 -04:00
parent c5ce405859
commit 3b8d53060d

View File

@ -210,14 +210,19 @@ AppIcon.prototype = {
}, },
_updateMenuOnButtonPress: function(actor, event) { _updateMenuOnButtonPress: function(actor, event) {
let button = event.get_button();
if (button == 1) {
if (this._menuTimeoutId != 0) if (this._menuTimeoutId != 0)
Mainloop.source_remove(this._menuTimeoutId); Mainloop.source_remove(this._menuTimeoutId);
this._menuTimeoutId = Mainloop.timeout_add(APPICON_MENU_POPUP_TIMEOUT_MS, this._menuTimeoutId = Mainloop.timeout_add(APPICON_MENU_POPUP_TIMEOUT_MS,
Lang.bind(this, this.popupMenu)); Lang.bind(this, function () { this.popupMenu(button); }));
} else if (button == 3) {
this.popupMenu(button);
}
return false; return false;
}, },
popupMenu: function() { popupMenu: function(activatingButton) {
if (this._menuTimeoutId != 0) { if (this._menuTimeoutId != 0) {
Mainloop.source_remove(this._menuTimeoutId); Mainloop.source_remove(this._menuTimeoutId);
this._menuTimeoutId = 0; this._menuTimeoutId = 0;
@ -241,7 +246,7 @@ AppIcon.prototype = {
})); }));
} }
this._menu.popup(); this._menu.popup(activatingButton);
return false; return false;
}, },
@ -476,13 +481,13 @@ AppIconMenu.prototype = {
} }
}, },
popup: function() { popup: function(activatingButton) {
let [stageX, stageY] = this._source.actor.get_transformed_position(); let [stageX, stageY] = this._source.actor.get_transformed_position();
let [stageWidth, stageHeight] = this._source.actor.get_transformed_size(); let [stageWidth, stageHeight] = this._source.actor.get_transformed_size();
this._redisplay(); this._redisplay();
this._windowContainer.popup(0, Main.currentTime()); this._windowContainer.popup(activatingButton, Main.currentTime());
this.emit('popup', true); this.emit('popup', true);