user-accounts: Correctly hide password mismatch warnings

The logic for the password mismatch warnings didn't handle the case where
you deleted both the passwords - it would still show them as not
matching.

Fix this by handling the three cases:
- Passwords are different
- Passwords are the same
- No passwords entered
This commit is contained in:
Robert Ancell 2018-07-10 15:18:43 +02:00
parent 525adcf10b
commit 5e91cc7140
2 changed files with 7 additions and 6 deletions

View file

@ -456,17 +456,18 @@ update_password_match (UmAccountDialog *self)
{ {
const gchar *password; const gchar *password;
const gchar *verify; const gchar *verify;
const gchar *message = "";
password = gtk_entry_get_text (GTK_ENTRY (self->local_password)); password = gtk_entry_get_text (GTK_ENTRY (self->local_password));
verify = gtk_entry_get_text (GTK_ENTRY (self->local_verify)); verify = gtk_entry_get_text (GTK_ENTRY (self->local_verify));
if (strlen (verify) != 0) { if (strlen (verify) != 0) {
if (strcmp (password, verify) != 0) { if (strcmp (password, verify) != 0) {
gtk_label_set_label (GTK_LABEL (self->local_verify_hint), _("Passwords do not match.")); message = _("Passwords do not match.");
} else { } else {
gtk_label_set_label (GTK_LABEL (self->local_verify_hint), "");
set_entry_validation_checkmark (GTK_ENTRY (self->local_verify)); set_entry_validation_checkmark (GTK_ENTRY (self->local_verify));
} }
} }
gtk_label_set_label (GTK_LABEL (self->local_verify_hint), message);
} }
static void static void

View file

@ -281,20 +281,20 @@ update_password_match (UmPasswordDialog *um)
{ {
const char *password; const char *password;
const char *verify; const char *verify;
const char *message = "";
password = gtk_entry_get_text (GTK_ENTRY (um->password_entry)); password = gtk_entry_get_text (GTK_ENTRY (um->password_entry));
verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry)); verify = gtk_entry_get_text (GTK_ENTRY (um->verify_entry));
if (strlen (password) > 0 && strlen (verify) > 0) { if (strlen (verify) > 0) {
if (strcmp (password, verify) != 0) { if (strcmp (password, verify) != 0) {
gtk_label_set_label (GTK_LABEL (um->verify_hint), message = _("The passwords do not match.");
_("The passwords do not match."));
} }
else { else {
gtk_label_set_label (GTK_LABEL (um->verify_hint), "");
set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry)); set_entry_validation_checkmark (GTK_ENTRY (um->verify_entry));
} }
} }
gtk_label_set_label (GTK_LABEL (um->verify_hint), message);
} }
static gboolean static gboolean