loginDialog: Disable user list when no user

https://bugzilla.gnome.org/show_bug.cgi?id=731320
This commit is contained in:
Xiaoguang Wang 2017-07-07 14:47:23 +08:00 committed by Michael Catanzaro
parent 326d5c7fb8
commit fbc5e3709e

View File

@ -269,6 +269,10 @@ const UserList = new Lang.Class({
item.actor.destroy(); item.actor.destroy();
delete this._items[userName]; delete this._items[userName];
},
numItems: function() {
return Object.keys(this._items).length;
} }
}); });
Signals.addSignalMethods(UserList.prototype); Signals.addSignalMethods(UserList.prototype);
@ -707,6 +711,10 @@ const LoginDialog = new Lang.Class({
_updateDisableUserList: function() { _updateDisableUserList: function() {
let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY); let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
// Disable user list when there are no users.
if (this._userListLoaded && this._userList.numItems() == 0)
disableUserList = true;
if (disableUserList != this._disableUserList) { if (disableUserList != this._disableUserList) {
this._disableUserList = disableUserList; this._disableUserList = disableUserList;
@ -1178,14 +1186,18 @@ const LoginDialog = new Lang.Class({
this._userList.addUser(users[i]); this._userList.addUser(users[i]);
} }
this._updateDisableUserList();
this._userAddedId = this._userManager.connect('user-added', this._userAddedId = this._userManager.connect('user-added',
Lang.bind(this, function(userManager, user) { Lang.bind(this, function(userManager, user) {
this._userList.addUser(user); this._userList.addUser(user);
this._updateDisableUserList();
})); }));
this._userRemovedId = this._userManager.connect('user-removed', this._userRemovedId = this._userManager.connect('user-removed',
Lang.bind(this, function(userManager, user) { Lang.bind(this, function(userManager, user) {
this._userList.removeUser(user); this._userList.removeUser(user);
this._updateDisableUserList();
})); }));
this._userChangedId = this._userManager.connect('user-changed', this._userChangedId = this._userManager.connect('user-changed',
@ -1194,6 +1206,7 @@ const LoginDialog = new Lang.Class({
this._userList.removeUser(user); this._userList.removeUser(user);
else if (!this._userList.containsUser(user) && !user.locked) else if (!this._userList.containsUser(user) && !user.locked)
this._userList.addUser(user); this._userList.addUser(user);
this._updateDisableUserList();
})); }));
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;