[gnome-shell/gbsneto/multi-user-button: 3/6] Revert "unlockDialog: Remove 'Login as another user' Label"



commit a9e5d0b48072d3f21e0e07250ac9ecbb39b67b3c
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Fri Feb 14 12:05:23 2020 -0300

    Revert "unlockDialog: Remove 'Login as another user' Label"
    
    This reverts commit c6a79fafc. The back button doesn't really work
    as a replacement for going back to the login screen.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1006

 js/gdm/authPrompt.js  | 13 ++-----------
 js/ui/unlockDialog.js | 39 +++++++++++++++++++++++++++++++++++++--
 2 files changed, 39 insertions(+), 13 deletions(-)
---
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index 5515db60d2..2f98989078 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported AuthPrompt */
 
-const { Clutter, Gdm, Gio, GObject, Pango, Shell, St } = imports.gi;
+const { Clutter, GObject, Pango, Shell, St } = imports.gi;
 
 const Animation = imports.ui.animation;
 const Batch = imports.gdm.batch;
@@ -129,7 +129,7 @@ var AuthPrompt = GObject.registerClass({
             y_align: Clutter.ActorAlign.CENTER,
             child: new St.Icon({ icon_name: 'go-previous-symbolic' }),
         });
-        this.cancelButton.connect('clicked', () => this._onCancelButtonClicked());
+        this.cancelButton.connect('clicked', () => this.cancel());
         this._mainBox.add_child(this.cancelButton);
 
         let entryParams = {
@@ -382,15 +382,6 @@ var AuthPrompt = GObject.registerClass({
         });
     }
 
-    _onCancelButtonClicked() {
-        if (this._mode == AuthPromptMode.UNLOCK_ONLY) {
-            let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
-            if (screenSaverSettings.get_boolean('user-switch-enabled'))
-                Gdm.goto_login_session_sync(null);
-        }
-        this.cancel();
-    }
-
     setMessage(message, type) {
         if (type == GdmUtil.MessageType.ERROR)
             this._message.add_style_class_name('login-dialog-message-warning');
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index cae22f20e1..38e5487e87 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported UnlockDialog */
 
-const { AccountsService, Atk, Clutter, Gdm,
+const { AccountsService, Atk, Clutter, Gdm, Gio,
         GnomeDesktop, GLib, GObject, Meta, Shell, St } = imports.gi;
 
 const Background = imports.ui.background;
@@ -625,6 +625,24 @@ var UnlockDialog = GObject.registerClass({
 
         this._promptBox.add_child(this._authPrompt);
 
+        let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
+        if (screenSaverSettings.get_boolean('user-switch-enabled')) {
+            let otherUserLabel = new St.Label({
+                text: _('Log in as another user'),
+                style_class: 'login-dialog-not-listed-label',
+            });
+            this._otherUserButton = new St.Button({
+                style_class: 'login-dialog-not-listed-button',
+                can_focus: true,
+                child: otherUserLabel,
+                reactive: true,
+            });
+            this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this));
+            this._promptBox.add_child(this._otherUserButton);
+        } else {
+            this._otherUserButton = null;
+        }
+
         this._authPrompt.reset();
         this._updateSensitivity(true);
     }
@@ -632,17 +650,28 @@ var UnlockDialog = GObject.registerClass({
     _maybeDestroyAuthPrompt() {
         let focus = global.stage.key_focus;
         if (focus === null ||
-            (this._authPrompt && this._authPrompt.contains(focus)))
+            (this._authPrompt && this._authPrompt.contains(focus)) ||
+            (this._otherUserButton && focus === this._otherUserButton))
             this.grab_key_focus();
 
         if (this._authPrompt) {
             this._authPrompt.destroy();
             this._authPrompt = null;
         }
+
+        if (this._otherUserButton) {
+            this._otherUserButton.destroy();
+            this._otherUserButton = null;
+        }
     }
 
     _updateSensitivity(sensitive) {
         this._authPrompt.updateSensitivity(sensitive);
+
+        if (this._otherUserButton) {
+            this._otherUserButton.reactive = sensitive;
+            this._otherUserButton.can_focus = sensitive;
+        }
     }
 
     _showClock() {
@@ -749,6 +778,12 @@ var UnlockDialog = GObject.registerClass({
         });
     }
 
+    _otherUserClicked() {
+        Gdm.goto_login_session_sync(null);
+
+        this._authPrompt.cancel();
+    }
+
     _onDestroy() {
         this.popModal();
 


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