From d4e9d8cc28a43ee07ee609fccc5e6af173c7aa9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Mon, 7 Oct 2019 15:02:17 +0200 Subject: [PATCH 2/2] magnifier: Use new cursor tracker API to keep wayland focus while hidden Since commit a2a8f0cda we force the focus surface of the meta-wayland-pointer to NULL while the pointer is hidden. This introduced an issue with the magnifier, where we use `set_pointer_visible` to hide the real cursor and show our own cursor at the correct position: Because the meta-wayland-pointer is still used to communicate with Wayland clients, the UI of the windows will not respond to mouse movement anymore as soon as the real cursor is hidden. To fix this, use the newly added API of MetaCursorTracker to switch back to the old behavior while the magnifier is hiding the system cursor. In the future and as a more correct fix, we might want to rewrite the magnifier so it doesn't have to hide the cursor and can simply show the default one (eg. by scaling the actual view instead of a clone of the view). Fixes https://gitlab.gnome.org/GNOME/mutter/issues/826 Depends on https://gitlab.gnome.org/GNOME/mutter/merge_requests/832 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/754 --- js/ui/magnifier.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index 0a935edef..a410bbb13 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -127,6 +127,7 @@ var Magnifier = class Magnifier { * Show the system mouse pointer. */ showSystemCursor() { + this._cursorTracker.set_keep_focus_while_hidden(false); this._cursorTracker.set_pointer_visible(true); } @@ -135,6 +136,7 @@ var Magnifier = class Magnifier { * Hide the system mouse pointer. */ hideSystemCursor() { + this._cursorTracker.set_keep_focus_while_hidden(true); this._cursorTracker.set_pointer_visible(false); } -- 2.23.0