Update to 40.1

This commit is contained in:
Florian Müllner 2021-05-13 17:49:09 +02:00
parent 9d11163049
commit 0fa492bb66
7 changed files with 9 additions and 753 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -1,422 +0,0 @@
From 3aa4ec6dc18a117a0124cae5e2bddfe7cf6ea0b7 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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

View File

@ -1,63 +0,0 @@
From fc54e0bed8dbab238394f6852d611d64b81f314e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
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: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1798>
---
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

View File

@ -1,32 +0,0 @@
From dd7d33622875c70f3f5965f387e4de7c99fbf330 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
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: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1798>
---
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

View File

@ -1,221 +0,0 @@
From e7998b4d5547d65d88c56d428a65c9fb3bbeadb0 Mon Sep 17 00:00:00 2001
From: Ray Strode <rstrode@redhat.com>
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 <rstrode@redhat.com>
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 <rstrode@redhat.com>
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 <rstrode@redhat.com>
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 <bberg@redhat.com>
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

View File

@ -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 <fmuellner@redhat.com> - 40.1-1
- Update to 40.1
* Fri Apr 30 2021 Kalev Lember <klember@redhat.com> - 40.0-6
- Move gnome-tour dep here from gnome-initial-setup (#1955179)

View File

@ -1 +1 @@
SHA512 (gnome-shell-40.0.tar.xz) = fc4ca3fbd3dafd4a81f97a765e53b74fa4902018721e25a767c0d353d127b0cdc69c64171188272e3f5b48f11d6ad52064cc237e35210f5e09dfcd763ceb00c4
SHA512 (gnome-shell-40.1.tar.xz) = 48b2800ef500b5a5102c974d8ab718946406653803942b063100c813bd4bda9ae3e1b3492872fd8158c0e44c95f6582174101fb852613ff047602efed83b6d37