screenShield: Always deactivate when interrupting idle before lock

With the old screen shield, we were simply hiding the lightboxes to show
the shield when the user became active after activating the shield but
before locking the screen (that is, when using a lock-delay).

However now that the shield is gone, we end up showing the unlock dialog
even though we are not actually locked.

We probably don't want to add back a shield-like mode (that is, a way to
raise the unlock dialog without authentication when we aren't locked),
so just deactivate the whole shield when the user becomes active again
before the lock kicks in.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2213
This commit is contained in:
Florian Müllner 2020-02-14 22:26:56 +01:00 committed by Florian Müllner
parent 5934dc16d3
commit 6f12864776

View File

@ -281,11 +281,7 @@ var ScreenShield = class {
// This function gets called here when the user becomes active
// after we activated a lightbox
// There are two possibilities here:
// - we're called when already locked/active; isLocked or isActive is true,
// we just go back to the lock screen curtain
// (isActive == isLocked == true: normal case
// isActive == false, isLocked == true: during the fade for manual locking
// isActive == true, isLocked == false: after session idle, before lock-delay)
// - we're called when already locked; we just go back to the lock screen curtain
// - we're called because the session is IDLE but before the lightbox
// is fully shown; at this point isActive is false, so we just hide
// the lightbox, reset the activationTime and go back to the unlocked
@ -299,7 +295,7 @@ var ScreenShield = class {
this.idleMonitor.remove_watch(this._becameActiveId);
this._becameActiveId = 0;
if (this._isActive || this._isLocked) {
if (this._isLocked) {
this._longLightbox.lightOff();
this._shortLightbox.lightOff();
} else {