55 lines
1.9 KiB
Diff
55 lines
1.9 KiB
Diff
|
From d4e9d8cc28a43ee07ee609fccc5e6af173c7aa9b 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 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
|
||
|
|