[gnome-shell/wip/message-tray-menu: 68/109] popupMenu: Allow PopupMenuManager to take an existing grab helper
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/message-tray-menu: 68/109] popupMenu: Allow PopupMenuManager to take an existing grab helper
- Date: Thu, 9 May 2013 15:42:04 +0000 (UTC)
commit 38a4371a2f2786615aa6bca073f60fb4c5d87b45
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Fri Apr 19 11:52:55 2013 -0400
popupMenu: Allow PopupMenuManager to take an existing grab helper
We want to use PopupMenuManager for the message tray menu, but in
order to prevent interference with having two GrabHelpers manage
the tray, simply modify PopupMenuManager to allow the existing
GrabHelper used in the message tray.
https://bugzilla.gnome.org/show_bug.cgi?id=699272
js/ui/appDisplay.js | 2 +-
js/ui/panel.js | 2 +-
js/ui/popupMenu.js | 20 ++++++++++++++++----
3 files changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index bcfb57a..c7b84d2 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -693,7 +693,7 @@ const AppIcon = new Lang.Class({
this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu));
this._menu = null;
- this._menuManager = new PopupMenu.PopupMenuManager(this);
+ this._menuManager = new PopupMenu.PopupMenuManager({ actor: this.actor });
this._draggable = DND.makeDraggable(this.actor);
this._draggable.connect('drag-begin', Lang.bind(this,
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 1aa2d8c..64e424a 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -957,7 +957,7 @@ const Panel = new Lang.Class({
this.statusArea = {};
- this.menuManager = new PopupMenu.PopupMenuManager(this, { keybindingMode:
Shell.KeyBindingMode.TOPBAR_POPUP });
+ this.menuManager = new PopupMenu.PopupMenuManager({ actor: this.actor, keybindingMode:
Shell.KeyBindingMode.TOPBAR_POPUP });
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
this.actor.add_actor(this._leftBox);
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index cd81f10..56cb851 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -1977,9 +1977,19 @@ const RemoteMenu = new Lang.Class({
const PopupMenuManager = new Lang.Class({
Name: 'PopupMenuManager',
- _init: function(owner, grabParams) {
- this._owner = owner;
- this._grabHelper = new GrabHelper.GrabHelper(owner.actor, grabParams);
+ _init: function(params) {
+ params = Params.parse(params, { grabHelper: null,
+ actor: null }, true);
+
+ if (params.grabHelper) {
+ this._grabHelper = params.grabHelper;
+ } else {
+ let actor = params.actor;
+ delete params.actor;
+ delete params.grabHelper;
+ this._grabHelper = new GrabHelper.GrabHelper(actor, params);
+ }
+
this._menus = [];
},
@@ -2037,7 +2047,7 @@ const PopupMenuManager = new Lang.Class({
get activeMenu() {
let firstGrab = this._grabHelper.grabStack[0];
- if (firstGrab)
+ if (firstGrab && firstGrab.actor && firstGrab.actor._delegate)
return firstGrab.actor._delegate;
else
return null;
@@ -2079,6 +2089,8 @@ const PopupMenuManager = new Lang.Class({
return false;
let isChildMenu = this._grabHelper.grabStack.some(function(grab) {
+ if (!grab || !grab.actor || !grab.actor._delegate)
+ return false;
let existingMenu = grab.actor._delegate;
return existingMenu.isChildMenu(menu);
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]