Blob Blame History Raw
From 39fe94ecf3221d60c0a1197e2aaaf904ee99fdb5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
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 e9fa4c5d0..49fb321d3 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.24.1