[gnome-control-center] user-accounts: Refactor password change handlers



commit 2f681139509dfe5df7719836f1a7dbbcf5379d33
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Nov 7 09:21:57 2018 +1300

    user-accounts: Refactor password change handlers
    
    Split the signal handler into two to remove quirky behaviour of clearing
    the validation ticks depending on which GtkEntry generated the event.

 panels/user-accounts/um-password-dialog.c  | 22 +++++++++++++++++-----
 panels/user-accounts/um-password-dialog.ui |  2 +-
 2 files changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/panels/user-accounts/um-password-dialog.c b/panels/user-accounts/um-password-dialog.c
index 18a6a866e..0792cf05c 100644
--- a/panels/user-accounts/um-password-dialog.c
+++ b/panels/user-accounts/um-password-dialog.c
@@ -280,9 +280,7 @@ password_entry_timeout (UmPasswordDialog *um)
 }
 
 static void
-password_entry_changed (UmPasswordDialog *um,
-                        GParamSpec       *pspec,
-                        GtkEntry         *entry)
+recheck_password_match (UmPasswordDialog *um)
 {
         const gchar *password;
 
@@ -291,8 +289,6 @@ password_entry_changed (UmPasswordDialog *um,
                 um->password_entry_timeout_id = 0;
         }
 
-        clear_entry_validation_error (entry);
-        clear_entry_validation_error (um->verify_entry);
         gtk_widget_set_sensitive (GTK_WIDGET (um->ok_button), FALSE);
 
         password = gtk_entry_get_text (um->password_entry);
@@ -305,6 +301,21 @@ password_entry_changed (UmPasswordDialog *um,
                                                        um);
 }
 
+static void
+password_entry_changed (UmPasswordDialog *um)
+{
+        clear_entry_validation_error (um->password_entry);
+        clear_entry_validation_error (um->verify_entry);
+        recheck_password_match (um);
+}
+
+static void
+verify_entry_changed (UmPasswordDialog *um)
+{
+        clear_entry_validation_error (um->verify_entry);
+        recheck_password_match (um);
+}
+
 static gboolean
 password_entry_focus_out_cb (UmPasswordDialog *um)
 {
@@ -464,6 +475,7 @@ um_password_dialog_class_init (UmPasswordDialogClass *klass)
         gtk_widget_class_bind_template_callback (widget_class, password_entry_icon_press_cb);
         gtk_widget_class_bind_template_callback (widget_class, password_entry_key_press_cb);
         gtk_widget_class_bind_template_callback (widget_class, password_entry_timeout);
+        gtk_widget_class_bind_template_callback (widget_class, verify_entry_changed);
 }
 
 static void
diff --git a/panels/user-accounts/um-password-dialog.ui b/panels/user-accounts/um-password-dialog.ui
index eb3664236..299fa64a5 100644
--- a/panels/user-accounts/um-password-dialog.ui
+++ b/panels/user-accounts/um-password-dialog.ui
@@ -80,7 +80,7 @@
                     <property name="hexpand">True</property>
                     <property name="activates_default">True</property>
                     <property name="input_purpose">password</property>
-                    <signal name="notify::text" handler="password_entry_changed" object="UmPasswordDialog" 
swapped="yes"/>
+                    <signal name="notify::text" handler="verify_entry_changed" object="UmPasswordDialog" 
swapped="yes"/>
                     <signal name="activate" handler="password_entry_timeout" object="UmPasswordDialog" 
swapped="yes"/>
                     <signal name="focus-out-event" handler="password_entry_focus_out_cb" after="yes" 
object="UmPasswordDialog" swapped="yes"/>
                   </object>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]