[gnome-shell] Disable the login button when there is no input
- From: Allan Day <allanday src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Disable the login button when there is no input
- Date: Mon, 5 Nov 2012 10:20:21 +0000 (UTC)
commit ae0821e07b93b79083c3e9fdd1ebdf3e201de9fa
Author: StÃphane DÃmurget <stephane demurget free fr>
Date: Thu Nov 1 16:19:17 2012 +0100
Disable the login button when there is no input
You can't login until something has been entered in the password field.
We should therefore make the login button insensitive until you have
entered some text.
https://bugzilla.gnome.org/show_bug.cgi?id=687112
js/gdm/loginDialog.js | 34 +++++++++++++++++++++++++---------
js/ui/unlockDialog.js | 7 +++++++
2 files changed, 32 insertions(+), 9 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index b3240fc..ffd20a0 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -731,6 +731,7 @@ const LoginDialog = new Lang.Class({
x_align: St.Align.START });
this._promptEntry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
can_focus: true });
+ this._promptEntryTextChangedId = 0;
this._promptBox.add(this._promptEntry,
{ expand: true,
x_fill: true,
@@ -901,21 +902,31 @@ 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() {
- hold.release();
- }),
- label: C_("button", "Sign In"),
- default: true }];
+ let cancelButtonInfo = { action: Lang.bind(this, this.cancel),
+ label: _("Cancel"),
+ key: Clutter.Escape };
+ let okButtonInfo = { action: Lang.bind(this, function() {
+ hold.release();
+ }),
+ label: C_("button", "Sign In"),
+ default: true };
let tasks = [function() {
return this._fadeInPrompt();
},
function() {
- this.setButtons(buttons);
+ this.setButtons([cancelButtonInfo, okButtonInfo]);
+
+ let updateOkButtonEnabled = Lang.bind(this, function() {
+ let sensitive = this._promptEntry.text.length > 0;
+ okButtonInfo.button.reactive = sensitive;
+ okButtonInfo.button.can_focus = sensitive;
+ });
+
+ updateOkButtonEnabled();
+
+ this._promptEntryTextChangedId = this._promptEntry.clutter_text.connect('text-changed', updateOkButtonEnabled);
},
hold];
@@ -928,6 +939,11 @@ const LoginDialog = new Lang.Class({
_hidePrompt: function() {
this.setButtons([]);
+ if (this._promptEntryTextChangedId > 0) {
+ this._promptEntry.clutter_text.disconnect(this._promptEntryTextChangedId);
+ this._promptEntryTextChangedId = 0;
+ }
+
let tasks = [function() {
return GdmUtil.fadeOutActor(this._promptBox);
},
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index a902563..30699d9 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -151,6 +151,9 @@ const UnlockDialog = new Lang.Class({
ShellEntry.addContextMenu(this._promptEntry, { isPassword: true });
this.setInitialKeyFocus(this._promptEntry);
this._promptEntry.clutter_text.connect('activate', Lang.bind(this, this._doUnlock));
+ this._promptEntry.clutter_text.connect('text-changed', Lang.bind(this, function() {
+ this._updateOkButtonSensitivity(this._promptEntry.text.length > 0);
+ }));
this._promptLayout.add(this._promptEntry,
{ expand: true,
@@ -203,6 +206,10 @@ const UnlockDialog = new Lang.Class({
_updateSensitivity: function(sensitive) {
this._promptEntry.reactive = sensitive;
this._promptEntry.clutter_text.editable = sensitive;
+ this._updateOkButtonSensitivity(sensitive && this._promptEntry.text.length > 0);
+ },
+
+ _updateOkButtonSensitivity: function(sensitive) {
this._okButton.button.reactive = sensitive;
this._okButton.button.can_focus = sensitive;
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]