[gnome-shell/wip/disable-user-list: 3/3] loginDialog: support disable-user-list key
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/disable-user-list: 3/3] loginDialog: support disable-user-list key
- Date: Thu, 1 Nov 2012 18:34:26 +0000 (UTC)
commit c8bcd936600ad220a5ab69fbaa46ba5ff6ebd37f
Author: Ray Strode <rstrode redhat com>
Date: Tue Oct 30 13:26:30 2012 -0400
loginDialog: support disable-user-list key
In some deployments showing a user list at the login
screen is undesirable.
GDM's fallback login screen has a configuration key:
org.gnome.login-screen disable-user-list false
that causes the user-list to get hidden.
This commit adds similar functionality to the normal,
shell-based login screen.
Based on a series of patches by Marius Rieder.
https://bugzilla.gnome.org/show_bug.cgi?id=660660
js/gdm/loginDialog.js | 94 +++++++++++++++++++++++++++++++-----------------
js/gdm/util.js | 1 +
2 files changed, 62 insertions(+), 33 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 0ca1607..19a48b3 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -684,7 +684,7 @@ const LoginDialog = new Lang.Class({
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
- this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
+ this._userVerifier.connect('reset', Lang.bind(this, this._reset));
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
this._userVerifier.connect('hide-login-hint', Lang.bind(this, this._hideLoginHint));
this._verifyingUser = false;
@@ -695,6 +695,8 @@ const LoginDialog = new Lang.Class({
Lang.bind(this, this._updateBanner));
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
Lang.bind(this, this._updateBanner));
+ this._settings.connect('changed::' + GdmUtil.DISABLE_USER_LIST_KEY,
+ Lang.bind(this, this._updateDisableUserList));
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
@@ -702,7 +704,8 @@ const LoginDialog = new Lang.Class({
this._updateBanner();
this._titleLabel = new St.Label({ style_class: 'login-dialog-title',
- text: C_("title", "Sign In") });
+ text: C_("title", "Sign In"),
+ visible: false });
this.contentLayout.add(this._titleLabel,
{ y_fill: false,
@@ -770,7 +773,7 @@ const LoginDialog = new Lang.Class({
x_align: St.Align.START,
x_fill: true });
- this._notListedButton.connect('clicked', Lang.bind(this, this._onNotListedClicked));
+ this._notListedButton.connect('clicked', Lang.bind(this, this._hideUserListAndLogIn));
this.contentLayout.add(this._notListedButton,
{ expand: false,
@@ -796,6 +799,21 @@ const LoginDialog = new Lang.Class({
},
+ _updateDisableUserList: function() {
+ let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
+
+ // If this is the first time around, set initial focus
+ if (this._disableUserList == undefined && disableUserList)
+ this.setInitialKeyFocus(this._promptEntry);
+
+ if (disableUserList != this._disableUserList) {
+ this._disableUserList = disableUserList;
+
+ if (!this._verifyingUser)
+ this._reset();
+ }
+ },
+
_updateBanner: function() {
let enabled = this._settings.get_boolean(GdmUtil.BANNER_MESSAGE_KEY);
let text = this._settings.get_string(GdmUtil.BANNER_MESSAGE_TEXT_KEY);
@@ -808,32 +826,15 @@ const LoginDialog = new Lang.Class({
}
},
- _onReset: function(client, serviceName) {
+ _reset: function() {
this._promptMessage.hide();
-
- let tasks = [this._hidePrompt,
-
- new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
- this._fadeInNotListedButton]),
-
- function() {
- this._sessionList.close();
- this._promptLoginHint.hide();
- this._userList.actor.show();
- this._userList.actor.opacity = 255;
- return this._userList.showItems();
- },
-
- function() {
- this._userList.actor.reactive = true;
- this._userList.actor.grab_key_focus();
- }];
-
this._user = null;
this._verifyingUser = false;
- let batch = new Batch.ConsecutiveBatch(this, tasks);
- batch.run();
+ if (this._disableUserList)
+ this._hideUserListAndLogIn();
+ else
+ this._showUserList();
},
_onDefaultSessionChanged: function(client, sessionId) {
@@ -906,14 +907,16 @@ const LoginDialog = new Lang.Class({
_showPrompt: function() {
let hold = new Batch.Hold();
- let buttons = [{ action: Lang.bind(this, this.cancel),
- label: _("Cancel"),
- key: Clutter.Escape },
- { action: Lang.bind(this, function() {
+ let buttons = [];
+ if (!this._disableUserList || this._verifyingUser)
+ buttons.push({ action: Lang.bind(this, this.cancel),
+ label: _("Cancel"),
+ key: Clutter.Escape });
+ buttons.push({ action: Lang.bind(this, function() {
hold.release();
- }),
- label: C_("button", "Sign In"),
- default: true }];
+ }),
+ label: C_("button", "Sign In"),
+ default: true });
let tasks = [function() {
return this._fadeInPrompt();
@@ -1111,7 +1114,7 @@ const LoginDialog = new Lang.Class({
}));
},
- _onNotListedClicked: function() {
+ _hideUserListAndLogIn: function() {
let tasks = [function() {
return this._userList.hideItems();
},
@@ -1135,6 +1138,29 @@ const LoginDialog = new Lang.Class({
batch.run();
},
+ _showUserList: function() {
+ let tasks = [this._hidePrompt,
+
+ new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
+ this._fadeInNotListedButton]),
+
+ function() {
+ this._sessionList.close();
+ this._promptLoginHint.hide();
+ this._userList.actor.show();
+ this._userList.actor.opacity = 255;
+ return this._userList.showItems();
+ },
+
+ function() {
+ this._userList.actor.reactive = true;
+ this._userList.actor.grab_key_focus();
+ }];
+
+ let batch = new Batch.ConsecutiveBatch(this, tasks);
+ batch.run();
+ },
+
_fadeInBanner: function() {
return GdmUtil.fadeInActor(this._bannerLabel);
},
@@ -1216,6 +1242,8 @@ const LoginDialog = new Lang.Class({
this._userList.addUser(users[i]);
}
+ this._updateDisableUserList();
+
this._userManager.connect('user-added',
Lang.bind(this, function(userManager, user) {
this._userList.addUser(user);
diff --git a/js/gdm/util.js b/js/gdm/util.js
index d71e55f..881d859 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -23,6 +23,7 @@ const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
const ALLOWED_FAILURES_KEY = 'allowed-failures';
const LOGO_KEY = 'logo';
+const DISABLE_USER_LIST_KEY = 'disable-user-list';
function fadeInActor(actor) {
if (actor.opacity == 255 && actor.visible)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]