From 0fa492bb66bb997d37ae0c8c790200048157b05a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 13 May 2021 17:49:09 +0200 Subject: [PATCH] Update to 40.1 --- .gitignore | 1 + ...w-timed-login-with-disabled-user-lis.patch | 422 ------------------ ...kspacesView-Fix-PgUp-PgDown-shortcut.patch | 63 --- ...on-t-tie-PgUp-PgDown-to-mapped-state.patch | 32 -- 1821.patch | 221 --------- gnome-shell.spec | 21 +- sources | 2 +- 7 files changed, 9 insertions(+), 753 deletions(-) delete mode 100644 0001-loginDialog-Allow-timed-login-with-disabled-user-lis.patch delete mode 100644 0001-workspacesView-Fix-PgUp-PgDown-shortcut.patch delete mode 100644 0002-workspacesView-Don-t-tie-PgUp-PgDown-to-mapped-state.patch delete mode 100644 1821.patch diff --git a/.gitignore b/.gitignore index cab6403..896e879 100644 --- a/.gitignore +++ b/.gitignore @@ -191,3 +191,4 @@ gnome-shell-2.31.5.tar.bz2 /gnome-shell-40.beta-79-g7a57528bd.tar.xz /gnome-shell-40.rc.tar.xz /gnome-shell-40.0.tar.xz +/gnome-shell-40.1.tar.xz diff --git a/0001-loginDialog-Allow-timed-login-with-disabled-user-lis.patch b/0001-loginDialog-Allow-timed-login-with-disabled-user-lis.patch deleted file mode 100644 index 5bb4445..0000000 --- a/0001-loginDialog-Allow-timed-login-with-disabled-user-lis.patch +++ /dev/null @@ -1,422 +0,0 @@ -From 3aa4ec6dc18a117a0124cae5e2bddfe7cf6ea0b7 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 13 Apr 2021 10:59:49 -0400 -Subject: [PATCH] loginDialog: Allow timed login with disabled user list - -At the moment the timed login feature is implemented in the user list. -If there's no user list, we don't show the indicator anywhere and -don't proceed with timed login. - -This commit allows timed login to work when the user list is disabled. -It accomplishes this by putting the timed login indicator on the -auth prompt in that scenario. ---- - .../widgets/_login-dialog.scss | 5 +++ - js/gdm/authPrompt.js | 41 ++++++++++++++++++- - js/gdm/loginDialog.js | 24 ++++++++++- - subprojects/gvc | 2 +- - 4 files changed, 68 insertions(+), 4 deletions(-) - -diff --git a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss -index d6608fc30..1789beca9 100644 ---- a/data/theme/gnome-shell-sass/widgets/_login-dialog.scss -+++ b/data/theme/gnome-shell-sass/widgets/_login-dialog.scss -@@ -124,46 +124,51 @@ - &:ltr .user-widget { padding-right: 1em; } - &:rtl .user-widget { padding-left: 1em; } - .login-dialog-timed-login-indicator { - height: 2px; - margin-top: 6px; - background-color: $osd_fg_color; - } - &:focus .login-dialog-timed-login-indicator { background-color: $selected_fg_color; } - } - - .user-widget-label { - color: $osd_fg_color; - } - - .user-widget.horizontal .user-widget-label { - @include fontsize($base_font_size + 2); - font-weight: bold; - padding-left: 15px; - - &:ltr { padding-left: 14px; text-align: left; } - &:rtl { padding-right: 14px; text-align: right; } - } - - .user-widget.vertical .user-widget-label { - @include fontsize($base_font_size + 5); - text-align: center; - font-weight: normal; - padding-top: 16px; - } - -+.login-dialog-timed-login-indicator { -+ height: 2px; -+ background-color: darken($fg_color,40%); -+} -+ - .login-dialog-prompt-layout { - padding-top: 24px; - padding-bottom: 12px; - spacing: $base_spacing * 2; - width: 23em; - } - - .login-dialog-prompt-entry { - height: 1.5em; - } - - .login-dialog-prompt-label { - color: darken($osd_fg_color, 20%); - @include fontsize($base_font_size + 1); - padding-top: 1em; - } -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index d2c9a1659..07de0f8d2 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -1,34 +1,34 @@ - // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - /* exported AuthPrompt */ - --const { Clutter, GObject, Pango, Shell, St } = imports.gi; -+const { Clutter, GLib, GObject, Pango, Shell, St } = imports.gi; - - const Animation = imports.ui.animation; - const Batch = imports.gdm.batch; - const GdmUtil = imports.gdm.util; - const OVirt = imports.gdm.oVirt; - const Vmware = imports.gdm.vmware; - const Params = imports.misc.params; - const ShellEntry = imports.ui.shellEntry; - const UserWidget = imports.ui.userWidget; - const Util = imports.misc.util; - - var DEFAULT_BUTTON_WELL_ICON_SIZE = 16; - var DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1000; - var DEFAULT_BUTTON_WELL_ANIMATION_TIME = 300; - - var MESSAGE_FADE_OUT_ANIMATION_TIME = 500; - - var AuthPromptMode = { - UNLOCK_ONLY: 0, - UNLOCK_OR_LOG_IN: 1, - }; - - var AuthPromptStatus = { - NOT_VERIFYING: 0, - VERIFYING: 1, - VERIFICATION_FAILED: 2, - VERIFICATION_SUCCEEDED: 3, - VERIFICATION_CANCELLED: 4, - VERIFICATION_IN_PROGRESS: 5, - }; -@@ -143,88 +143,127 @@ var AuthPrompt = GObject.registerClass({ - reactive: this._hasCancelButton, - can_focus: this._hasCancelButton, - x_align: Clutter.ActorAlign.START, - y_align: Clutter.ActorAlign.CENTER, - child: new St.Icon({ icon_name: 'go-previous-symbolic' }), - }); - if (this._hasCancelButton) - this.cancelButton.connect('clicked', () => this.cancel()); - else - this.cancelButton.opacity = 0; - this._mainBox.add_child(this.cancelButton); - - let entryParams = { - style_class: 'login-dialog-prompt-entry', - can_focus: true, - x_expand: true, - }; - - this._entry = null; - - this._textEntry = new St.Entry(entryParams); - ShellEntry.addContextMenu(this._textEntry, { actionMode: Shell.ActionMode.NONE }); - - this._passwordEntry = new St.PasswordEntry(entryParams); - ShellEntry.addContextMenu(this._passwordEntry, { actionMode: Shell.ActionMode.NONE }); - - this._entry = this._passwordEntry; - this._mainBox.add_child(this._entry); - this._entry.grab_key_focus(); - -+ this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', -+ scale_x: 0 }); -+ -+ this.actor.add(this._timedLoginIndicator); -+ - [this._textEntry, this._passwordEntry].forEach(entry => { - entry.clutter_text.connect('text-changed', () => { - if (!this._userVerifier.hasPendingMessages) - this._fadeOutMessage(); - }); - - entry.clutter_text.connect('activate', () => { - let shouldSpin = entry === this._passwordEntry; - if (entry.reactive) - this._activateNext(shouldSpin); - }); - }); - - this._defaultButtonWell = new St.Widget({ - layout_manager: new Clutter.BinLayout(), - x_align: Clutter.ActorAlign.END, - y_align: Clutter.ActorAlign.CENTER, - }); - this._defaultButtonWell.add_constraint(new Clutter.BindConstraint({ - source: this.cancelButton, - coordinate: Clutter.BindCoordinate.WIDTH, - })); - this._mainBox.add_child(this._defaultButtonWell); - - this._spinner = new Animation.Spinner(DEFAULT_BUTTON_WELL_ICON_SIZE); - this._defaultButtonWell.add_child(this._spinner); - } - -+ showTimedLoginIndicator(time) { -+ let hold = new Batch.Hold(); -+ -+ this.hideTimedLoginIndicator(); -+ -+ let startTime = GLib.get_monotonic_time(); -+ -+ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, 33, -+ () => { -+ let currentTime = GLib.get_monotonic_time(); -+ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; -+ this._timedLoginIndicator.scale_x = elapsedTime / time; -+ if (elapsedTime >= time) { -+ this._timedLoginTimeoutId = 0; -+ hold.release(); -+ return GLib.SOURCE_REMOVE; -+ } -+ -+ return GLib.SOURCE_CONTINUE; -+ }); -+ -+ GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); -+ -+ return hold; -+ } -+ -+ hideTimedLoginIndicator() { -+ if (this._timedLoginTimeoutId) { -+ GLib.source_remove(this._timedLoginTimeoutId); -+ this._timedLoginTimeoutId = 0; -+ } -+ this._timedLoginIndicator.scale_x = 0.; -+ } -+ - _activateNext(shouldSpin) { - this.verificationStatus = AuthPromptStatus.VERIFICATION_IN_PROGRESS; - this.updateSensitivity(false); - - if (shouldSpin) - this.startSpinning(); - - if (this._queryingService) - this._userVerifier.answerQuery(this._queryingService, this._entry.text); - else - this._preemptiveAnswer = this._entry.text; - - this.emit('next'); - } - - _updateEntry(secret) { - if (secret && this._entry !== this._passwordEntry) { - this._mainBox.replace_child(this._entry, this._passwordEntry); - this._entry = this._passwordEntry; - } else if (!secret && this._entry !== this._textEntry) { - this._mainBox.replace_child(this._entry, this._textEntry); - this._entry = this._textEntry; - } - this._capsLockWarningLabel.visible = secret; - } - - _onAskQuestion(verifier, serviceName, question, secret) { - if (this._queryingService) - this.clear(); - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 6f66a2759..72d3322db 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -735,60 +735,63 @@ var LoginDialog = GObject.registerClass({ - } - - _ensureUserListLoaded() { - if (!this._userManager.is_loaded) { - this._userManagerLoadedId = this._userManager.connect('notify::is-loaded', - () => { - if (this._userManager.is_loaded) { - this._loadUserList(); - this._userManager.disconnect(this._userManagerLoadedId); - this._userManagerLoadedId = 0; - } - }); - } else { - let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, this._loadUserList.bind(this)); - GLib.Source.set_name_by_id(id, '[gnome-shell] _loadUserList'); - } - } - - _updateDisableUserList() { - let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY); - - // Disable user list when there are no users. - if (this._userListLoaded && this._userList.numItems() == 0) - disableUserList = true; - - if (disableUserList != this._disableUserList) { - this._disableUserList = disableUserList; - - if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) - this._authPrompt.reset(); -+ -+ if (this._disableUserList && this._timedLoginUserListHold) -+ this._timedLoginUserListHold.release(); - } - } - - _updateCancelButton() { - let cancelVisible; - - // Hide the cancel button if the user list is disabled and we're asking for - // a username - if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING && this._disableUserList) - cancelVisible = false; - else - cancelVisible = true; - - this._authPrompt.cancelButton.visible = cancelVisible; - } - - _updateBanner() { - let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY); - let text = this._settings.get_string(GdmUtil.BANNER_MESSAGE_TEXT_KEY); - - if (enabled && text) { - this._bannerLabel.set_text(text); - this._bannerLabel.show(); - } else { - this._bannerLabel.hide(); - } - } - - _fadeInBannerView() { - this._bannerView.show(); -@@ -1021,91 +1024,108 @@ var LoginDialog = GObject.registerClass({ - - this._timedLoginIdleTimeOutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, _TIMED_LOGIN_IDLE_THRESHOLD, - () => { - this._timedLoginIdleTimeOutId = 0; - hold.release(); - return GLib.SOURCE_REMOVE; - }); - GLib.Source.set_name_by_id(this._timedLoginIdleTimeOutId, '[gnome-shell] this._timedLoginIdleTimeOutId'); - return hold; - } - - _startTimedLogin(userName, delay) { - let firstRun = true; - - // Cancel execution of old batch - if (this._timedLoginBatch) { - this._timedLoginBatch.cancel(); - this._timedLoginBatch = null; - firstRun = false; - } - - // Reset previous idle-timeout - if (this._timedLoginIdleTimeOutId) { - GLib.source_remove(this._timedLoginIdleTimeOutId); - this._timedLoginIdleTimeOutId = 0; - } - - let loginItem = null; - let animationTime; - -- let tasks = [() => this._waitForItemForUser(userName), -+ let tasks = [() => { -+ if (this._disableUserList) -+ return; -+ -+ this._timedLoginUserListHold = this._waitForItemForUser(userName); -+ -+ return this._timedLoginUserListHold; -+ }, - - () => { -- loginItem = this._userList.getItemFromUserName(userName); -+ this._timedLoginUserListHold = null; -+ -+ loginItem = this._disableUserList -+ ? this._authPrompt -+ : this._userList.getItemFromUserName(userName); - - // If there is an animation running on the item, reset it. - loginItem.hideTimedLoginIndicator(); - }, - - () => { -+ if (this._disableUserList) -+ return; -+ - // If we're just starting out, start on the right item. - if (!this._userManager.is_loaded) - this._userList.jumpToItem(loginItem); - }, - - () => { - // This blocks the timed login animation until a few - // seconds after the user stops interacting with the - // login screen. - - // We skip this step if the timed login delay is very short. - if (delay > _TIMED_LOGIN_IDLE_THRESHOLD) { - animationTime = delay - _TIMED_LOGIN_IDLE_THRESHOLD; - return this._blockTimedLoginUntilIdle(); - } else { - animationTime = delay; - return null; - } - }, - - () => { -+ if (this._disableUserList) -+ return; -+ - // If idle timeout is done, make sure the timed login indicator is shown - if (delay > _TIMED_LOGIN_IDLE_THRESHOLD && - this._authPrompt.visible) - this._authPrompt.cancel(); - - if (delay > _TIMED_LOGIN_IDLE_THRESHOLD || firstRun) { - this._userList.scrollToItem(loginItem); - loginItem.grab_key_focus(); - } - }, - - () => loginItem.showTimedLoginIndicator(animationTime), - - () => { - this._timedLoginBatch = null; - this._greeter.call_begin_auto_login_sync(userName, null); - }]; - - this._timedLoginBatch = new Batch.ConsecutiveBatch(this, tasks); - - return this._timedLoginBatch.run(); - } - - _onTimedLoginRequested(client, userName, seconds) { - if (this._timedLoginBatch) - return; - - this._startTimedLogin(userName, seconds); - - // Restart timed login on user interaction diff --git a/0001-workspacesView-Fix-PgUp-PgDown-shortcut.patch b/0001-workspacesView-Fix-PgUp-PgDown-shortcut.patch deleted file mode 100644 index 759357a..0000000 --- a/0001-workspacesView-Fix-PgUp-PgDown-shortcut.patch +++ /dev/null @@ -1,63 +0,0 @@ -From fc54e0bed8dbab238394f6852d611d64b81f314e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 8 Apr 2021 17:19:37 +0200 -Subject: [PATCH 1/2] workspacesView: Fix PgUp/PgDown shortcut - -We still try to switch to the workspace above/below, which doesn't -do anything since the layout is now horizontal. - -Part-of: ---- - js/ui/workspacesView.js | 28 ++++++++++++++++++++++------ - 1 file changed, 22 insertions(+), 6 deletions(-) - -diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js -index 1af45d88d..2c9da5c9b 100644 ---- a/js/ui/workspacesView.js -+++ b/js/ui/workspacesView.js -@@ -1144,20 +1144,36 @@ class WorkspacesDisplay extends St.Widget { - _onKeyPressEvent(actor, event) { - if (!this.mapped) - return Clutter.EVENT_PROPAGATE; -- let workspaceManager = global.workspace_manager; -- let activeWs = workspaceManager.get_active_workspace(); -- let ws; -+ -+ const { workspaceManager } = global; -+ const vertical = workspaceManager.layout_rows === -1; -+ const rtl = this.get_text_direction() === Clutter.TextDirection.RTL; -+ -+ let dir; - switch (event.get_key_symbol()) { - case Clutter.KEY_Page_Up: -- ws = activeWs.get_neighbor(Meta.MotionDirection.UP); -+ if (vertical) -+ dir = Meta.MotionDirection.UP; -+ else if (rtl) -+ dir = Meta.MotionDirection.RIGHT; -+ else -+ dir = Meta.MotionDirection.LEFT; - break; - case Clutter.KEY_Page_Down: -- ws = activeWs.get_neighbor(Meta.MotionDirection.DOWN); -+ if (vertical) -+ dir = Meta.MotionDirection.DOWN; -+ else if (rtl) -+ dir = Meta.MotionDirection.LEFT; -+ else -+ dir = Meta.MotionDirection.RIGHT; - break; - default: - return Clutter.EVENT_PROPAGATE; - } -- Main.wm.actionMoveWorkspace(ws); -+ -+ const ws = workspaceManager.get_active_workspace().get_neighbor(dir); -+ if (ws) -+ Main.wm.actionMoveWorkspace(ws); - return Clutter.EVENT_STOP; - } - --- -2.31.1 - diff --git a/0002-workspacesView-Don-t-tie-PgUp-PgDown-to-mapped-state.patch b/0002-workspacesView-Don-t-tie-PgUp-PgDown-to-mapped-state.patch deleted file mode 100644 index 055c38c..0000000 --- a/0002-workspacesView-Don-t-tie-PgUp-PgDown-to-mapped-state.patch +++ /dev/null @@ -1,32 +0,0 @@ -From dd7d33622875c70f3f5965f387e4de7c99fbf330 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 8 Apr 2021 17:31:54 +0200 -Subject: [PATCH 2/2] workspacesView: Don't tie PgUp/PgDown to mapped state - -Both app grid and window picker are now always visible in the overview, -so their handling of the PgUp/PgDown keys conflicts. - -Resolve that by checking for the overview state instead. - -Part-of: ---- - js/ui/workspacesView.js | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js -index 2c9da5c9b..502590418 100644 ---- a/js/ui/workspacesView.js -+++ b/js/ui/workspacesView.js -@@ -1142,7 +1142,8 @@ class WorkspacesDisplay extends St.Widget { - } - - _onKeyPressEvent(actor, event) { -- if (!this.mapped) -+ const { ControlsState } = OverviewControls; -+ if (this._overviewAdjustment.value !== ControlsState.WINDOW_PICKER) - return Clutter.EVENT_PROPAGATE; - - const { workspaceManager } = global; --- -2.31.1 - diff --git a/1821.patch b/1821.patch deleted file mode 100644 index cff93c3..0000000 --- a/1821.patch +++ /dev/null @@ -1,221 +0,0 @@ -From e7998b4d5547d65d88c56d428a65c9fb3bbeadb0 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 28 Apr 2021 10:36:46 -0400 -Subject: [PATCH 1/5] authPrompt: Don't clear querying service unless querying - service fails - -At the moment we treat a failure in any service as a signal to stop -tracking users responses to service questions. - -This commit makes sure we don't stop waiting for answers if a background -service fails. ---- - js/gdm/authPrompt.js | 7 +++++-- - 1 file changed, 5 insertions(+), 2 deletions(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index d2c9a16594..c182d74318 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -280,8 +280,11 @@ var AuthPrompt = GObject.registerClass({ - - _onVerificationFailed(userVerifier, serviceName, canRetry) { - const wasQueryingService = this._queryingService === serviceName; -- this._queryingService = null; -- this.clear(); -+ -+ if (wasQueryingService) { -+ this._queryingService = null; -+ this.clear(); -+ } - - this.updateSensitivity(canRetry); - this.setActorInDefaultButtonWell(null); --- -GitLab - - -From ca290737ab3ecb028f03c9189dac6131e2dcf3bc Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 28 Apr 2021 10:38:58 -0400 -Subject: [PATCH 2/5] authPrompt: Don't fail auth prompt until user is out of - retries - -At the moment we set the state of the auth prompt to failed any -time the user fails an attempt. But verification is still going -on until the user exhausts all attempts, so that's wrong. - -This commit changes it to only set the state to failed when the -user is out of tries. ---- - js/gdm/authPrompt.js | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index c182d74318..d111cadd1b 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -288,7 +288,9 @@ var AuthPrompt = GObject.registerClass({ - - this.updateSensitivity(canRetry); - this.setActorInDefaultButtonWell(null); -- this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; -+ -+ if (!canRetry) -+ this.verificationStatus = AuthPromptStatus.VERIFICATION_FAILED; - - if (wasQueryingService) - Util.wiggle(this._entry); --- -GitLab - - -From 36ccf63b7a219b7e0eb11158f39c8823a25eb058 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 28 Apr 2021 10:42:14 -0400 -Subject: [PATCH 3/5] gdm: Flip canRetry boolean to doneTrying on verification - failure - -This commit just flips a boolean in the verification failed handler -to make things easier to read. ---- - js/gdm/util.js | 33 +++++++++++++++++---------------- - 1 file changed, 17 insertions(+), 16 deletions(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 1ee84acde2..bb120a81c2 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -685,29 +685,19 @@ var ShellUserVerifier = class { - (this._reauthOnly || this._failCounter < this.allowedFailures); - } - -- _verificationFailed(serviceName, retry) { -+ _verificationFailed(serviceName, shouldRetry) { - // For Not Listed / enterprise logins, immediately reset - // the dialog - // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. - // After that, we go back to the welcome screen. - -- const canRetry = retry && this._canRetry(); -- - this._disconnectSignals(); -+ - this._filterServiceMessages(serviceName, MessageType.ERROR); - -- if (canRetry) { -- if (!this.hasPendingMessages) { -- this._retry(serviceName); -- } else { -- const cancellable = this._cancellable; -- let signalId = this.connect('no-more-messages', () => { -- this.disconnect(signalId); -- if (!cancellable.is_cancelled()) -- this._retry(serviceName); -- }); -- } -- } else { -+ const doneTrying = !shouldRetry || !this._canRetry(); -+ -+ if (doneTrying) { - // eslint-disable-next-line no-lonely-if - if (!this.hasPendingMessages) { - this._cancelAndReset(); -@@ -721,7 +711,18 @@ var ShellUserVerifier = class { - } - } - -- this.emit('verification-failed', serviceName, canRetry); -+ this.emit('verification-failed', serviceName, !doneTrying); -+ -+ if (!this.hasPendingMessages) { -+ this._retry(serviceName); -+ } else { -+ const cancellable = this._cancellable; -+ let signalId = this.connect('no-more-messages', () => { -+ this.disconnect(signalId); -+ if (!cancellable.is_cancelled()) -+ this._retry(serviceName); -+ }); -+ } - } - - _onServiceUnavailable(_client, serviceName, errorMessage) { --- -GitLab - - -From de06a365e968691a4c2b39de8d5903a92f3663ec Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 28 Apr 2021 10:44:56 -0400 -Subject: [PATCH 4/5] gdm: Only disconect verification signals when not going - to retry - -At the moment a failure in a background service can lead to the -various verification signals getting disconnected, even though -we still need them for a foreground service. - -This commit changes the code to only disconnect when we've run -out of tries. ---- - js/gdm/util.js | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index bb120a81c2..bdc14b7519 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -691,13 +691,13 @@ var ShellUserVerifier = class { - // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. - // After that, we go back to the welcome screen. - -- this._disconnectSignals(); -- - this._filterServiceMessages(serviceName, MessageType.ERROR); - - const doneTrying = !shouldRetry || !this._canRetry(); - - if (doneTrying) { -+ this._disconnectSignals(); -+ - // eslint-disable-next-line no-lonely-if - if (!this.hasPendingMessages) { - this._cancelAndReset(); --- -GitLab - - -From 70f1e4a0d41956a5e91c31bea4d0060c9eb0bf45 Mon Sep 17 00:00:00 2001 -From: Benjamin Berg -Date: Wed, 28 Apr 2021 18:32:22 +0200 -Subject: [PATCH 5/5] gdm: Remove pending fingerprint verification failure - -It can happen that we get a problem report and a verification failure at -the same time. For fingerprint, a problem report can result in an -internal verification failure to be queued. - -Remove this queued failure again if we got a failure already from GDM -directly. ---- - js/gdm/util.js | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index bdc14b7519..b02cd4d734 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -686,6 +686,11 @@ var ShellUserVerifier = class { - } - - _verificationFailed(serviceName, shouldRetry) { -+ if (serviceName === FINGERPRINT_SERVICE_NAME) { -+ if (this._fingerprintFailedId) -+ GLib.source_remove(this._fingerprintFailedId); -+ } -+ - // For Not Listed / enterprise logins, immediately reset - // the dialog - // Otherwise, when in login mode we allow ALLOWED_FAILURES attempts. --- -GitLab - diff --git a/gnome-shell.spec b/gnome-shell.spec index 36b3802..0c12f68 100644 --- a/gnome-shell.spec +++ b/gnome-shell.spec @@ -1,8 +1,8 @@ %global tarball_version %%(echo %{version} | tr '~' '.') Name: gnome-shell -Version: 40.0 -Release: 6%{?dist} +Version: 40.1 +Release: 1%{?dist} Summary: Window management and application launching for GNOME License: GPLv2+ @@ -12,18 +12,8 @@ Source0: http://download.gnome.org/sources/gnome-shell/40/%{name}-%{tarball_vers # Replace Epiphany with Firefox in the default favourite apps list Patch1: gnome-shell-favourite-apps-firefox.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=1940618 -Patch10001: 0001-loginDialog-Allow-timed-login-with-disabled-user-lis.patch -# Fix PgUp/PgDn for scrolling between workspaces / app grid pages -# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1798 -# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/4086 -Patch10002: 0001-workspacesView-Fix-PgUp-PgDown-shortcut.patch -Patch10003: 0002-workspacesView-Don-t-tie-PgUp-PgDown-to-mapped-state.patch - -# Some users might have a broken PAM config, so we really need this. -# The upstream patchset fixes password auth after a fingerprint failure. -# The second is a downstream patch to stop trying on configuration errors. -Patch10004: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1821.patch +# Some users might have a broken PAM config, so we really need this +# downstream patch to stop trying on configuration errors. Patch10005: 0001-gdm-Work-around-failing-fingerprint-auth.patch @@ -242,6 +232,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_mandir}/man1/gnome-shell.1* %changelog +* Thu May 13 2021 Florian Müllner - 40.1-1 +- Update to 40.1 + * Fri Apr 30 2021 Kalev Lember - 40.0-6 - Move gnome-tour dep here from gnome-initial-setup (#1955179) diff --git a/sources b/sources index 21913f5..1528456 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-shell-40.0.tar.xz) = fc4ca3fbd3dafd4a81f97a765e53b74fa4902018721e25a767c0d353d127b0cdc69c64171188272e3f5b48f11d6ad52064cc237e35210f5e09dfcd763ceb00c4 +SHA512 (gnome-shell-40.1.tar.xz) = 48b2800ef500b5a5102c974d8ab718946406653803942b063100c813bd4bda9ae3e1b3492872fd8158c0e44c95f6582174101fb852613ff047602efed83b6d37