[gnome-control-center] user-accounts: Replace GtkStack child names with widget references



commit cb6241f5409ee787bb30833b8759cc00c22d7c34
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Nov 20 15:14:31 2019 +1300

    user-accounts: Replace GtkStack child names with widget references
    
    The child names are easier to break if widgets are changed - this can't be
    detected by the compiler.

 panels/user-accounts/cc-user-panel.c  | 18 +++++++-----------
 panels/user-accounts/cc-user-panel.ui | 18 +++---------------
 2 files changed, 10 insertions(+), 26 deletions(-)
---
diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c
index 5a0bab308..e1d10c5af 100644
--- a/panels/user-accounts/cc-user-panel.c
+++ b/panels/user-accounts/cc-user-panel.c
@@ -84,6 +84,7 @@ struct _CcUserPanel {
         GtkLabel        *last_login_button_label;
         GtkLabel        *last_login_label;
         GtkLockButton   *lock_button;
+        GtkBox          *no_users_box;
         GtkRevealer     *notification_revealer;
         GtkButton       *password_button;
         GtkLabel        *password_button_label;
@@ -93,6 +94,7 @@ struct _CcUserPanel {
         CcUserImage     *user_icon_image;
         CcUserImage     *user_icon_image2;
         GtkStack        *user_icon_stack;
+        GtkOverlay      *users_overlay;
 
         ActUser *selected_user;
         GPermission *permission;
@@ -105,14 +107,6 @@ struct _CcUserPanel {
 
 CC_PANEL_REGISTER (CcUserPanel, cc_user_panel)
 
-/* Headerbar button states. */
-#define PAGE_LOCK "_lock"
-#define PAGE_ADDUSER "_adduser"
-
-/* Panel states */
-#define PAGE_NO_USERS "_empty_state"
-#define PAGE_USERS "_users"
-
 static void show_restart_notification (CcUserPanel *self, const gchar *locale);
 static gint user_compare (gconstpointer i, gconstpointer u);
 
@@ -253,7 +247,7 @@ user_added (CcUserPanel *self, ActUser *user)
         show_carousel = (self->other_accounts > 0);
         gtk_revealer_set_reveal_child (GTK_REVEALER (self->carousel), show_carousel);
 
-        gtk_stack_set_visible_child_name (self->stack, PAGE_USERS);
+        gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->users_overlay));
 }
 
 static gint
@@ -315,7 +309,7 @@ reload_users (CcUserPanel *self, ActUser *selected_user)
         g_slist_free (list);
 
         if (cc_carousel_get_item_count (self->carousel) == 0)
-                gtk_stack_set_visible_child_name (self->stack, PAGE_NO_USERS);
+                gtk_stack_set_visible_child (self->stack, GTK_WIDGET (self->no_users_box));
         if (self->other_accounts == 0)
                 gtk_revealer_set_reveal_child (GTK_REVEALER (self->carousel), FALSE);
 
@@ -1198,7 +1192,7 @@ on_permission_changed (CcUserPanel *self)
         is_authorized = g_permission_get_allowed (G_PERMISSION (self->permission));
         self_selected = act_user_get_uid (user) == geteuid ();
 
-        gtk_stack_set_visible_child_name (self->headerbar_button_stack, is_authorized ? PAGE_ADDUSER : 
PAGE_LOCK);
+        gtk_stack_set_visible_child (self->headerbar_button_stack, is_authorized ? GTK_WIDGET 
(self->add_user_button) : GTK_WIDGET (self->lock_button));
 
         gtk_widget_set_sensitive (GTK_WIDGET (self->add_user_button), is_authorized);
         if (is_authorized) {
@@ -1480,6 +1474,7 @@ cc_user_panel_class_init (CcUserPanelClass *klass)
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_button_label);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, last_login_label);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, lock_button);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, no_users_box);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, notification_revealer);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, password_button);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, password_button_label);
@@ -1489,6 +1484,7 @@ cc_user_panel_class_init (CcUserPanelClass *klass)
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, user_icon_image);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, user_icon_image2);
         gtk_widget_class_bind_template_child (widget_class, CcUserPanel, user_icon_stack);
+        gtk_widget_class_bind_template_child (widget_class, CcUserPanel, users_overlay);
 
         gtk_widget_class_bind_template_callback (widget_class, account_type_changed);
         gtk_widget_class_bind_template_callback (widget_class, add_user);
diff --git a/panels/user-accounts/cc-user-panel.ui b/panels/user-accounts/cc-user-panel.ui
index 520202f2e..baa1eead2 100644
--- a/panels/user-accounts/cc-user-panel.ui
+++ b/panels/user-accounts/cc-user-panel.ui
@@ -7,9 +7,6 @@
         <property name="visible">True</property>
         <property name="can_focus">True</property>
       </object>
-      <packing>
-        <property name="name">_lock</property>
-      </packing>
     </child>
     <child>
       <object class="GtkButton" id="add_user_button">
@@ -22,9 +19,6 @@
           <class name="suggested-action"/>
         </style>
       </object>
-      <packing>
-        <property name="name">_adduser</property>
-      </packing>
     </child>
   </object>
   <object class="GtkListStore" id="shortname-model">
@@ -46,9 +40,9 @@
     <child>
       <object class="GtkStack" id="stack">
         <property name="visible">True</property>
-        <property name="visible-child">empty-state</property>
+        <property name="visible-child">no_users_box</property>
         <child>
-          <object class="GtkOverlay" id="overlay">
+          <object class="GtkOverlay" id="users_overlay">
             <property name="visible">True</property>
             <child type="overlay">
               <object class="GtkRevealer" id="notification_revealer">
@@ -460,12 +454,9 @@
               </object>
             </child>
           </object>
-          <packing>
-            <property name="name">_users</property>
-          </packing>
         </child>
         <child>
-          <object class="GtkBox" id="empty-state">
+          <object class="GtkBox" id="no_users_box">
             <property name="visible">True</property>
             <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
             <property name="valign">GTK_ALIGN_CENTER</property>
@@ -497,9 +488,6 @@
               </object>
             </child>
           </object>
-          <packing>
-            <property name="name">_empty_state</property>
-          </packing>
         </child>
       </object>
     </child>


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