summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Cameron <brian.cameron@sun.com>2007-02-08 06:13:46 +0000
committerBrian Cameron <bcameron@src.gnome.org>2007-02-08 06:13:46 +0000
commitec209e95b742464faac1f314abd8a833cdedfca6 (patch)
tree887938ae2f41ba24c5a384bdb58ec4445052b647
parentb6ee9b6057f995a7d7ae8e2e2c5b525bc75840fd (diff)
downloadgdm-ec209e95b742464faac1f314abd8a833cdedfca6.tar.gz
Rework how the "Start Again" button is made sensitive/insensitive so it
2007-02-08 Brian Cameron <brian.cameron@sun.com> * gui/gdmlogin.c, gui/greeter/greeter.c: Rework how the "Start Again" button is made sensitive/insensitive so it better works with PAM modules. Better to not make assumptions about whether PAM is asking for username/password. svn path=/trunk/; revision=4569
-rw-r--r--ChangeLog7
-rw-r--r--gui/gdmlogin.c16
-rw-r--r--gui/greeter/greeter.c29
3 files changed, 32 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index cdeff7aa..7e6fec64 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2007-02-08 Brian Cameron <brian.cameron@sun.com>
+ * gui/gdmlogin.c, gui/greeter/greeter.c: Rework how the "Start
+ Again" button is made sensitive/insensitive so it better works
+ with PAM modules. Better to not make assumptions about whether
+ PAM is asking for username/password.
+
+2007-02-08 Brian Cameron <brian.cameron@sun.com>
+
* gdm-build.sh: Remove this old script for building GDM. Not used
anymore.
* autogen.sh: Change CVS references to SVN.
diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c
index 9e405948..69579dec 100644
--- a/gui/gdmlogin.c
+++ b/gui/gdmlogin.c
@@ -161,6 +161,8 @@ extern const gchar *current_session;
extern gboolean session_dir_whacked_out;
extern gint gdm_timed_delay;
+static gboolean first_prompt = TRUE;
+
static void login_window_resize (gboolean force);
/* Background program logic */
@@ -1531,7 +1533,6 @@ process_operation (guchar op_code,
GtkWidget *dlg;
static gboolean replace_msg = TRUE;
static gboolean messages_to_give = FALSE;
- gboolean greeter_probably_login_prompt = FALSE;
gint lookup_status = SESSION_LOOKUP_SUCCESS;
gchar *firstmsg = NULL;
gchar *secondmsg = NULL;
@@ -1557,15 +1558,15 @@ process_operation (guchar op_code,
gdm_config_get_string (GDM_KEY_SOUND_ON_LOGIN_FILE),
gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN));
gtk_label_set_text_with_mnemonic (GTK_LABEL (label), _("_Username:"));
- greeter_probably_login_prompt = TRUE;
- gtk_widget_set_sensitive (start_again_button, FALSE);
} else {
- gtk_widget_set_sensitive (start_again_button, TRUE);
if (tmp != NULL)
gtk_label_set_text (GTK_LABEL (label), tmp);
}
g_free (tmp);
+ gtk_widget_set_sensitive (GTK_WIDGET (start_again_button), !first_prompt);
+ first_prompt = FALSE;
+
gtk_widget_show (GTK_WIDGET (label));
gtk_entry_set_text (GTK_ENTRY (entry), "");
gtk_entry_set_max_length (GTK_ENTRY (entry), PW_ENTRY_SIZE);
@@ -1588,15 +1589,16 @@ process_operation (guchar op_code,
case GDM_NOECHO:
tmp = ve_locale_to_utf8 (args);
if (tmp != NULL && strcmp (tmp, _("Password:")) == 0) {
- gtk_widget_set_sensitive (start_again_button, TRUE);
gtk_label_set_text_with_mnemonic (GTK_LABEL (label), _("_Password:"));
} else {
- gtk_widget_set_sensitive (start_again_button, FALSE);
if (tmp != NULL)
gtk_label_set_text (GTK_LABEL (label), tmp);
}
g_free (tmp);
+ gtk_widget_set_sensitive (GTK_WIDGET (start_again_button), !first_prompt);
+ first_prompt = FALSE;
+
gtk_widget_show (GTK_WIDGET (label));
gtk_entry_set_text (GTK_ENTRY (entry), "");
gtk_entry_set_max_length (GTK_ENTRY (entry), PW_ENTRY_SIZE);
@@ -1817,6 +1819,8 @@ process_operation (guchar op_code,
curuser = NULL;
}
+ first_prompt = TRUE;
+
gtk_widget_set_sensitive (entry, TRUE);
gtk_widget_set_sensitive (ok_button, FALSE);
gtk_widget_set_sensitive (start_again_button, FALSE);
diff --git a/gui/greeter/greeter.c b/gui/greeter/greeter.c
index 0b9d107f..2ff4de5a 100644
--- a/gui/greeter/greeter.c
+++ b/gui/greeter/greeter.c
@@ -85,6 +85,7 @@ extern GtkButton *gtk_ok_button;
extern GtkButton *gtk_start_again_button;
gboolean greeter_probably_login_prompt = FALSE;
+static gboolean first_prompt = TRUE;
static void process_operation (guchar opcode, const gchar *args);
@@ -197,16 +198,15 @@ process_operation (guchar op_code,
gdm_config_get_string (GDM_KEY_SOUND_ON_LOGIN_FILE),
gdm_config_get_bool (GDM_KEY_SOUND_ON_LOGIN));
greeter_probably_login_prompt = TRUE;
- if (gtk_start_again_button != NULL)
- gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), FALSE);
- } else {
- greeter_probably_login_prompt = FALSE;
- if (gtk_start_again_button != NULL)
- gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), TRUE);
}
if (gtk_ok_button != NULL)
gtk_widget_set_sensitive (GTK_WIDGET (gtk_ok_button), FALSE);
+ if (gtk_start_again_button != NULL)
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), !first_prompt);
+
+ first_prompt = FALSE;
+
greeter_ignore_buttons (FALSE);
greeter_item_pam_prompt (tmp, PW_ENTRY_SIZE, TRUE);
@@ -216,17 +216,16 @@ process_operation (guchar op_code,
case GDM_NOECHO:
tmp = ve_locale_to_utf8 (args);
- if (tmp != NULL && strcmp (tmp, _("Password:")) == 0) {
- if (gtk_start_again_button != NULL)
- gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), TRUE);
- greeter_probably_login_prompt = FALSE;
- } else {
- if (gtk_start_again_button != NULL)
- gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), FALSE);
- }
+ greeter_probably_login_prompt = FALSE;
+
if (gtk_ok_button != NULL)
gtk_widget_set_sensitive (GTK_WIDGET (gtk_ok_button), FALSE);
+ if (gtk_start_again_button != NULL)
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), !first_prompt);
+
+ first_prompt = FALSE;
+
greeter_ignore_buttons (FALSE);
greeter_item_pam_prompt (tmp, PW_ENTRY_SIZE, FALSE);
g_free (tmp);
@@ -379,6 +378,8 @@ process_operation (guchar op_code,
if (gtk_start_again_button != NULL)
gtk_widget_set_sensitive (GTK_WIDGET (gtk_start_again_button), FALSE);
+ first_prompt = TRUE;
+
conversation_info = greeter_lookup_id ("pam-conversation");
if (conversation_info)