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 */);
         }
openSUSE Build Service is sponsored by