From d525d0234876ae308e8fec8b935b400717df818d Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 25 Dec 2012 01:13:52 +0100 Subject: [PATCH] ScreenShield: honor lock-delay GSettings key org.gnome.desktop.screensaver.lock-delay contains the grace period of the screensaver: if deactivated within that many seconds from the start of the idle period, the shell should not prompt for a password. This setting correspond to the "Lock screen after" combo in screen and privacy panels. https://bugzilla.gnome.org/show_bug.cgi?id=690766 --- js/ui/screenShield.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 917be7c8f..3ee24ebbc 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -25,6 +25,7 @@ const Util = imports.misc.util; const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; const LOCK_ENABLED_KEY = 'lock-enabled'; +const LOCK_DELAY_KEY = 'lock-delay'; const CURTAIN_SLIDE_TIME = 0.3; // fraction of screen height the arrow must reach before completing @@ -636,7 +637,11 @@ const ScreenShield = new Lang.Class({ let lightboxWasShown = this._lightbox.shown; this._lightbox.hide(); - let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY); + // GLib.get_monotonic_time() returns microseconds, convert to seconds + let elapsedTime = (GLib.get_monotonic_time() - this._activationTime) / 1000000; + let shouldLock = lightboxWasShown && + this._settings.get_boolean(LOCK_ENABLED_KEY) && + (elapsedTime >= this._settings.get_boolean(LOCK_DELAY_KEY)); if (shouldLock || this._isLocked) { this.lock(false); } else if (this._isActive) {