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) {
let button = event.get_button();
if (button == 1) {
if (this._menuTimeoutId != 0)
Mainloop.source_remove(this._menuTimeoutId);
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;
},
popupMenu: function() {
popupMenu: function(activatingButton) {
if (this._menuTimeoutId != 0) {
Mainloop.source_remove(this._menuTimeoutId);
this._menuTimeoutId = 0;
@ -241,7 +246,7 @@ AppIcon.prototype = {
}));
}
this._menu.popup();
this._menu.popup(activatingButton);
return false;
},
@ -476,13 +481,13 @@ AppIconMenu.prototype = {
}
},
popup: function() {
popup: function(activatingButton) {
let [stageX, stageY] = this._source.actor.get_transformed_position();
let [stageWidth, stageHeight] = this._source.actor.get_transformed_size();
this._redisplay();
this._windowContainer.popup(0, Main.currentTime());
this._windowContainer.popup(activatingButton, Main.currentTime());
this.emit('popup', true);