import gnome-shell-40.10-12.el9

i9 changed/i9c/gnome-shell-40.10-12.el9
MSVSphere Packaging Team 2 years ago
parent e689fb0a4a
commit 6270fb04b2

@ -0,0 +1,51 @@
From eea9b9a0dac494698a64892bab8d042e7d623c9f Mon Sep 17 00:00:00 2001
From: Cenk Uluisik <cenk.uluisik@googlemail.com>
Date: Sun, 6 Mar 2022 19:32:48 +0100
Subject: [PATCH] introspect: Add WindowsChanged signal
The screencast portal supports recording a single window,
and presents a list of open windows when that option is
selected. To allow updating that list when windows are
opened or closed, add a new "WindowsChanged" signal that
the portal can listen to.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2229>
---
data/dbus-interfaces/org.gnome.Shell.Introspect.xml | 6 ++++++
js/misc/introspect.js | 3 +++
2 files changed, 9 insertions(+)
diff --git a/data/dbus-interfaces/org.gnome.Shell.Introspect.xml b/data/dbus-interfaces/org.gnome.Shell.Introspect.xml
index 47fd7efdc2..cb19cfec56 100644
--- a/data/dbus-interfaces/org.gnome.Shell.Introspect.xml
+++ b/data/dbus-interfaces/org.gnome.Shell.Introspect.xml
@@ -18,6 +18,12 @@
-->
<signal name="RunningApplicationsChanged" />
+ <!--
+ WindowsChanged:
+ @short_description: Notifies when any window opens or closes
+ -->
+ <signal name="WindowsChanged" />
+
<!--
GetRunningApplications:
@short_description: Retrieves the description of all running applications
diff --git a/js/misc/introspect.js b/js/misc/introspect.js
index 45eee81ce3..8916804e7f 100644
--- a/js/misc/introspect.js
+++ b/js/misc/introspect.js
@@ -42,6 +42,9 @@ var IntrospectService = class {
this._syncRunningApplications();
});
+ tracker.connect('tracked-windows-changed',
+ () => this._dbusImpl.emit_signal('WindowsChanged', null));
+
this._syncRunningApplications();
this._senderChecker = new DBusSenderChecker(APP_ALLOWLIST);
--
2.38.1

@ -0,0 +1,48 @@
From 5aeb97faee1aba8f6d4cc2c613691a7e2c880ccc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Thu, 17 Nov 2022 15:21:42 +0100
Subject: [PATCH] layout: Initialize regions unconditionally
We currently initialize regions in all code paths except for the
greeter. But while there are no windows on the login screen, the
work area can still be used for positioning, for example for
notifications.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2546>
---
js/ui/layout.js | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 70ece6cab..c6712459a 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -649,18 +649,17 @@ var LayoutManager = GObject.registerClass({
reactive: true });
this.addChrome(this._coverPane);
+ // Force an update of the regions before we scale the UI group to
+ // get the correct allocation for the struts.
+ // Do this even when we don't animate on restart, so that maximized
+ // windows restore to the right size.
+ this._updateRegions();
+
if (Meta.is_restart()) {
- // On restart, we don't do an animation. Force an update of the
- // regions immediately so that maximized windows restore to the
- // right size taking struts into account.
- this._updateRegions();
+ // On restart, we don't do an animation.
} else if (Main.sessionMode.isGreeter) {
this.panelBox.translation_y = -this.panelBox.height;
} else {
- // We need to force an update of the regions now before we scale
- // the UI group to get the correct allocation for the struts.
- this._updateRegions();
-
this.keyboardBox.hide();
let monitor = this.primaryMonitor;
--
2.38.1

@ -0,0 +1,148 @@
From ea7e7acd45e428cc17306de2bf65730c90d7e118 Mon Sep 17 00:00:00 2001
From: Sebastian Keller <skeller@gnome.org>
Date: Mon, 23 May 2022 23:01:23 +0200
Subject: [PATCH] magnifier: Request window-relative coordinates for
focus/caret events
Absolute screen coordinates are impossible for Wayland clients to
provide, because the clients don't know where the window is positioned.
Some clients, such as the ones using GTK 3 were providing window
relative coordinates even when screen coordinates were requested,
while others, such as GTK 4 clients, were just returning an error for
caret events or also window-relative coordinates for focus events.
So for this to work on Wayland we have to request window-relative
coordinates and translate them to the current focus window.
To ensure the correct coordinates, we have to only consider events
coming from the current focus window. All other events are filtered out
now. As a side effect this also fixes the magnifier always jumping
to a terminal cursor whenever there was some output, even if the window
was not focused.
This also needs some special handling for events coming from the shell
itself, which should not be translated to the focus window either. As
another side effect this fixes another bug that was caused by these
events already including scaling and getting scaled again.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5509
Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2301>
---
js/ui/magnifier.js | 77 +++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 70 insertions(+), 7 deletions(-)
diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js
index 4c2e88f1a..9813664be 100644
--- a/js/ui/magnifier.js
+++ b/js/ui/magnifier.js
@@ -789,21 +789,81 @@ var ZoomRegion = class ZoomRegion {
}
}
+ _convertExtentsToScreenSpace(accessible, extents) {
+ const toplevelWindowTypes = new Set([
+ Atspi.Role.FRAME,
+ Atspi.Role.DIALOG,
+ Atspi.Role.WINDOW,
+ ]);
+
+ try {
+ let app = null;
+ let parentWindow = null;
+ let iter = accessible;
+ while (iter) {
+ if (iter.get_role() === Atspi.Role.APPLICATION) {
+ app = iter;
+ /* This is the last Accessible we are interested in */
+ break;
+ } else if (toplevelWindowTypes.has(iter.get_role())) {
+ parentWindow = iter;
+ }
+ iter = iter.get_parent();
+ }
+
+ /* We don't want to translate our own events to the focus window.
+ * They are also already scaled by clutter before being sent, so
+ * we don't need to do that here either. */
+ if (app && app.get_name() === 'gnome-shell')
+ return extents;
+
+ /* Only events from the focused widget of the focused window. Some
+ * widgets seem to claim to have focus when the window does not so
+ * check both. */
+ const windowActive = parentWindow &&
+ parentWindow.get_state_set().contains(Atspi.StateType.ACTIVE);
+ const accessibleFocused =
+ accessible.get_state_set().contains(Atspi.StateType.FOCUSED);
+ if (!windowActive || !accessibleFocused)
+ return null;
+ } catch (e) {
+ throw new Error(`Failed to validate parent window: ${e}`);
+ }
+
+ const focusWindowRect = global.display.focus_window?.get_frame_rect();
+ if (!focusWindowRect)
+ return null;
+
+ const scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
+ const screenSpaceExtents = new Atspi.Rect({
+ x: focusWindowRect.x + (scaleFactor * extents.x),
+ y: focusWindowRect.y + (scaleFactor * extents.y),
+ width: scaleFactor * extents.width,
+ height: scaleFactor * extents.height,
+ });
+
+ return screenSpaceExtents;
+ }
+
_updateFocus(caller, event) {
let component = event.source.get_component_iface();
if (!component || event.detail1 != 1)
return;
let extents;
try {
- extents = component.get_extents(Atspi.CoordType.SCREEN);
+ extents = component.get_extents(Atspi.CoordType.WINDOW);
+ extents = this._convertExtentsToScreenSpace(event.source, extents);
+ if (!extents)
+ return;
} catch (e) {
log(`Failed to read extents of focused component: ${e.message}`);
return;
}
- let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
- let [xFocus, yFocus] = [(extents.x + (extents.width / 2)) * scaleFactor,
- (extents.y + (extents.height / 2)) * scaleFactor];
+ const [xFocus, yFocus] = [
+ extents.x + (extents.width / 2),
+ extents.y + (extents.height / 2),
+ ];
if (this._xFocus !== xFocus || this._yFocus !== yFocus) {
[this._xFocus, this._yFocus] = [xFocus, yFocus];
@@ -817,14 +877,17 @@ var ZoomRegion = class ZoomRegion {
return;
let extents;
try {
- extents = text.get_character_extents(text.get_caret_offset(), 0);
+ extents = text.get_character_extents(text.get_caret_offset(),
+ Atspi.CoordType.WINDOW);
+ extents = this._convertExtentsToScreenSpace(text, extents);
+ if (!extents)
+ return;
} catch (e) {
log(`Failed to read extents of text caret: ${e.message}`);
return;
}
- let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
- let [xCaret, yCaret] = [extents.x * scaleFactor, extents.y * scaleFactor];
+ const [xCaret, yCaret] = [extents.x, extents.y];
// Ignore event(s) if the caret size is none (0x0). This happens a lot if
// the cursor offset can't be translated into a location. This is a work
--
2.38.1

@ -0,0 +1,281 @@
From be3a2303cf9ed4077955aaa9fae1fc4cbe2da277 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Tue, 24 Jan 2023 17:49:24 +0100
Subject: [PATCH] =?UTF-8?q?osk-layouts:=20Replace=20"SS"=20extra=20key=20w?=
=?UTF-8?q?ith=20"=E1=BA=9E"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The on-screen keyboard only handles a single keyval per key, so the
current upper-case version of the German "ß" ends up as "S" instead
of the expected "SS".
It is possible to change the keyboard code to emulate multiple key
presses/releases for that particular case, but then luckily a proper
upper-case form exists nowadays: "ẞ".
That seems more appropriate for a single key than a dedicated "SS"
key, so replace it in all layouts that include it. Anybody who prefers
the traditional "SS" can easily tap "S" twice.
Part-of:
<https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2612>
---
data/osk-layouts/cz.json | 2 +-
data/osk-layouts/de.json | 2 +-
data/osk-layouts/dk.json | 2 +-
data/osk-layouts/ee.json | 2 +-
data/osk-layouts/epo.json | 2 +-
data/osk-layouts/fi.json | 2 +-
data/osk-layouts/hr.json | 2 +-
data/osk-layouts/ke.json | 2 +-
data/osk-layouts/lt.json | 2 +-
data/osk-layouts/lv.json | 2 +-
data/osk-layouts/no.json | 2 +-
data/osk-layouts/pl.json | 2 +-
data/osk-layouts/ro.json | 2 +-
data/osk-layouts/se.json | 2 +-
data/osk-layouts/sk.json | 2 +-
data/osk-layouts/tr.json | 2 +-
data/osk-layouts/uk.json | 2 +-
data/osk-layouts/us.json | 2 +-
18 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/data/osk-layouts/cz.json b/data/osk-layouts/cz.json
index 9bad07402..526cb9cb6 100644
--- a/data/osk-layouts/cz.json
+++ b/data/osk-layouts/cz.json
@@ -246,7 +246,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś"
],
[
diff --git a/data/osk-layouts/de.json b/data/osk-layouts/de.json
index 751a85603..3b1cb34b2 100644
--- a/data/osk-layouts/de.json
+++ b/data/osk-layouts/de.json
@@ -208,7 +208,7 @@
],
[
"S",
- "SS",
+ "ẞ",
"Ś",
"Š"
],
diff --git a/data/osk-layouts/dk.json b/data/osk-layouts/dk.json
index 80df9ae65..7bc6feaf3 100644
--- a/data/osk-layouts/dk.json
+++ b/data/osk-layouts/dk.json
@@ -218,7 +218,7 @@
],
[
"S",
- "SS",
+ "ẞ",
"Ś",
"Š"
],
diff --git a/data/osk-layouts/ee.json b/data/osk-layouts/ee.json
index 5fd2f11fa..b42b0afc9 100644
--- a/data/osk-layouts/ee.json
+++ b/data/osk-layouts/ee.json
@@ -281,7 +281,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś",
"Ş"
],
diff --git a/data/osk-layouts/epo.json b/data/osk-layouts/epo.json
index 71f9ef8d9..d7257625f 100644
--- a/data/osk-layouts/epo.json
+++ b/data/osk-layouts/epo.json
@@ -316,7 +316,7 @@
],
[
"S",
- "SS",
+ "ẞ",
"Š",
"Ś",
"Ș",
diff --git a/data/osk-layouts/fi.json b/data/osk-layouts/fi.json
index 3ba5b567c..d664b0ec5 100644
--- a/data/osk-layouts/fi.json
+++ b/data/osk-layouts/fi.json
@@ -200,7 +200,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś"
],
[
diff --git a/data/osk-layouts/hr.json b/data/osk-layouts/hr.json
index ff0d1d09a..e4977796a 100644
--- a/data/osk-layouts/hr.json
+++ b/data/osk-layouts/hr.json
@@ -168,7 +168,7 @@
"S",
"Š",
"Ś",
- "SS"
+ "ẞ"
],
[
"D",
diff --git a/data/osk-layouts/ke.json b/data/osk-layouts/ke.json
index 9c3e93565..2bd5b09d0 100644
--- a/data/osk-layouts/ke.json
+++ b/data/osk-layouts/ke.json
@@ -217,7 +217,7 @@
],
[
"S",
- "SS"
+ "ẞ"
],
[
"D"
diff --git a/data/osk-layouts/lt.json b/data/osk-layouts/lt.json
index 7cd5352a8..a43ff9146 100644
--- a/data/osk-layouts/lt.json
+++ b/data/osk-layouts/lt.json
@@ -270,7 +270,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś",
"Ş"
],
diff --git a/data/osk-layouts/lv.json b/data/osk-layouts/lv.json
index bab6ae3d7..d72c93c25 100644
--- a/data/osk-layouts/lv.json
+++ b/data/osk-layouts/lv.json
@@ -268,7 +268,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś",
"Ş"
],
diff --git a/data/osk-layouts/no.json b/data/osk-layouts/no.json
index a70be9ca0..0df786853 100644
--- a/data/osk-layouts/no.json
+++ b/data/osk-layouts/no.json
@@ -218,7 +218,7 @@
],
[
"S",
- "SS",
+ "ẞ",
"Ś",
"Š"
],
diff --git a/data/osk-layouts/pl.json b/data/osk-layouts/pl.json
index 4b08cd5d3..8583bd64c 100644
--- a/data/osk-layouts/pl.json
+++ b/data/osk-layouts/pl.json
@@ -212,7 +212,7 @@
[
"S",
"Ś",
- "SS",
+ "ẞ",
"Š"
],
[
diff --git a/data/osk-layouts/ro.json b/data/osk-layouts/ro.json
index c690f4ecd..8d4676126 100644
--- a/data/osk-layouts/ro.json
+++ b/data/osk-layouts/ro.json
@@ -188,7 +188,7 @@
[
"S",
"Ș",
- "SS",
+ "ẞ",
"Ś",
"Š"
],
diff --git a/data/osk-layouts/se.json b/data/osk-layouts/se.json
index 513a0b897..0ebb756e7 100644
--- a/data/osk-layouts/se.json
+++ b/data/osk-layouts/se.json
@@ -245,7 +245,7 @@
"Ś",
"Š",
"Ş",
- "SS"
+ "ẞ"
],
[
"D",
diff --git a/data/osk-layouts/sk.json b/data/osk-layouts/sk.json
index 678232b82..a74ad0b61 100644
--- a/data/osk-layouts/sk.json
+++ b/data/osk-layouts/sk.json
@@ -269,7 +269,7 @@
[
"S",
"Š",
- "SS",
+ "ẞ",
"Ś",
"Ş"
],
diff --git a/data/osk-layouts/tr.json b/data/osk-layouts/tr.json
index b3786cc88..8243aafad 100644
--- a/data/osk-layouts/tr.json
+++ b/data/osk-layouts/tr.json
@@ -202,7 +202,7 @@
[
"S",
"Ş",
- "SS",
+ "ẞ",
"Ś",
"Š"
],
diff --git a/data/osk-layouts/uk.json b/data/osk-layouts/uk.json
index c36a723a0..19f5aa6d9 100644
--- a/data/osk-layouts/uk.json
+++ b/data/osk-layouts/uk.json
@@ -216,7 +216,7 @@
],
[
"S",
- "SS"
+ "ẞ"
],
[
"D"
diff --git a/data/osk-layouts/us.json b/data/osk-layouts/us.json
index 94dd6d3ad..dd0cd368f 100644
--- a/data/osk-layouts/us.json
+++ b/data/osk-layouts/us.json
@@ -216,7 +216,7 @@
],
[
"S",
- "SS"
+ "ẞ"
],
[
"D"
--
2.38.1

File diff suppressed because it is too large Load Diff

@ -0,0 +1,36 @@
From 187b851530f5e76786784ec9df235304c8ddede8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Wed, 4 Aug 2021 19:46:34 +0200
Subject: [PATCH] st/icon: Only get resource-scale after peeking theme node
If an actor is not on any stage view, then it doesn't have a valid
resource scale, which will hit an assert later.
When that is the case (for example when running headless), we expect
that there is no valid theme node (yet) either, so simply moving
the clutter_actor_get_resource_scale() call after peeking at the
theme node is enough to avoid the crash.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4522
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1935>
---
src/st/st-icon.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/st/st-icon.c b/src/st/st-icon.c
index 0405d85259..e4d6e05f94 100644
--- a/src/st/st-icon.c
+++ b/src/st/st-icon.c
@@ -462,6 +462,8 @@ st_icon_update (StIcon *icon)
resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (icon));
+ resource_scale = clutter_actor_get_resource_scale (CLUTTER_ACTOR (icon));
+
stage = clutter_actor_get_stage (CLUTTER_ACTOR (icon));
context = st_theme_context_get_for_stage (CLUTTER_STAGE (stage));
g_object_get (context, "scale-factor", &paint_scale, NULL);
--
2.31.1

@ -0,0 +1,64 @@
From a1d650ce2722fd154b047ce73fa23db205d823d2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Mon, 12 Dec 2022 13:04:11 +0100
Subject: [PATCH] window-tracker: Emit 'tracked-windows-changed' on title
changes
This means the screen share window view gets updated also when the title
of a window changes. This is important since it often changes shortly
after mapping, which would otherwise go unnoticed by
xdg-desktop-portal-gnome.
An example is launching Files and it showing up as 'Loading..', or
launching a terminal, and it not showing the proper title (current
directory), but some place holder that is never visible on the
application window.
Adding it to the window tracker instead of in introspect.js itself is
for convenience - there is no per window signal tracking there, and it
already listens to the signal emissions about changed windows.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2578>
---
src/shell-window-tracker.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index 991613ea3f..df357f81b7 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -524,6 +524,15 @@ on_wm_class_changed (MetaWindow *window,
tracked_window_changed (self, window);
}
+static void
+on_title_changed (MetaWindow *window,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
+ tracked_window_changed (self, window);
+}
+
static void
on_gtk_application_id_changed (MetaWindow *window,
GParamSpec *pspec,
@@ -554,6 +563,7 @@ track_window (ShellWindowTracker *self,
g_hash_table_insert (self->window_to_app, window, app);
g_signal_connect (window, "notify::wm-class", G_CALLBACK (on_wm_class_changed), self);
+ g_signal_connect (window, "notify::title", G_CALLBACK (on_title_changed), self);
g_signal_connect (window, "notify::gtk-application-id", G_CALLBACK (on_gtk_application_id_changed), self);
g_signal_connect (window, "unmanaged", G_CALLBACK (on_window_unmanaged), self);
@@ -586,6 +596,7 @@ disassociate_window (ShellWindowTracker *self,
_shell_app_remove_window (app, window);
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_wm_class_changed), self);
+ g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_title_changed), self);
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_gtk_application_id_changed), self);
g_signal_handlers_disconnect_by_func (window, G_CALLBACK (on_window_unmanaged), self);
--
2.38.1

@ -0,0 +1,44 @@
From e3823964957ba4dcc86b21db09b280b9299bc8cc Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 10 Feb 2023 15:07:50 +0100
Subject: [PATCH] window-tracker: Only emit ::tracked-windows-changed on title
changes
Since commit a1d650ce27, window title changes are listened for in the
ShellWindowTracker in order to emit ::tracked-windows-changed when
there are window title changes.
The rest of the things that happen in between (removing the window
from a ShellApp, possibly have it destroyed, and possibly creating a
new ShellApp to re-insert the window) are superfluous and even result
in the altTab switcher popup ending up confused about the applications
available.
Only emit the signal so changes can be followed on D-Bus, but avoid
the ShellApp fiddling otherwise.
Fixes: a1d650ce27 - window-tracker: Emit 'tracked-windows-changed' on title changes
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6385
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2634>
(cherry picked from commit 41c91c7a3b7f186720a0a518ef2211cb744421f3)
---
src/shell-window-tracker.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index bc14040d9b..01143dfd7f 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -524,7 +524,7 @@ on_title_changed (MetaWindow *window,
gpointer user_data)
{
ShellWindowTracker *self = SHELL_WINDOW_TRACKER (user_data);
- tracked_window_changed (self, window);
+ g_signal_emit (self, signals[TRACKED_WINDOWS_CHANGED], 0);
}
static void
--
2.31.1

@ -0,0 +1,92 @@
From ce8ac36613ef4fbb697fc9f6613844168c05a8d3 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Fri, 8 Oct 2021 11:08:17 -0400
Subject: [PATCH 1/2] unlockDialog: Don't create AuthDialog just to finish it
If the the unlock dialog gets finished before an auth dialog is
created, the code currently creates one just to tell it to finish.
This commit changes the code to skip creating the auth dialog in
that case.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1999>
---
js/ui/unlockDialog.js | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index c81c6184a9..d8c45f7510 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -884,7 +884,11 @@ var UnlockDialog = GObject.registerClass({
}
finish(onComplete) {
- this._ensureAuthPrompt();
+ if (!this._authPrompt) {
+ onComplete();
+ return;
+ }
+
this._authPrompt.finish(onComplete);
}
--
2.39.1
From 2a513d44e7b887b355d6b71cf88c4114a8b685f8 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Tue, 5 Oct 2021 11:01:19 -0400
Subject: [PATCH 2/2] unlockDialog: Properly reset auth prompt when showing it
If a user hits escape twice really fast when coming back to
their machine to unlock it, they made end up getting presented
with a non-functional unlock screen that doesn't show their
user icon and doesn't ask for a password.
This is because showPrompt assumes that if an auth prompt already
exists, it's ready to go. That may not be true, if it's in the
process of getting torn down at the time because it's in the middle
of a cancel animation.
This commit solves the problem by ensuring the auth prompt is always
in a fresh reset state before showing it.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1999>
---
js/ui/unlockDialog.js | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index d8c45f7510..00e3eef971 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -689,16 +689,14 @@ var UnlockDialog = GObject.registerClass({
}
_ensureAuthPrompt() {
- if (this._authPrompt)
- return;
-
- this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient,
- AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
- this._authPrompt.connect('failed', this._fail.bind(this));
- this._authPrompt.connect('cancelled', this._fail.bind(this));
- this._authPrompt.connect('reset', this._onReset.bind(this));
-
- this._promptBox.add_child(this._authPrompt);
+ if (!this._authPrompt) {
+ this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient,
+ AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
+ this._authPrompt.connect('failed', this._fail.bind(this));
+ this._authPrompt.connect('cancelled', this._fail.bind(this));
+ this._authPrompt.connect('reset', this._onReset.bind(this));
+ this._promptBox.add_child(this._authPrompt);
+ }
this._authPrompt.reset();
this._authPrompt.updateSensitivity(true);
--
2.39.1

@ -2,7 +2,7 @@
Name: gnome-shell
Version: 40.10
Release: 5%{?dist}
Release: 12%{?dist}
Summary: Window management and application launching for GNOME
License: GPLv2+
@ -26,6 +26,7 @@ Patch13: 0001-loginDialog-make-info-messages-themed.patch
Patch14: support-choicelist-extension.patch
Patch15: gdm-networking.patch
Patch16: login-screen-extensions.patch
Patch17: fix-resetting-auth-prompt.patch
# Misc.
Patch30: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch
@ -45,7 +46,15 @@ Patch43: restrict-dbus-callers.patch
Patch44: 0001-Revert-dash-Subtract-vertical-margins-from-availHeig.patch
Patch45: 0001-status-volume-Hide-sliders-initially.patch
Patch46: 0001-kbdA11yDialog-Use-MetaKeyboardA11yFlags.patch
Patch47: 0001-introspect-Allowlist-GNOME-portal.patch
Patch47: 0001-layout-Initialize-regions-unconditionally.patch
Patch48: 0001-introspect-Allowlist-GNOME-portal.patch
Patch49: 0001-introspect-Add-WindowsChanged-signal.patch
Patch50: 0001-window-tracker-Emit-tracked-windows-changed-on-title.patch
Patch51: 0001-magnifier-Request-window-relative-coordinates-for-fo.patch
Patch52: 0001-osk-layouts-Replace-SS-extra-key-with.patch
Patch53: 0001-po-Update-translations.patch
Patch54: 0001-st-icon-Only-get-resource-scale-after-peeking-theme-.patch
Patch55: 0001-window-tracker-Only-emit-tracked-windows-changed-on-.patch
%define eds_version 3.33.1
%define gnome_desktop_version 3.35.91
@ -268,13 +277,43 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
* Wed Mar 15 2023 MSVSphere Packaging Team <packager@msvsphere.ru> - 40.10-3
- Rebuilt for MSVSphere 9.1.
* Wed Feb 22 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-5
* Wed Feb 22 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-12
- Require xdg-desktop-portal-gnome
Resolves: #2172524
* Sat Dec 17 2022 Florian Müllner <fmuellner@redhat.com> - 40.10-4
* Mon Feb 13 2023 Jonas Ådahl <jadahl@redhat.com> - 40.10-11
- Backport 'WindowsChanged' regression fix
Resolves: #2168915
* Mon Feb 13 2023 Jonas Ådahl <jadahl@redhat.com> - 40.10-10
- Backport fix for starting headless
Resolves: #2116363
* Tue Feb 07 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-9
- Fix resetting auth prompt
Resolves: #2166226
* Wed Jan 25 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-8
- Update translations
Resolves: #2131801
* Wed Jan 25 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-7
- Use "ẞ" instead of "SS" in on-screen keyboard
Resolves: #2019420
* Wed Jan 18 2023 Florian Müllner <fmuellner@redhat.com> - 40.10-6
- Request window-relative coordinates in focus tracker
Resolves: #2009350
* Fri Dec 02 2022 Jonas Ådahl <jadahl@redhat.com> - 40.10-5
- Backport 'WindowsChanged' introspect signal
Related: #2148362
* Wed Nov 23 2022 Florian Müllner <fmuellner@redhat.com> - 40.10-4
- Fix struts on login screen
Resolves: #2145185
- Allow gnome portal to access introspection API
Resolves: #2144743
Resolves: #2079194
* Mon Jun 20 2022 Florian Müllner <fmuellner@redhat.com> - 40.10-3
- Fix keyboard a11y confirmation dialog

Loading…
Cancel
Save