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(); }