[gnome-control-center/wip/oholy/disable-verify-password-entry: 63/64] user-accounts: Validate password before moving focus
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center/wip/oholy/disable-verify-password-entry: 63/64] user-accounts: Validate password before moving focus
- Date: Sat, 12 May 2018 04:10:43 +0000 (UTC)
commit 6356279b642bd8a90d5dc0fe035dbe0a8a70ed1a
Author: Ondrej Holy <oholy redhat com>
Date: Wed Apr 11 10:01:20 2018 +0200
user-accounts: Validate password before moving focus
If <tab> is pressed and password is not yet validated (ie. the verify
entry is not sensitive), focus skips the verify entry, even if the
password is strong enough. Let's validate the password when <tab> is
pressed (ie. before focus change) to prevent this <tab> breakage...
https://gitlab.gnome.org/GNOME/gnome-control-center/issues/38
panels/user-accounts/um-account-dialog.c | 15 +++++++++++++++
panels/user-accounts/um-password-dialog.c | 15 +++++++++++++++
2 files changed, 30 insertions(+)
---
diff --git a/panels/user-accounts/um-account-dialog.c b/panels/user-accounts/um-account-dialog.c
index 896c3db35..9d4e754d3 100644
--- a/panels/user-accounts/um-account-dialog.c
+++ b/panels/user-accounts/um-account-dialog.c
@@ -517,6 +517,20 @@ on_password_focus_out (GtkEntry *entry,
return FALSE;
}
+static gboolean
+on_password_key_press_cb (GtkEntry *entry,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ UmAccountDialog *self = UM_ACCOUNT_DIALOG (user_data);
+ GdkEventKey *key = (GdkEventKey *)event;
+
+ if (key->keyval == GDK_KEY_Tab)
+ local_password_timeout (self);
+
+ return FALSE;
+}
+
static void
on_password_changed (GtkEntry *entry,
GParamSpec *pspec,
@@ -580,6 +594,7 @@ local_init (UmAccountDialog *self)
gtk_widget_set_sensitive (self->local_password, FALSE);
g_signal_connect (self->local_password, "notify::text", G_CALLBACK (on_password_changed), self);
g_signal_connect_after (self->local_password, "focus-out-event", G_CALLBACK (on_password_focus_out),
self);
+ g_signal_connect (self->local_password, "key-press-event", G_CALLBACK (on_password_key_press_cb),
self);
g_signal_connect_swapped (self->local_password, "activate", G_CALLBACK (dialog_validate), self);
g_signal_connect (self->local_password, "icon-press", G_CALLBACK (on_generate), self);
diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c
index b3c8e8b54..97490a883 100644
--- a/panels/user-accounts/um-password-dialog.c
+++ b/panels/user-accounts/um-password-dialog.c
@@ -350,6 +350,19 @@ password_entry_focus_out (GtkWidget *entry,
return FALSE;
}
+static gboolean
+password_key_press (GtkEntry *entry,
+ GdkEvent *event,
+ UmPasswordDialog *um)
+{
+ GdkEventKey *key = (GdkEventKey *)event;
+
+ if (key->keyval == GDK_KEY_Tab)
+ password_entry_timeout (um);
+
+ return FALSE;
+}
+
static void
auth_cb (PasswdHandler *handler,
GError *error,
@@ -481,6 +494,8 @@ um_password_dialog_new (void)
G_CALLBACK (password_entry_changed), um);
g_signal_connect_after (widget, "focus-out-event",
G_CALLBACK (password_entry_focus_out), um);
+ g_signal_connect (widget, "key-press-event",
+ G_CALLBACK (password_key_press), um);
g_signal_connect_swapped (widget, "activate", G_CALLBACK (password_entry_timeout), um);
gtk_entry_set_visibility (GTK_ENTRY (widget), FALSE);
um->password_entry = widget;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]