[gnome-shell/wip/wayland-gdm-cleanup: 3/3] retrigger greeter



commit 28f4030aa21a0a442ae1c520e5d18903c0f4755d
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Fri Mar 7 19:35:02 2014 -0500

    retrigger greeter

 js/gdm/loginDialog.js   |   28 ++++++++++++++++++++++++++++
 js/misc/loginManager.js |    1 +
 2 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index b4953b9..811b27f 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -473,6 +473,8 @@ const LoginDialog = new Lang.Class({
         this._updateDisableUserList();
         this._userListLoaded = false;
 
+        LoginManager.getLoginManager().getCurrentSessionProxy(Lang.bind(this, this._gotGreeterSessionProxy));
+
         // If the user list is enabled, it should take key focus; make sure the
         // screen shield is initialized first to prevent it from stealing the
         // focus later
@@ -639,6 +641,32 @@ const LoginDialog = new Lang.Class({
         this._showPrompt();
     },
 
+    _sessionActivated: function() {
+        // We fade out the shell after logging in, and then re-set
+        // the greeter wen we're VT switched to again.
+
+        // XXX: re-trigger startup animation
+        if (this._authPrompt.verificationStatus == GdmUtil.VerificationStatus.VERIFICATION_SUCCEEDED) {
+            this._reset();
+
+            // XXX: do something better here
+            this.actor.opacity = 255;
+
+            let children = Main.layoutManager.uiGroup.get_children();
+            for (let i = 0; i < children.length; i++) {
+                if (children[i] != Main.layoutManager.screenShieldGroup)
+                    children[i].opacity = 255;
+            }
+        }
+    },
+
+    _gotGreeterSessionProxy: function(proxy) {
+        proxy.connect('g-properties-changed', Lang.bind(this, function() {
+            if (proxy.Active)
+                this._sessionActivated();
+        }));
+    },
+
     _startSession: function(serviceName) {
         Tweener.addTween(this.actor,
                          { opacity: 0,
diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js
index ae87a55..c6cea88 100644
--- a/js/misc/loginManager.js
+++ b/js/misc/loginManager.js
@@ -39,6 +39,7 @@ const SystemdLoginSessionIface = '<node> \
 <interface name="org.freedesktop.login1.Session"> \
 <signal name="Lock" /> \
 <signal name="Unlock" /> \
+<property name="Active" access="readonly" /> \
 </interface> \
 </node>';
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]