diff options
author | Brian Cameron <brian.cameron@sun.com> | 2007-02-08 06:13:46 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2007-02-08 06:13:46 +0000 |
commit | ec209e95b742464faac1f314abd8a833cdedfca6 (patch) | |
tree | 887938ae2f41ba24c5a384bdb58ec4445052b647 | |
parent | b6ee9b6057f995a7d7ae8e2e2c5b525bc75840fd (diff) | |
download | gdm-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-- | ChangeLog | 7 | ||||
-rw-r--r-- | gui/gdmlogin.c | 16 | ||||
-rw-r--r-- | gui/greeter/greeter.c | 29 |
3 files changed, 32 insertions, 20 deletions
@@ -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) |