diff --git a/panels/user-accounts/data/password-dialog.ui b/panels/user-accounts/data/password-dialog.ui index cb23bc4ad..47ca93ee6 100644 --- a/panels/user-accounts/data/password-dialog.ui +++ b/panels/user-accounts/data/password-dialog.ui @@ -220,18 +220,6 @@ 3 - - - True - False - gtk-apply - start - - - 2 - 3 - - 0 diff --git a/panels/user-accounts/pw-utils.c b/panels/user-accounts/pw-utils.c index bc265a726..591373e90 100644 --- a/panels/user-accounts/pw-utils.c +++ b/panels/user-accounts/pw-utils.c @@ -115,8 +115,9 @@ pw_error_hint (gint error) case PWQ_ERROR_MIN_LENGTH: return C_("Password hint", "Try to add more letters, numbers and symbols."); case PWQ_ERROR_EMPTY_PASSWORD: - default: return C_("Password hint", "Mix uppercase and lowercase and use a number or two."); + default: + return C_("Password hint", "Good password! Adding more letters, numbers and punctuation will make it stronger."); } } diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c index 5ced5c0ed..0e267bb70 100644 --- a/panels/user-accounts/um-password-dialog.c +++ b/panels/user-accounts/um-password-dialog.c @@ -36,7 +36,7 @@ #include "run-passwd.h" #include "pw-utils.h" -#define PASSWORD_CHECK_TIMEOUT 1000 +#define PASSWORD_CHECK_TIMEOUT 600 struct _UmPasswordDialog { GtkWidget *dialog; @@ -56,7 +56,6 @@ struct _UmPasswordDialog { GtkWidget *old_password_label; GtkWidget *old_password_entry; - GtkWidget *old_password_checkmark; gboolean old_password_ok; gint old_password_entry_timeout_id; @@ -101,6 +100,12 @@ update_password_strength (UmPasswordDialog *um) gtk_widget_set_sensitive (um->verify_entry, strength_level > 0); } + if (strength_level > 0) { + set_entry_validation_checkmark (GTK_ENTRY (um->password_entry)); + } else { + clear_entry_validation_error (GTK_ENTRY (um->password_entry)); + } + return strength_level; } @@ -293,11 +298,9 @@ update_password_match (UmPasswordDialog *um) if (strcmp (password, verify) != 0) { gtk_label_set_label (GTK_LABEL (um->password_hint), _("The passwords do not match.")); - set_entry_validation_error (GTK_ENTRY (um->verify_entry), - _("Passwords do not match")); } else { - clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); + set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry)); } } } @@ -325,6 +328,8 @@ password_entry_changed (GtkEntry *entry, } clear_entry_validation_error (GTK_ENTRY (entry)); + clear_entry_validation_error (GTK_ENTRY (um->verify_entry)); + gtk_widget_set_sensitive (um->ok_button, FALSE); um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT, (GSourceFunc) password_entry_timeout, @@ -353,13 +358,10 @@ auth_cb (PasswdHandler *handler, { if (error) { um->old_password_ok = FALSE; - set_entry_validation_error (GTK_ENTRY (um->old_password_entry), - _("Wrong password")); } else { um->old_password_ok = TRUE; - clear_entry_validation_error (GTK_ENTRY (um->old_password_entry)); - gtk_widget_show (um->old_password_checkmark); + set_entry_validation_checkmark (GTK_ENTRY (um->old_password_entry)); } update_sensitivity (um); @@ -370,6 +372,8 @@ old_password_entry_timeout (UmPasswordDialog *um) { const char *text; + update_sensitivity (um); + text = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry)); if (strlen (text) > 0 && !um->old_password_ok) { passwd_authenticate (um->passwd_handler, text, (PasswdCallback)auth_cb, um); @@ -405,11 +409,10 @@ old_password_entry_changed (GtkEntry *entry, um->old_password_entry_timeout_id = 0; } - gtk_widget_hide (um->old_password_checkmark); clear_entry_validation_error (GTK_ENTRY (entry)); - um->old_password_ok = FALSE; - update_sensitivity (um); + gtk_widget_set_sensitive (um->ok_button, FALSE); + um->old_password_ok = FALSE; um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT, (GSourceFunc) old_password_entry_timeout, um); @@ -485,8 +488,6 @@ um_password_dialog_new (void) G_CALLBACK (old_password_entry_changed), um); um->old_password_entry = widget; um->old_password_label = (GtkWidget *) gtk_builder_get_object (builder, "old-password-label"); - um->old_password_checkmark = (GtkWidget *) gtk_builder_get_object (builder, "old-password-checkmark"); - um->old_password_entry_timeout_id = 0; widget = (GtkWidget *) gtk_builder_get_object (builder, "verify-entry"); g_signal_connect (widget, "notify::text", @@ -494,7 +495,6 @@ um_password_dialog_new (void) g_signal_connect_after (widget, "focus-out-event", G_CALLBACK (password_entry_focus_out), um); um->verify_entry = widget; - um->password_entry_timeout_id = 0; widget = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator-label"); len = pw_strength_hint_get_width_chars (); @@ -549,7 +549,6 @@ um_password_dialog_set_user (UmPasswordDialog *um, gtk_entry_set_text (GTK_ENTRY (um->password_entry), ""); gtk_entry_set_text (GTK_ENTRY (um->verify_entry), ""); gtk_entry_set_text (GTK_ENTRY (um->old_password_entry), ""); - gtk_widget_hide (um->old_password_checkmark); if (act_user_get_uid (um->user) == getuid ()) { mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR); diff --git a/panels/user-accounts/um-utils.c b/panels/user-accounts/um-utils.c index 529812c7a..a411f92cd 100644 --- a/panels/user-accounts/um-utils.c +++ b/panels/user-accounts/um-utils.c @@ -300,6 +300,14 @@ set_entry_validation_error (GtkEntry *entry, text); } +void +set_entry_validation_checkmark (GtkEntry *entry) +{ + g_object_set (entry, "caps-lock-warning", FALSE, NULL); + gtk_entry_set_icon_from_icon_name (entry, GTK_ENTRY_ICON_SECONDARY, "object-select-symbolic"); + gtk_entry_set_icon_activatable (entry, GTK_ENTRY_ICON_SECONDARY, FALSE); +} + void clear_entry_validation_error (GtkEntry *entry) { diff --git a/panels/user-accounts/um-utils.h b/panels/user-accounts/um-utils.h index 71f712a18..e15a2de52 100644 --- a/panels/user-accounts/um-utils.h +++ b/panels/user-accounts/um-utils.h @@ -40,6 +40,7 @@ void setup_tooltip_with_embedded_icon (GtkWidget *widget, gboolean show_tooltip_now (GtkWidget *widget, GdkEvent *event); +void set_entry_validation_checkmark (GtkEntry *entry); void set_entry_validation_error (GtkEntry *entry, const gchar *text); void clear_entry_validation_error (GtkEntry *entry);