diff --git a/.gitignore b/.gitignore index 9b56d31..510d776 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/0001-inputMethod-Clear-preeditStr-before-reset.patch b/0001-inputMethod-Clear-preeditStr-before-reset.patch deleted file mode 100644 index 72b73bb..0000000 --- a/0001-inputMethod-Clear-preeditStr-before-reset.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 380d2db1d9047ecffcef7d78f00184963b403efc Mon Sep 17 00:00:00 2001 -From: Christian Hergert -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: ---- - 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 - diff --git a/0001-inputMethod-Equate-empty-preedit-string-to-null.patch b/0001-inputMethod-Equate-empty-preedit-string-to-null.patch deleted file mode 100644 index d09c14c..0000000 --- a/0001-inputMethod-Equate-empty-preedit-string-to-null.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 286cfdc6d48dc4315df54d29d7d16b5198d92a56 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -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: ---- - 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 - diff --git a/0001-st-icon-Ensure-icons-are-updated-if-theme-node-is-in.patch b/0001-st-icon-Ensure-icons-are-updated-if-theme-node-is-in.patch deleted file mode 100644 index 96f5882..0000000 --- a/0001-st-icon-Ensure-icons-are-updated-if-theme-node-is-in.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 2bcc6c09edcdfa9929e8c3b4c3ce7ec652b0ad46 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= -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: ---- - 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 - diff --git a/0001-st-password-entry-Fix-crash-when-DConf-changes-after.patch b/0001-st-password-entry-Fix-crash-when-DConf-changes-after.patch deleted file mode 100644 index cc14001..0000000 --- a/0001-st-password-entry-Fix-crash-when-DConf-changes-after.patch +++ /dev/null @@ -1,94 +0,0 @@ -From de6604e4c7ddfcfd5fc089c462ecd29316b44189 Mon Sep 17 00:00:00 2001 -From: Ray Strode -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 - diff --git a/0001-unlockDialog-Don-t-create-AuthDialog-just-to-finish-.patch b/0001-unlockDialog-Don-t-create-AuthDialog-just-to-finish-.patch deleted file mode 100644 index b2952c6..0000000 --- a/0001-unlockDialog-Don-t-create-AuthDialog-just-to-finish-.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 5d5bfe492cd81a081e80660761bac137d38133bd Mon Sep 17 00:00:00 2001 -From: Ray Strode -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: ---- - 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 - diff --git a/0002-inputMethod-Do-not-communicate-preedit-text-change-o.patch b/0002-inputMethod-Do-not-communicate-preedit-text-change-o.patch deleted file mode 100644 index 030870a..0000000 --- a/0002-inputMethod-Do-not-communicate-preedit-text-change-o.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 047691b0d3471630ec80e32f371291dd2ef02419 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -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: ---- - 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 - diff --git a/0002-unlockDialog-Properly-reset-auth-prompt-when-showing.patch b/0002-unlockDialog-Properly-reset-auth-prompt-when-showing.patch deleted file mode 100644 index cde5ede..0000000 --- a/0002-unlockDialog-Properly-reset-auth-prompt-when-showing.patch +++ /dev/null @@ -1,109 +0,0 @@ -From ceee53aa0a40f3bf81945fabb4ecdd70d11143a4 Mon Sep 17 00:00:00 2001 -From: Ray Strode -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: ---- - 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 - diff --git a/0003-inputMethod-Do-not-reset-invisible-preedit-on-focus_.patch b/0003-inputMethod-Do-not-reset-invisible-preedit-on-focus_.patch deleted file mode 100644 index 29d0e07..0000000 --- a/0003-inputMethod-Do-not-reset-invisible-preedit-on-focus_.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 01775609525b12de752a2f7ebac88baee9b041d3 Mon Sep 17 00:00:00 2001 -From: Carlos Garnacho -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: ---- - 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 - diff --git a/gnome-shell.spec b/gnome-shell.spec index 7c483c4..4ceb33b 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -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 - 42~alpha-1 +- Update to 42.alpha + * Fri Oct 29 2021 Adam Williamson - 41.0-8 - Backport MR #2011 to further fix unexpected scrolling (#2017192) diff --git a/sources b/sources index 51a54f3..8718c6c 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-shell-41.0.tar.xz) = 2d2a2dd4ecf315776c10949b00f10dbbd77f495542bb7ca8cdb95047998942433c5c4cad818fe729681f888f74038d51c3d5903f1a0861a66147dbf668231824 +SHA512 (gnome-shell-42.alpha.tar.xz) = bce12df746d7b7d73e1ec6aa3ed460a596084a09a5adfd91e967ec60b20d0f1b554d3b63ef014339eb5d60c6ed34199c680758b7a30bcd068852f7c3005e99dc