From 654093dc4071b8e5de00e3fd6ef01d13b2bf6b54 Mon Sep 17 00:00:00 2001 From: Umang Jain Date: Fri, 17 Jan 2020 12:17:34 +0530 Subject: [PATCH] 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 5723ce542..2fb5057b8 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 22446510a..d21552555 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(); }