summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2018-12-10 15:25:35 -0500
committerRay Strode <rstrode@redhat.com>2018-12-10 15:29:07 -0500
commita80e16d09e25114d6b56e003c418fd8321fd3958 (patch)
tree3f0c1c8efcdce48b9ec7036f2027dbcb23b71a35
parent616852cf2b1f235a5671013fbf3f1564be79ea1b (diff)
downloadgnome-shell-wip/rstrode/mouse-freeze-fix.tar.gz
popupMenu: block input events when menu is closingwip/rstrode/mouse-freeze-fix
At the moment gnome-shell can get really confused if a menu is fading out and gets clicked. It can lead to mouse pointer input getting stuck until the shell is restarted. This commit addresses the problem by ignoring input events that come in when the menu is closing.
-rw-r--r--js/ui/popupMenu.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index b0a919d1b..992084df7 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -123,12 +123,18 @@ var PopupBaseMenuItem = new Lang.Class({
},
_onButtonReleaseEvent(actor, event) {
+ if (this._parent && !this._parent.isOpen)
+ return Clutter.EVENT_STOP;
+
this.actor.remove_style_pseudo_class ('active');
this.activate(event);
return Clutter.EVENT_STOP;
},
_onTouchEvent(actor, event) {
+ if (this._parent && !this._parent.isOpen)
+ return Clutter.EVENT_STOP;
+
if (event.type() == Clutter.EventType.TOUCH_END) {
this.actor.remove_style_pseudo_class ('active');
this.activate(event);
@@ -141,6 +147,9 @@ var PopupBaseMenuItem = new Lang.Class({
},
_onKeyPressEvent(actor, event) {
+ if (this._parent && !this._parent.isOpen)
+ return Clutter.EVENT_STOP;
+
let state = event.get_state();
// if user has a modifier down (except capslock and numlock)