[gnome-shell] messageTray: Allow opening the context menu on long press
- From: Adel Gadllah <agadllah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] messageTray: Allow opening the context menu on long press
- Date: Sat, 16 Feb 2013 18:37:37 +0000 (UTC)
commit 186bd156ddda3fb9b9bf12c1e44b67b0bc24e222
Author: Adel Gadllah <adel gadllah gmail com>
Date: Fri Feb 15 16:09:44 2013 +0100
messageTray: Allow opening the context menu on long press
Right click does not work for touch devices, so support opening the menu
using long press as well.
https://bugzilla.gnome.org/show_bug.cgi?id=693887
js/ui/messageTray.js | 49 +++++++++++++++++++++++++++++++------------------
1 files changed, 31 insertions(+), 18 deletions(-)
---
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 8af765d..512cb53 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -1741,25 +1741,24 @@ const MessageTray = new Lang.Class({
this._updateNoMessagesLabel();
this._contextMenu = new MessageTrayContextMenu(this);
- this._grabHelper.addActor(this._contextMenu.actor);
- this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) {
- let button = event.get_button();
- if (button == 3) {
- let [stageX, stageY] = event.get_coords();
- this._lock();
- this._contextMenu.setPosition(Math.round(stageX), Math.round(stageY));
- this._grabHelper.grab({ actor: this._contextMenu.actor,
- grabFocus: true,
- onUngrab: Lang.bind(this, function () {
- this._unlock();
- this._contextMenu.close();
- })
- });
- this._contextMenu.open();
- }
- else {
- this._grabHelper.ungrab({ actor: this._contextMenu.actor });
+
+ let clickAction = new Clutter.ClickAction();
+ this.actor.add_action(clickAction);
+
+ clickAction.connect('clicked', Lang.bind(this, function(action) {
+ let button = action.get_button();
+ if (button == 3)
+ this._openContextMenu();
+ }));
+
+ clickAction.connect('long-press', Lang.bind(this, function(action, actor, state) {
+ switch (state) {
+ case Clutter.LongPressState.QUERY:
+ return true;
+ case Clutter.LongPressState.ACTIVATE:
+ this._openContextMenu();
}
+ return false;
}));
this._contextMenu.actor.hide();
@@ -1767,6 +1766,20 @@ const MessageTray = new Lang.Class({
},
+ _openContextMenu: function () {
+ let [x, y, mask] = global.get_pointer();
+ this._lock();
+ this._contextMenu.setPosition(Math.round(x), Math.round(y));
+ this._grabHelper.grab({ actor: this._contextMenu.actor,
+ grabFocus: true,
+ onUngrab: Lang.bind(this, function () {
+ this._contextMenu.close();
+ this._unlock();
+ })
+ });
+ this._contextMenu.open();
+ },
+
close: function() {
this._escapeTray();
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]