diff --git a/fix-stuck-cover-pane.patch b/fix-stuck-cover-pane.patch new file mode 100644 index 0000000..8320fc4 --- /dev/null +++ b/fix-stuck-cover-pane.patch @@ -0,0 +1,124 @@ +From e69da36095d5093c1c7bec7a9c96c079c0b837f9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 13 Apr 2022 20:57:05 +0200 +Subject: [PATCH 1/3] layout: Make sure startup animation completes + +We currently complete the animation using an onComplete handler, +which only runs if the corresponding transition was stopped when +finished. + +While it is unexpected that the transition is interrupted, it can +apparently happen under some circumstances (like VMs with qlx). +The consequences of that are pretty bad, mainly due to the cover +pane that prevents input during the animation not getting removed. + +Address this by always completing the animation when the transition +is stopped, regardless of whether it completed or not. + +https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337 + +Part-of: +--- + js/ui/layout.js | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/js/ui/layout.js b/js/ui/layout.js +index 0f279f86c..fe91ff186 100644 +--- a/js/ui/layout.js ++++ b/js/ui/layout.js +@@ -740,14 +740,14 @@ var LayoutManager = GObject.registerClass({ + translation_y: 0, + duration: STARTUP_ANIMATION_TIME, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, +- onComplete: () => this._startupAnimationComplete(), ++ onStopped: () => this._startupAnimationComplete(), + }); + } + + _startupAnimationSession() { +- const onComplete = () => this._startupAnimationComplete(); ++ const onStopped = () => this._startupAnimationComplete(); + if (Main.sessionMode.hasOverview) { +- Main.overview.runStartupAnimation(onComplete); ++ Main.overview.runStartupAnimation(onStopped); + } else { + this.uiGroup.ease({ + scale_x: 1, +@@ -755,7 +755,7 @@ var LayoutManager = GObject.registerClass({ + opacity: 255, + duration: STARTUP_ANIMATION_TIME, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, +- onComplete, ++ onStopped, + }); + } + } +-- +2.35.1 + + +From dd28832dcdb7ef390cc444ec046cfafce56ebc81 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 13 Apr 2022 20:14:47 +0200 +Subject: [PATCH 2/3] background: Pass cancellable when querying file info + +Otherwise it is possible that the operation completes successfully +after the background has been destroyed, which will throw a warning +(caused by accessing the this._fileWatches object after it has been +nulled). + +https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337 + +Part-of: +--- + js/ui/background.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/ui/background.js b/js/ui/background.js +index 198194a50..825fee0d9 100644 +--- a/js/ui/background.js ++++ b/js/ui/background.js +@@ -492,7 +492,7 @@ var Background = GObject.registerClass({ + Gio.FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, + Gio.FileQueryInfoFlags.NONE, + 0, +- null); ++ this._cancellable); + } catch (e) { + this._setLoaded(); + return; +-- +2.35.1 + + +From ef74f922d65d38718b5d8cb13bc43f129947ffc0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 13 Apr 2022 20:51:55 +0200 +Subject: [PATCH 3/3] background: Do not queue idle when cancelled + +A cancelled cancellable means that the background was destroyed, +so we shouldn't queue an idle or emit the 'loaded' signal anymore. + +https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5337 + +Part-of: +--- + js/ui/background.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/js/ui/background.js b/js/ui/background.js +index 825fee0d9..a68f23301 100644 +--- a/js/ui/background.js ++++ b/js/ui/background.js +@@ -333,6 +333,8 @@ var Background = GObject.registerClass({ + return; + + this.isLoaded = true; ++ if (this._cancellable?.is_cancelled()) ++ return; + + let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { + this.emit('loaded'); +-- +2.35.1 + diff --git a/gnome-shell.spec b/gnome-shell.spec index 4b971d3..e734a42 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -27,6 +27,9 @@ Patch80001: 0001-Avoid-double-slash-in-path-when-creating-default-fol.patch # Fix p handling # https://bugzilla.redhat.com/show_bug.cgi?id=2073406 Patch80002: 0001-switchMonitor-Fix-switching-configuration.patch +# Fix stuck cover pane +# https://bugzilla.redhat.com/show_bug.cgi?id=2063156 +Patch80003: fix-stuck-cover-pane.patch %define eds_version 3.33.1 %define gnome_desktop_version 3.35.91 @@ -243,6 +246,7 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %changelog * Mon Apr 18 2022 Florian Müllner - 42.0-3 - Fix monitor config switches with p (#2073406) +- Fix stuck cover pane after startup animation (#2063156) * Tue Mar 15 2022 Adam Williamson - 42.0-2 - Backport MR #2242 to fix new user default folder creation (#2064473)