From 2339c39ae6cfa16e6440c6c06df38ca17e1586d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 16 Jun 2017 17:08:07 +0200 Subject: [PATCH] system: Emulate click action button release Since commit 2c070d38, we add a ClickAction to the visible AltSwitcher button to track long-presses. As a result, we now have two components that will grab and ungrab the pointer for the button, so to make sure we don't end up with a stuck grab, we need to release the second's component grab when the first activates. Currently we only drop the StButton grab on long-press, we also need to cancel any initiated long-press on click. https://bugzilla.gnome.org/show_bug.cgi?id=781738 --- js/ui/status/system.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/ui/status/system.js b/js/ui/status/system.js index 92ccf4c48..8f99865e6 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -42,9 +42,15 @@ const AltSwitcher = new Lang.Class({ _init: function(standard, alternate) { this._standard = standard; this._standard.connect('notify::visible', Lang.bind(this, this._sync)); + if (this._standard instanceof St.Button) + this._standard.connect('clicked', + () => { this._clickAction.release(); }); this._alternate = alternate; this._alternate.connect('notify::visible', Lang.bind(this, this._sync)); + if (this._alternate instanceof St.Button) + this._alternate.connect('clicked', + () => { this._clickAction.release(); }); this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent));