From 341b6a1290f5b46429d457b07fe377f67e34808f Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 16 Aug 2012 21:24:53 +0200 Subject: [PATCH] UnlockDialog: go back to the lock screen automatically when idle Now that GDM no longer emits auth failures after 25 seconds, we need to handle inactivity ourselves. This has also the advantage that it tracks real inactivity, rather than a timeout from a fixed point in time. https://bugzilla.gnome.org/show_bug.cgi?id=682041 --- js/ui/unlockDialog.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index 8f2e6c2f6..c58263580 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -20,6 +20,9 @@ const UserMenu = imports.ui.userMenu; const Batch = imports.gdm.batch; const GdmUtil = imports.gdm.util; +// The timeout before going back automatically to the lock screen (in seconds) +const IDLE_TIMEOUT = 2 * 60; + // A widget showing the user avatar and name const UserWidget = new Lang.Class({ Name: 'UserWidget', @@ -154,6 +157,11 @@ const UnlockDialog = new Lang.Class({ this.emit('loaded'); return false; })); + + this._idleMonitor = Shell.IdleMonitor.get(); + // this dialog is only created after user activity (curtain drag or + // escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity + this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape)); }, _updateOkButton: function(sensitive) { @@ -218,6 +226,12 @@ const UnlockDialog = new Lang.Class({ destroy: function() { this._userVerifier.clear(); + + if (this._idleWatchId) { + this._idleMonitor.remove_watch(this._idleWatchId); + this._idleWatchId = 0; + } + this.parent(); },