File gnome-shell-login-focus-lost.patch of Package gnome-shell.1083
diff -Npur gnome-shell-3.10.4/js/gdm/loginDialog.js gnome-shell-3.10.4-new/js/gdm/loginDialog.js
--- gnome-shell-3.10.4/js/gdm/loginDialog.js 2014-05-12 10:11:12.923467134 +0800
+++ gnome-shell-3.10.4-new/js/gdm/loginDialog.js 2014-05-12 10:14:36.175462962 +0800
@@ -529,6 +529,8 @@ const LoginDialog = new Lang.Class({
// focus later
Main.layoutManager.connect('startup-complete',
Lang.bind(this, this._updateDisableUserList));
+ Main.screenShield.connect('active-changed',
+ Lang.bind(this, this._screenShieldActive));
},
@@ -557,6 +559,10 @@ const LoginDialog = new Lang.Class({
}
},
+ _screenShieldActive: function() {
+ this._authPrompt.reset();
+ },
+
_updateCancelButton: function() {
let cancelVisible;
diff -Npur gnome-shell-3.10.4/js/ui/screenShield.js gnome-shell-3.10.4-new/js/ui/screenShield.js
--- gnome-shell-3.10.4/js/ui/screenShield.js 2014-05-12 10:11:12.911467134 +0800
+++ gnome-shell-3.10.4-new/js/ui/screenShield.js 2014-05-12 10:12:48.615465170 +0800
@@ -630,8 +630,11 @@ const ScreenShield = new Lang.Class({
_liftShield: function(onPrimary, velocity) {
if (this._isLocked) {
- if (this._ensureUnlockDialog(onPrimary, true /* allowCancel */))
+ if (this._ensureUnlockDialog(onPrimary, true /* allowCancel */)) {
this._hideLockScreen(true /* animate */, velocity);
+ if (this._isGreeter)
+ this.emit('active-changed');
+ }
} else {
this.deactivate(true /* animate */);
}