Update to 42.alpha

This commit is contained in:
David King 2022-01-14 15:26:33 +00:00
parent 4a46ac2e64
commit f2ebbcf90a
11 changed files with 9 additions and 533 deletions

1
.gitignore vendored
View File

@ -198,3 +198,4 @@ gnome-shell-2.31.5.tar.bz2
/gnome-shell-41.rc.tar.xz
/gnome-shell-41.rc.1.tar.xz
/gnome-shell-41.0.tar.xz
/gnome-shell-42.alpha.tar.xz

View File

@ -1,50 +0,0 @@
From 380d2db1d9047ecffcef7d78f00184963b403efc Mon Sep 17 00:00:00 2001
From: Christian Hergert <chergert@redhat.com>
Date: Wed, 29 Sep 2021 12:46:45 -0700
Subject: [PATCH] inputMethod: Clear preeditStr before reset
Previously, these were performed in a different order before GNOME 41.
During some other changes they were swapped.
However, this causes both GTK 3 and GTK 4 applications to scroll to
incorrect positions from the preedit change.
Fixes #4647
Fixes GNOME/gtk#4289
Fixes GNOME/gnome-builder#1536
Fixes GNOME/gnome-builder#1531
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1993>
---
js/misc/inputMethod.js | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 25b02e35b..1f9eaee7a 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -179,16 +179,16 @@ class InputMethod extends Clutter.InputMethod {
}
vfunc_reset() {
+ if (this._context) {
+ this._context.reset();
+ this._emitRequestSurrounding();
+ }
+
if (this._preeditStr !== null) {
// Unset any preedit text
this.set_preedit_text(null, 0, Clutter.PreeditResetMode.CLEAR);
this._preeditStr = null;
}
-
- if (this._context) {
- this._context.reset();
- this._emitRequestSurrounding();
- }
}
vfunc_set_cursor_location(rect) {
--
2.31.1

View File

@ -1,29 +0,0 @@
From 286cfdc6d48dc4315df54d29d7d16b5198d92a56 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 29 Oct 2021 16:41:55 +0200
Subject: [PATCH 1/3] inputMethod: Equate empty preedit string to null
If we get '' from the IM as the preedit string, it is pretty safe
to handle it as "no preedit" altogether.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
---
js/misc/inputMethod.js | 2 ++
1 file changed, 2 insertions(+)
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 1f9eaee7a..7de7540d3 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -111,6 +111,8 @@ class InputMethod extends Clutter.InputMethod {
return;
let preedit = text.get_text();
+ if (preedit === '')
+ preedit = null;
if (visible)
this.set_preedit_text(preedit, pos, mode);
--
2.33.1

View File

@ -1,62 +0,0 @@
From 2bcc6c09edcdfa9929e8c3b4c3ce7ec652b0ad46 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Wed, 22 Sep 2021 23:37:16 +0200
Subject: [PATCH] st/icon: Ensure icons are updated if theme node is invalid
Icons that are changed while an actor is not mapped may not have a theme
node associated with, and thus we'd end up not updating them at all.
In fact we return early in st_update_icon(), and this was not an issue
until commit 0b1dfbf6f3f, because we'd end up to update the icon anyways
once the style was changed (and so with a valid theme node), but since
such change we might not updating the icon if no theme detail changed.
To prevent this, add a flag to require an icon update when the theme
changed, if no successfully update happened earlier.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4568
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1983>
---
src/st/st-icon.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/st/st-icon.c b/src/st/st-icon.c
index 71ba1b6b3..876aa9bbb 100644
--- a/src/st/st-icon.c
+++ b/src/st/st-icon.c
@@ -59,6 +59,7 @@ struct _StIconPrivate
gint theme_icon_size; /* icon size from theme node */
gint icon_size; /* icon size we are using */
GIcon *fallback_gicon;
+ gboolean needs_update;
StIconColors *colors;
@@ -253,7 +254,7 @@ st_icon_style_changed (StWidget *widget)
should_update |= st_icon_update_icon_size (self);
- if (should_update)
+ if (priv->needs_update || should_update)
st_icon_update (self);
ST_WIDGET_CLASS (st_icon_parent_class)->style_changed (widget);
@@ -487,6 +488,8 @@ st_icon_update (StIcon *icon)
return;
}
+ priv->needs_update = TRUE;
+
theme_node = st_widget_peek_theme_node (ST_WIDGET (icon));
if (theme_node == NULL)
return;
@@ -525,6 +528,7 @@ st_icon_update (StIcon *icon)
priv->icon_size / paint_scale,
paint_scale,
resource_scale);
+ priv->needs_update = FALSE;
if (priv->pending_texture)
{
--
2.32.0

View File

@ -1,94 +0,0 @@
From de6604e4c7ddfcfd5fc089c462ecd29316b44189 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
Date: Tue, 12 Oct 2021 15:15:50 -0400
Subject: [PATCH] st-password-entry: Fix crash when DConf changes after StEntry
is destroyed
commit 8721c5db37c1409dbb806c915e6c077e1c4b8c6b made StPasswordEntry
honor the 'disable-show-password' setting.
Unfortunately, it introduced a lifecycle bug where the signal handler
for noticing setting changes can out live the entry itself.
This commit fixes the problem by using g_signal_connect_object
---
src/st/st-password-entry.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/st/st-password-entry.c b/src/st/st-password-entry.c
index 3dd8c6c1c..d17eeefa4 100644
--- a/src/st/st-password-entry.c
+++ b/src/st/st-password-entry.c
@@ -202,64 +202,65 @@ on_disable_show_password_changed (GObject *object,
static void
clutter_text_password_char_cb (GObject *object,
GParamSpec *pspec,
gpointer user_data)
{
StPasswordEntry *entry = ST_PASSWORD_ENTRY (user_data);
ClutterActor *clutter_text;
clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry));
if (clutter_text_get_password_char (CLUTTER_TEXT (clutter_text)) == 0)
st_password_entry_set_password_visible (entry, TRUE);
else
st_password_entry_set_password_visible (entry, FALSE);
}
static void
st_password_entry_init (StPasswordEntry *entry)
{
StPasswordEntryPrivate *priv = ST_PASSWORD_ENTRY_PRIV (entry);
ClutterActor *clutter_text;
priv->peek_password_icon = g_object_new (ST_TYPE_ICON,
"style-class", "peek-password",
"icon-name", "eye-not-looking-symbolic",
NULL);
st_entry_set_secondary_icon (ST_ENTRY (entry), priv->peek_password_icon);
st_password_entry_set_show_peek_icon (entry, TRUE);
- g_signal_connect (st_settings_get (),
- "notify::disable-show-password",
- G_CALLBACK (on_disable_show_password_changed),
- entry);
+ g_signal_connect_object (st_settings_get (),
+ "notify::disable-show-password",
+ G_CALLBACK (on_disable_show_password_changed),
+ entry,
+ 0);
clutter_text = st_entry_get_clutter_text (ST_ENTRY (entry));
clutter_text_set_password_char (CLUTTER_TEXT (clutter_text), BLACK_CIRCLE);
st_entry_set_input_purpose (ST_ENTRY (entry), CLUTTER_INPUT_CONTENT_PURPOSE_PASSWORD);
g_signal_connect (clutter_text, "notify::password-char",
G_CALLBACK (clutter_text_password_char_cb), entry);
}
/**
* st_password_entry_new:
*
* Create a new #StPasswordEntry.
*
* Returns: a new #StEntry
*/
StEntry*
st_password_entry_new (void)
{
return ST_ENTRY (g_object_new (ST_TYPE_PASSWORD_ENTRY, NULL));
}
/**
* st_password_entry_set_show_peek_icon:
* @entry: a #StPasswordEntry
* @value: %TRUE to show the peek-icon in the entry
*
* Sets whether to show or hide the peek-icon in the password entry. If %TRUE,
* a icon button for temporarily unmasking the password will be shown at the
--
2.31.1

View File

@ -1,90 +0,0 @@
From 5d5bfe492cd81a081e80660761bac137d38133bd 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 370385abc..f4c76c41a 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -845,61 +845,65 @@ var UnlockDialog = GObject.registerClass({
}
if (this._gdmClient) {
this._gdmClient = null;
delete this._gdmClient;
}
if (this._userLoadedId) {
this._user.disconnect(this._userLoadedId);
this._userLoadedId = 0;
}
if (this._userSwitchEnabledId) {
this._screenSaverSettings.disconnect(this._userSwitchEnabledId);
this._userSwitchEnabledId = 0;
}
}
_updateUserSwitchVisibility() {
this._otherUserButton.visible = this._userManager.can_switch() &&
this._screenSaverSettings.get_boolean('user-switch-enabled') &&
!this._lockdownSettings.get_boolean('disable-user-switching');
}
cancel() {
if (this._authPrompt)
this._authPrompt.cancel();
}
finish(onComplete) {
- this._ensureAuthPrompt();
+ if (!this._authPrompt) {
+ onComplete();
+ return;
+ }
+
this._authPrompt.finish(onComplete);
}
open(timestamp) {
this.show();
if (this._isModal)
return true;
let modalParams = {
timestamp,
actionMode: Shell.ActionMode.UNLOCK_SCREEN,
};
if (!Main.pushModal(this, modalParams))
return false;
this._isModal = true;
return true;
}
activate() {
this._showPrompt();
}
popModal(timestamp) {
if (this._isModal) {
Main.popModal(this, timestamp);
this._isModal = false;
}
--
2.32.0

View File

@ -1,38 +0,0 @@
From 047691b0d3471630ec80e32f371291dd2ef02419 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 29 Oct 2021 16:43:15 +0200
Subject: [PATCH 2/3] inputMethod: Do not communicate preedit text change on
reset
This is now done in the ClutterInputFocus for us, since
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1940. There
is no need to duplicate this call, and it happens to cause undesired
scrolling to content in some cases when this reset happens during
a change in the IM focused client state.
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4647
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
---
js/misc/inputMethod.js | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 7de7540d3..71dff84f5 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -186,11 +186,7 @@ class InputMethod extends Clutter.InputMethod {
this._emitRequestSurrounding();
}
- if (this._preeditStr !== null) {
- // Unset any preedit text
- this.set_preedit_text(null, 0, Clutter.PreeditResetMode.CLEAR);
- this._preeditStr = null;
- }
+ this._preeditStr = null;
}
vfunc_set_cursor_location(rect) {
--
2.33.1

View File

@ -1,109 +0,0 @@
From ceee53aa0a40f3bf81945fabb4ecdd70d11143a4 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 f4c76c41a..3ef6aa90f 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -649,70 +649,68 @@ var UnlockDialog = GObject.registerClass({
}
_updateBackgroundEffects() {
const themeContext = St.ThemeContext.get_for_stage(global.stage);
for (const widget of this._backgroundGroup) {
const effect = widget.get_effect('blur');
if (effect) {
effect.set({
brightness: BLUR_BRIGHTNESS,
sigma: BLUR_SIGMA * themeContext.scale_factor,
});
}
}
}
_updateBackgrounds() {
for (let i = 0; i < this._bgManagers.length; i++)
this._bgManagers[i].destroy();
this._bgManagers = [];
this._backgroundGroup.destroy_all_children();
for (let i = 0; i < Main.layoutManager.monitors.length; i++)
this._createBackground(i);
this._updateBackgroundEffects();
}
_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);
}
_maybeDestroyAuthPrompt() {
let focus = global.stage.key_focus;
if (focus === null ||
(this._authPrompt && this._authPrompt.contains(focus)) ||
(this._otherUserButton && focus === this._otherUserButton))
this.grab_key_focus();
if (this._authPrompt) {
this._authPrompt.destroy();
this._authPrompt = null;
}
}
_showClock() {
if (this._activePage === this._clock)
return;
this._activePage = this._clock;
this._adjustment.ease(0, {
duration: CROSSFADE_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => this._maybeDestroyAuthPrompt(),
});
}
--
2.32.0

View File

@ -1,30 +0,0 @@
From 01775609525b12de752a2f7ebac88baee9b041d3 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 29 Oct 2021 16:46:18 +0200
Subject: [PATCH 3/3] inputMethod: Do not reset invisible preedit on focus_out
If the preedit is in invisible state, the last preedit string that
was sent around is already null, so there is no need to clear the preedit
in that case.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011>
---
js/misc/inputMethod.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/js/misc/inputMethod.js b/js/misc/inputMethod.js
index 71dff84f5..8c3cd61ae 100644
--- a/js/misc/inputMethod.js
+++ b/js/misc/inputMethod.js
@@ -167,7 +167,7 @@ class InputMethod extends Clutter.InputMethod {
if (this._context)
this._context.focus_out();
- if (this._preeditStr) {
+ if (this._preeditStr && this._preeditVisible) {
// Unset any preedit text
this.set_preedit_text(null, 0, this._preeditCommitMode);
this._preeditStr = null;
--
2.33.1

View File

@ -1,50 +1,24 @@
%global tarball_version %%(echo %{version} | tr '~' '.')
Name: gnome-shell
Version: 41.0
Release: 8%{?dist}
Version: 42~alpha
Release: 1%{?dist}
Summary: Window management and application launching for GNOME
License: GPLv2+
URL: https://wiki.gnome.org/Projects/GnomeShell
Source0: http://download.gnome.org/sources/gnome-shell/41/%{name}-%{tarball_version}.tar.xz
Source0: https://download.gnome.org/sources/gnome-shell/42/%{name}-%{tarball_version}.tar.xz
# Replace Epiphany with Firefox in the default favourite apps list
Patch10001: gnome-shell-favourite-apps-firefox.patch
# Backported from upstream
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1993
Patch20001: 0001-inputMethod-Clear-preeditStr-before-reset.patch
# Fix wrong OSD icons displaying after the first
# https://bugzilla.redhat.com/show_bug.cgi?id=2011872
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1983
Patch30001: 0001-st-icon-Ensure-icons-are-updated-if-theme-node-is-in.patch
# Some users might have a broken PAM config, so we really need this
# downstream patch to stop trying on configuration errors.
Patch40001: 0001-gdm-Work-around-failing-fingerprint-auth.patch
# Fix crash if settings get updated after an entry is destroyed (#2009637)
Patch50001: 0001-st-password-entry-Fix-crash-when-DConf-changes-after.patch
# Fix problem where lock screen gets confused if you hit escape too fast too many times
# when coming back from screen blank
Patch60001: 0001-unlockDialog-Don-t-create-AuthDialog-just-to-finish-.patch
Patch60002: 0002-unlockDialog-Properly-reset-auth-prompt-when-showing.patch
# Work around crashy tear down
Patch60003: 0001-main-Leak-the-GJS-context-and-ShellGlobal.patch
# More fixes for cursor bouncing around in text editors
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4647
# https://bugzilla.redhat.com/show_bug.cgi?id=2017192
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2011
Patch70001: 0001-inputMethod-Equate-empty-preedit-string-to-null.patch
Patch70002: 0002-inputMethod-Do-not-communicate-preedit-text-change-o.patch
Patch70003: 0003-inputMethod-Do-not-reset-invisible-preedit-on-focus_.patch
%define eds_version 3.33.1
%define gnome_desktop_version 3.35.91
%define glib2_version 2.56.0
@ -149,7 +123,7 @@ Requires: python3%{_isa}
Requires: switcheroo-control
# needed for clocks/weather integration
Requires: geoclue2-libs%{?_isa}
Requires: libgweather%{?_isa} >= %{libgweather_version}
Requires: libgweather4%{?_isa} >= %{libgweather_version}
# needed for thunderbolt support
Requires: bolt%{?_isa}
# Needed for launching flatpak apps etc
@ -258,6 +232,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
%{_mandir}/man1/gnome-shell.1*
%changelog
* Fri Jan 14 2022 David King <amigadave@amigadave.com> - 42~alpha-1
- Update to 42.alpha
* Fri Oct 29 2021 Adam Williamson <awilliam@redhat.com> - 41.0-8
- Backport MR #2011 to further fix unexpected scrolling (#2017192)

View File

@ -1 +1 @@
SHA512 (gnome-shell-41.0.tar.xz) = 2d2a2dd4ecf315776c10949b00f10dbbd77f495542bb7ca8cdb95047998942433c5c4cad818fe729681f888f74038d51c3d5903f1a0861a66147dbf668231824
SHA512 (gnome-shell-42.alpha.tar.xz) = bce12df746d7b7d73e1ec6aa3ed460a596084a09a5adfd91e967ec60b20d0f1b554d3b63ef014339eb5d60c6ed34199c680758b7a30bcd068852f7c3005e99dc