From c5019dbf62a38ded3ea1c33441a73a80fdc808bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 7 Jan 2021 22:33:47 +0100 Subject: [PATCH] screenShield: Tie `LockedHint` to locked state Currently the hint reflects the `active` state, which effectively corresponds to the screen blank. That's a bit surprising considering the name, plus the `active` state is already exposed by the ScreenSaver D-Bus interface for anyone interested. It seems reasonable that the `LockedHint` property reflects the lock state, so change the handling to do exactly that. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/351 Part-of: --- js/ui/screenShield.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index fa3a7a816..9a64fc32c 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -151,12 +151,20 @@ var ScreenShield = class { if (prevIsActive != this._isActive) this.emit('active-changed'); - if (this._loginSession) - this._loginSession.SetLockedHintRemote(active); - this._syncInhibitor(); } + _setLocked(locked) { + let prevIsLocked = this._isLocked; + this._isLocked = locked; + + if (prevIsLocked !== this._isLocked) + this.emit('locked-changed'); + + if (this._loginSession) + this._loginSession.SetLockedHintRemote(locked); + } + _activateDialog() { if (this._isLocked) { this._ensureUnlockDialog(true /* allowCancel */); @@ -563,8 +571,7 @@ var ScreenShield = class { this._activationTime = 0; this._setActive(false); - this._isLocked = false; - this.emit('locked-changed'); + this._setLocked(false); global.set_runtime_state(LOCKED_STATE_STR, null); } @@ -624,14 +631,12 @@ var ScreenShield = class { let userManager = AccountsService.UserManager.get_default(); let user = userManager.get_user(GLib.get_user_name()); - if (this._isGreeter) - this._isLocked = true; - else - this._isLocked = user.password_mode != AccountsService.UserPasswordMode.NONE; - this.activate(animate); - this.emit('locked-changed'); + const lock = this._isGreeter + ? true + : user.password_mode !== AccountsService.UserPasswordMode.NONE; + this._setLocked(lock); } // If the previous shell crashed, and gnome-session restarted us, then re-lock