[gnome-shell/uajain/adapt-user-avatar-part2: 48/62] userWidget: Adapt if user is not mentioned for username login



commit f6aeef193ca0d3b6dd52f22625754c938defeabe
Author: Umang Jain <mailumangjain gmail com>
Date:   Fri Jan 17 12:17:34 2020 +0530

    userWidget: Adapt if user is not mentioned for username login
    
    If username-based login flow is followed, we need a default avatar
    for the userWidget. Hence, check if the user passed to userWidget
    is (null) which implies a username-based login flow.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/922

 js/gdm/authPrompt.js |  6 ++----
 js/ui/userWidget.js  | 27 ++++++++++++++++++---------
 2 files changed, 20 insertions(+), 13 deletions(-)
---
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index 5723ce5426..2fb5057b84 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -424,10 +424,8 @@ var AuthPrompt = GObject.registerClass({
         if (oldChild)
             oldChild.destroy();
 
-        if (user) {
-            let userWidget = new UserWidget.UserWidget(user, Clutter.Orientation.VERTICAL);
-            this._userWell.set_child(userWidget);
-        }
+        let userWidget = new UserWidget.UserWidget(user, Clutter.Orientation.VERTICAL);
+        this._userWell.set_child(userWidget);
     }
 
     reset() {
diff --git a/js/ui/userWidget.js b/js/ui/userWidget.js
index 22446510a4..d21552555c 100644
--- a/js/ui/userWidget.js
+++ b/js/ui/userWidget.js
@@ -86,9 +86,12 @@ class Avatar extends St.Bin {
     update() {
         let iconSize = this._getIconSize();
 
-        let iconFile = this._user.get_icon_file();
-        if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
-            iconFile = null;
+        let iconFile = null;
+        if (this._user) {
+            iconFile = this._user.get_icon_file();
+            if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
+                iconFile = null;
+        }
 
         if (iconFile) {
             this.child = null;
@@ -192,6 +195,7 @@ class UserWidgetLabel extends St.Widget {
 var UserWidget = GObject.registerClass(
 class UserWidget extends St.BoxLayout {
     _init(user, orientation = Clutter.Orientation.HORIZONTAL) {
+        // If user is null, that implies a username-based login authorization.
         this._user = user;
 
         let vertical = orientation == Clutter.Orientation.VERTICAL;
@@ -210,14 +214,19 @@ class UserWidget extends St.BoxLayout {
         this._avatar.x_align = Clutter.ActorAlign.CENTER;
         this.add_child(this._avatar);
 
-        this._label = new UserWidgetLabel(user);
-        this.add_child(this._label);
+        this._userLoadedId = 0;
+        this._userChangedId = 0;
+        if (user) {
+            this._label = new UserWidgetLabel(user);
+            this.add_child(this._label);
 
-        this._label.bind_property('label-actor', this, 'label-actor',
-                                  GObject.BindingFlags.SYNC_CREATE);
+            this._label.bind_property('label-actor', this, 'label-actor',
+                                      GObject.BindingFlags.SYNC_CREATE);
+
+            this._userLoadedId = this._user.connect('notify::is-loaded', this._updateUser.bind(this));
+            this._userChangedId = this._user.connect('changed', this._updateUser.bind(this));
+        }
 
-        this._userLoadedId = this._user.connect('notify::is-loaded', this._updateUser.bind(this));
-        this._userChangedId = this._user.connect('changed', this._updateUser.bind(this));
         this._updateUser();
     }
 


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