user-accounts: add positive confirmation to the password dialog
Add checkmarks, remove exclam icons, remove tooltips, change password hints and decrese timeout (by design). https://bugzilla.gnome.org/show_bug.cgi?id=702476
This commit is contained in:
parent
0395197d37
commit
aaf25450ee
5 changed files with 26 additions and 29 deletions
|
@ -220,18 +220,6 @@
|
||||||
<property name="width">3</property>
|
<property name="width">3</property>
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="old-password-checkmark">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="stock">gtk-apply</property>
|
|
||||||
<property name="halign">start</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="left_attach">2</property>
|
|
||||||
<property name="top_attach">3</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
</object>
|
||||||
<packing>
|
<packing>
|
||||||
<property name="position">0</property>
|
<property name="position">0</property>
|
||||||
|
|
|
@ -115,8 +115,9 @@ pw_error_hint (gint error)
|
||||||
case PWQ_ERROR_MIN_LENGTH:
|
case PWQ_ERROR_MIN_LENGTH:
|
||||||
return C_("Password hint", "Try to add more letters, numbers and symbols.");
|
return C_("Password hint", "Try to add more letters, numbers and symbols.");
|
||||||
case PWQ_ERROR_EMPTY_PASSWORD:
|
case PWQ_ERROR_EMPTY_PASSWORD:
|
||||||
default:
|
|
||||||
return C_("Password hint", "Mix uppercase and lowercase and use a number or two.");
|
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.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#include "run-passwd.h"
|
#include "run-passwd.h"
|
||||||
#include "pw-utils.h"
|
#include "pw-utils.h"
|
||||||
|
|
||||||
#define PASSWORD_CHECK_TIMEOUT 1000
|
#define PASSWORD_CHECK_TIMEOUT 600
|
||||||
|
|
||||||
struct _UmPasswordDialog {
|
struct _UmPasswordDialog {
|
||||||
GtkWidget *dialog;
|
GtkWidget *dialog;
|
||||||
|
@ -56,7 +56,6 @@ struct _UmPasswordDialog {
|
||||||
|
|
||||||
GtkWidget *old_password_label;
|
GtkWidget *old_password_label;
|
||||||
GtkWidget *old_password_entry;
|
GtkWidget *old_password_entry;
|
||||||
GtkWidget *old_password_checkmark;
|
|
||||||
gboolean old_password_ok;
|
gboolean old_password_ok;
|
||||||
gint old_password_entry_timeout_id;
|
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);
|
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;
|
return strength_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -293,11 +298,9 @@ update_password_match (UmPasswordDialog *um)
|
||||||
if (strcmp (password, verify) != 0) {
|
if (strcmp (password, verify) != 0) {
|
||||||
gtk_label_set_label (GTK_LABEL (um->password_hint),
|
gtk_label_set_label (GTK_LABEL (um->password_hint),
|
||||||
_("The passwords do not match."));
|
_("The passwords do not match."));
|
||||||
set_entry_validation_error (GTK_ENTRY (um->verify_entry),
|
|
||||||
_("Passwords do not match"));
|
|
||||||
}
|
}
|
||||||
else {
|
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 (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,
|
um->password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
||||||
(GSourceFunc) password_entry_timeout,
|
(GSourceFunc) password_entry_timeout,
|
||||||
|
@ -353,13 +358,10 @@ auth_cb (PasswdHandler *handler,
|
||||||
{
|
{
|
||||||
if (error) {
|
if (error) {
|
||||||
um->old_password_ok = FALSE;
|
um->old_password_ok = FALSE;
|
||||||
set_entry_validation_error (GTK_ENTRY (um->old_password_entry),
|
|
||||||
_("Wrong password"));
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
um->old_password_ok = TRUE;
|
um->old_password_ok = TRUE;
|
||||||
clear_entry_validation_error (GTK_ENTRY (um->old_password_entry));
|
set_entry_validation_checkmark (GTK_ENTRY (um->old_password_entry));
|
||||||
gtk_widget_show (um->old_password_checkmark);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update_sensitivity (um);
|
update_sensitivity (um);
|
||||||
|
@ -370,6 +372,8 @@ old_password_entry_timeout (UmPasswordDialog *um)
|
||||||
{
|
{
|
||||||
const char *text;
|
const char *text;
|
||||||
|
|
||||||
|
update_sensitivity (um);
|
||||||
|
|
||||||
text = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry));
|
text = gtk_entry_get_text (GTK_ENTRY (um->old_password_entry));
|
||||||
if (strlen (text) > 0 && !um->old_password_ok) {
|
if (strlen (text) > 0 && !um->old_password_ok) {
|
||||||
passwd_authenticate (um->passwd_handler, text, (PasswdCallback)auth_cb, um);
|
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;
|
um->old_password_entry_timeout_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_hide (um->old_password_checkmark);
|
|
||||||
clear_entry_validation_error (GTK_ENTRY (entry));
|
clear_entry_validation_error (GTK_ENTRY (entry));
|
||||||
um->old_password_ok = FALSE;
|
gtk_widget_set_sensitive (um->ok_button, FALSE);
|
||||||
update_sensitivity (um);
|
|
||||||
|
|
||||||
|
um->old_password_ok = FALSE;
|
||||||
um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
um->old_password_entry_timeout_id = g_timeout_add (PASSWORD_CHECK_TIMEOUT,
|
||||||
(GSourceFunc) old_password_entry_timeout,
|
(GSourceFunc) old_password_entry_timeout,
|
||||||
um);
|
um);
|
||||||
|
@ -485,8 +488,6 @@ um_password_dialog_new (void)
|
||||||
G_CALLBACK (old_password_entry_changed), um);
|
G_CALLBACK (old_password_entry_changed), um);
|
||||||
um->old_password_entry = widget;
|
um->old_password_entry = widget;
|
||||||
um->old_password_label = (GtkWidget *) gtk_builder_get_object (builder, "old-password-label");
|
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");
|
widget = (GtkWidget *) gtk_builder_get_object (builder, "verify-entry");
|
||||||
g_signal_connect (widget, "notify::text",
|
g_signal_connect (widget, "notify::text",
|
||||||
|
@ -494,7 +495,6 @@ um_password_dialog_new (void)
|
||||||
g_signal_connect_after (widget, "focus-out-event",
|
g_signal_connect_after (widget, "focus-out-event",
|
||||||
G_CALLBACK (password_entry_focus_out), um);
|
G_CALLBACK (password_entry_focus_out), um);
|
||||||
um->verify_entry = widget;
|
um->verify_entry = widget;
|
||||||
um->password_entry_timeout_id = 0;
|
|
||||||
|
|
||||||
widget = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator-label");
|
widget = (GtkWidget *) gtk_builder_get_object (builder, "strength-indicator-label");
|
||||||
len = pw_strength_hint_get_width_chars ();
|
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->password_entry), "");
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->verify_entry), "");
|
gtk_entry_set_text (GTK_ENTRY (um->verify_entry), "");
|
||||||
gtk_entry_set_text (GTK_ENTRY (um->old_password_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 ()) {
|
if (act_user_get_uid (um->user) == getuid ()) {
|
||||||
mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR);
|
mode_change (um, ACT_USER_PASSWORD_MODE_REGULAR);
|
||||||
|
|
|
@ -300,6 +300,14 @@ set_entry_validation_error (GtkEntry *entry,
|
||||||
text);
|
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
|
void
|
||||||
clear_entry_validation_error (GtkEntry *entry)
|
clear_entry_validation_error (GtkEntry *entry)
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,6 +40,7 @@ void setup_tooltip_with_embedded_icon (GtkWidget *widget,
|
||||||
gboolean show_tooltip_now (GtkWidget *widget,
|
gboolean show_tooltip_now (GtkWidget *widget,
|
||||||
GdkEvent *event);
|
GdkEvent *event);
|
||||||
|
|
||||||
|
void set_entry_validation_checkmark (GtkEntry *entry);
|
||||||
void set_entry_validation_error (GtkEntry *entry,
|
void set_entry_validation_error (GtkEntry *entry,
|
||||||
const gchar *text);
|
const gchar *text);
|
||||||
void clear_entry_validation_error (GtkEntry *entry);
|
void clear_entry_validation_error (GtkEntry *entry);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue