From 3ca93417f8ba7030d83e69664a06d8a7ee635891 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Sat, 12 Oct 2019 08:54:14 -0700 Subject: [PATCH] Backport MR #754 to fix #1749433 --- ...n-showSystemCursor-instead-of-set_po.patch | 29 ++++++++++ ...w-cursor-tracker-API-to-keep-wayland.patch | 54 +++++++++++++++++++ gnome-shell.spec | 13 ++++- 3 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 0001-magnifier-Use-own-showSystemCursor-instead-of-set_po.patch create mode 100644 0002-magnifier-Use-new-cursor-tracker-API-to-keep-wayland.patch diff --git a/0001-magnifier-Use-own-showSystemCursor-instead-of-set_po.patch b/0001-magnifier-Use-own-showSystemCursor-instead-of-set_po.patch new file mode 100644 index 0000000..ca146d5 --- /dev/null +++ b/0001-magnifier-Use-own-showSystemCursor-instead-of-set_po.patch @@ -0,0 +1,29 @@ +From 6bd7447b9b48a5d8db9d8648c71dbe699164579f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= +Date: Mon, 7 Oct 2019 15:00:19 +0200 +Subject: [PATCH 1/2] magnifier: Use own showSystemCursor() instead of + set_pointer_visible() + +We already have our own function to show the system cursor, use it! + +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/754 +--- + js/ui/magnifier.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js +index 0ec30ee00..0a935edef 100644 +--- a/js/ui/magnifier.js ++++ b/js/ui/magnifier.js +@@ -169,7 +169,7 @@ var Magnifier = class Magnifier { + // Make sure system mouse pointer is shown when all zoom regions are + // invisible. + if (!activate) +- this._cursorTracker.set_pointer_visible(true); ++ this.showSystemCursor(); + + // Notify interested parties of this change + this.emit('active-changed', activate); +-- +2.23.0 + diff --git a/0002-magnifier-Use-new-cursor-tracker-API-to-keep-wayland.patch b/0002-magnifier-Use-new-cursor-tracker-API-to-keep-wayland.patch new file mode 100644 index 0000000..b58a4b8 --- /dev/null +++ b/0002-magnifier-Use-new-cursor-tracker-API-to-keep-wayland.patch @@ -0,0 +1,54 @@ +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 + diff --git a/gnome-shell.spec b/gnome-shell.spec index 8c4d092..9b63396 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 3.34.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -17,6 +17,14 @@ Patch1: gnome-shell-favourite-apps-firefox.patch Patch2: 0001-endSessionDialog-Immediately-add-buttons-to-the-dial.patch Patch3: 0002-endSessionDialog-Support-rebooting-into-the-bootload.patch +# https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/754 +# Fixes accessibility cursor zoom bug: +# https://bugzilla.redhat.com/show_bug.cgi?id=1749433 +# https://gitlab.gnome.org/GNOME/mutter/issues/826 +# Depends on a corresponding patch in mutter 3.34.1-2+ +Patch4: 0001-magnifier-Use-own-showSystemCursor-instead-of-set_po.patch +Patch5: 0002-magnifier-Use-new-cursor-tracker-API-to-keep-wayland.patch + %define libcroco_version 0.6.8 %define eds_version 3.33.1 %define gnome_desktop_version 3.33.4 @@ -211,6 +219,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_mandir}/man1/gnome-shell.1* %changelog +* Sat Oct 12 2019 Adam Williamson - 3.34.1-2 +- Backport MR #754 to fix #1749433 + * Wed Oct 09 2019 Florian Müllner - 3.34.1-1 - Update to 3.34.1