diff --git a/panels/user-accounts/data/account-dialog.ui b/panels/user-accounts/data/account-dialog.ui
index 03d8ffa54..a508ecd30 100644
--- a/panels/user-accounts/data/account-dialog.ui
+++ b/panels/user-accounts/data/account-dialog.ui
@@ -335,11 +335,14 @@
diff --git a/panels/user-accounts/data/password-dialog.ui b/panels/user-accounts/data/password-dialog.ui
index bf2476955..283f703d1 100644
--- a/panels/user-accounts/data/password-dialog.ui
+++ b/panels/user-accounts/data/password-dialog.ui
@@ -187,10 +187,13 @@
diff --git a/panels/user-accounts/pw-utils.c b/panels/user-accounts/pw-utils.c
index 7c31e56b1..49d2f77aa 100644
--- a/panels/user-accounts/pw-utils.c
+++ b/panels/user-accounts/pw-utils.c
@@ -127,7 +127,7 @@ pw_strength (const gchar *password,
const gchar **hint,
gint *strength_level)
{
- gint rv, level = 0;
+ gint rv, level, length = 0;
gdouble strength = 0.0;
void *auxerror;
@@ -135,17 +135,21 @@ pw_strength (const gchar *password,
password, old_password, username,
&auxerror);
+ if (password != NULL)
+ length = strlen (password);
+
strength = CLAMP (0.01 * rv, 0.0, 1.0);
if (rv < 0) {
+ level = (length > 0) ? 1 : 0;
}
else if (strength < 0.50) {
- level = 1;
- } else if (strength < 0.75) {
level = 2;
- } else if (strength < 0.90) {
+ } else if (strength < 0.75) {
level = 3;
- } else {
+ } else if (strength < 0.90) {
level = 4;
+ } else {
+ level = 5;
}
*hint = pw_error_hint (rv);
diff --git a/panels/user-accounts/um-account-dialog.c b/panels/user-accounts/um-account-dialog.c
index 94191fafe..91cba2ec2 100644
--- a/panels/user-accounts/um-account-dialog.c
+++ b/panels/user-accounts/um-account-dialog.c
@@ -282,7 +282,7 @@ update_password_strength (UmAccountDialog *self)
gtk_label_set_label (GTK_LABEL (self->local_hint), hint);
gtk_level_bar_set_value (GTK_LEVEL_BAR (self->local_strength_indicator), strength_level);
- if (strength_level > 0) {
+ if (strength_level > 1) {
set_entry_validation_checkmark (GTK_ENTRY (self->local_password));
} else if (strlen (password) == 0) {
set_entry_generation_icon (GTK_ENTRY (self->local_password));
diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c
index 9b7974396..6921b881c 100644
--- a/panels/user-accounts/um-password-dialog.c
+++ b/panels/user-accounts/um-password-dialog.c
@@ -84,7 +84,7 @@ update_password_strength (UmPasswordDialog *um)
gtk_level_bar_set_value (GTK_LEVEL_BAR (um->strength_indicator), strength_level);
gtk_label_set_label (GTK_LABEL (um->password_hint), hint);
- if (strength_level > 0) {
+ if (strength_level > 1) {
set_entry_validation_checkmark (GTK_ENTRY (um->password_entry));
} else if (strlen (password) == 0) {
set_entry_generation_icon (GTK_ENTRY (um->password_entry));