From e545ec59b9eda989b98a41ee685d3a41fa099ee1 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 22 Jul 2014 12:28:00 +0200 Subject: [PATCH] panelMenu: Interact to touch events No sequence checks are done, these UI elements promptly trigger a grab that will cancel ongoing touches and redirect later ones somewhere else, so that works as a barrier to multi-toggling. https://bugzilla.gnome.org/show_bug.cgi?id=733633 --- js/ui/panelMenu.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 07494d181..863e0d7ed 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -100,7 +100,7 @@ const Button = new Lang.Class({ accessible_name: nameText ? nameText : "", accessible_role: Atk.Role.MENU }); - this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); + this.actor.connect('event', Lang.bind(this, this._onEvent)); this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress)); this.actor.connect('notify::visible', Lang.bind(this, this._onVisibilityChanged)); @@ -131,11 +131,12 @@ const Button = new Lang.Class({ } }, - _onButtonPress: function(actor, event) { - if (!this.menu) - return Clutter.EVENT_PROPAGATE; + _onEvent: function(actor, event) { + if (this.menu && + (event.type() == Clutter.EventType.TOUCH_BEGIN || + event.type() == Clutter.EventType.BUTTON_PRESS)) + this.menu.toggle(); - this.menu.toggle(); return Clutter.EVENT_PROPAGATE; },