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:
parent
c5ce405859
commit
3b8d53060d
@ -210,14 +210,19 @@ AppIcon.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateMenuOnButtonPress: function(actor, event) {
|
_updateMenuOnButtonPress: function(actor, event) {
|
||||||
if (this._menuTimeoutId != 0)
|
let button = event.get_button();
|
||||||
Mainloop.source_remove(this._menuTimeoutId);
|
if (button == 1) {
|
||||||
this._menuTimeoutId = Mainloop.timeout_add(APPICON_MENU_POPUP_TIMEOUT_MS,
|
if (this._menuTimeoutId != 0)
|
||||||
Lang.bind(this, this.popupMenu));
|
Mainloop.source_remove(this._menuTimeoutId);
|
||||||
|
this._menuTimeoutId = Mainloop.timeout_add(APPICON_MENU_POPUP_TIMEOUT_MS,
|
||||||
|
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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user