popupMenu: Introduce PopupDummyMenu
This is designed for things like the activities button that sort of need a menu to make navigation work, but not really have it do anything. https://bugzilla.gnome.org/show_bug.cgi?id=689109
This commit is contained in:
parent
9dfc3af9d7
commit
fc9a96ac85
@ -599,11 +599,12 @@ const AppMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
menu = new PopupMenu.RemoteMenu(this.actor, this._targetApp.menu, this._targetApp.action_group);
|
menu = new PopupMenu.RemoteMenu(this.actor, this._targetApp.menu, this._targetApp.action_group);
|
||||||
} else {
|
} else {
|
||||||
if (this.menu && !(this.menu instanceof PopupMenu.RemoteMenu))
|
if (this.menu && this.menu.isDummyQuitMenu)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// fallback to older menu
|
// fallback to older menu
|
||||||
menu = new PopupMenu.PopupMenu(this.actor, 0.0, St.Side.TOP, 0);
|
menu = new PopupMenu.PopupMenu(this.actor, 0.0, St.Side.TOP, 0);
|
||||||
|
menu.isDummyQuitMenu = true;
|
||||||
menu.addAction(_("Quit"), Lang.bind(this, function() {
|
menu.addAction(_("Quit"), Lang.bind(this, function() {
|
||||||
this._targetApp.request_quit();
|
this._targetApp.request_quit();
|
||||||
}));
|
}));
|
||||||
|
@ -112,7 +112,7 @@ const Button = new Lang.Class({
|
|||||||
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
||||||
|
|
||||||
if (dontCreateMenu)
|
if (dontCreateMenu)
|
||||||
this.menu = null;
|
this.menu = new PopupMenu.PopupDummyMenu(this.actor);
|
||||||
else
|
else
|
||||||
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
|
||||||
|
|
||||||
|
@ -1274,6 +1274,27 @@ const PopupMenu = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const PopupDummyMenu = new Lang.Class({
|
||||||
|
Name: 'PopupDummyMenu',
|
||||||
|
|
||||||
|
_init: function(sourceActor) {
|
||||||
|
this.sourceActor = sourceActor;
|
||||||
|
this.actor = sourceActor;
|
||||||
|
this.actor._delegate = this;
|
||||||
|
},
|
||||||
|
|
||||||
|
isChildMenu: function() {
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
open: function() { this.emit('open-state-changed', true); },
|
||||||
|
close: function() { this.emit('open-state-changed', false); },
|
||||||
|
destroy: function() {
|
||||||
|
this.emit('destroy');
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Signals.addSignalMethods(PopupDummyMenu.prototype);
|
||||||
|
|
||||||
const PopupSubMenu = new Lang.Class({
|
const PopupSubMenu = new Lang.Class({
|
||||||
Name: 'PopupSubMenu',
|
Name: 'PopupSubMenu',
|
||||||
Extends: PopupMenuBase,
|
Extends: PopupMenuBase,
|
||||||
|
Loading…
Reference in New Issue
Block a user