[gnome-control-center/wip/feborges/new-users-panel: 23/25] user-accounts: Hide UmCarousel when there's just a single user



commit ab3b85cb7cd9e1d40372ed68e69087346e40fb47
Author: Felipe Borges <felipeborges gnome org>
Date:   Fri Aug 5 13:56:22 2016 +0200

    user-accounts: Hide UmCarousel when there's just a single user
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767065

 panels/user-accounts/data/user-accounts-dialog.ui |    2 +-
 panels/user-accounts/um-arrow-frame.c             |    8 ++++++--
 panels/user-accounts/um-user-panel.c              |    8 +++++++-
 3 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/panels/user-accounts/data/user-accounts-dialog.ui 
b/panels/user-accounts/data/user-accounts-dialog.ui
index 2703d54..304675b 100644
--- a/panels/user-accounts/data/user-accounts-dialog.ui
+++ b/panels/user-accounts/data/user-accounts-dialog.ui
@@ -50,7 +50,7 @@
         <property name="orientation">vertical</property>
         <child>
           <object class="UmCarousel" id="carousel">
-            <property name="visible">True</property>
+            <property name="visible">False</property>
             <property name="can_focus">True</property>
           </object>
         </child>
diff --git a/panels/user-accounts/um-arrow-frame.c b/panels/user-accounts/um-arrow-frame.c
index b20ab3e..c751bc1 100644
--- a/panels/user-accounts/um-arrow-frame.c
+++ b/panels/user-accounts/um-arrow-frame.c
@@ -217,7 +217,8 @@ um_arrow_frame_draw (GtkWidget *widget,
   GtkWidget *child;
 
   um_arrow_frame__draw_background (frame, cr);
-  um_arrow_frame__draw_arrow (frame, cr);
+  if (frame->item)
+    um_arrow_frame__draw_arrow (frame, cr);
 
   child = gtk_bin_get_child (GTK_BIN (widget));
 
@@ -406,8 +407,11 @@ void
 um_arrow_frame_set_carousel (UmArrowFrame *frame,
                              UmCarousel   *carousel)
 {
-  if (carousel == NULL)
+  if (carousel == NULL) {
+    frame->margin_top = 0;
+    um_arrow_frame_set_item (carousel, NULL, frame);
     return;
+  }
 
   frame->carousel = carousel;
 
diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c
index a242025..de2eca1 100644
--- a/panels/user-accounts/um-user-panel.c
+++ b/panels/user-accounts/um-user-panel.c
@@ -206,8 +206,9 @@ user_added (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
         g_debug ("user added: %d %s\n", act_user_get_uid (user), get_real_or_user_name (user));
 
         d->other_accounts++;
-        if (d->other_accounts > 0) {
+        if (d->other_accounts > 1) {
                 um_arrow_frame_set_carousel (d->arrow_frame, d->carousel);
+                gtk_widget_set_visible (GTK_WIDGET (d->carousel), TRUE);
         }
 
         g_list_store_append (d->users_list, user);
@@ -229,6 +230,11 @@ user_removed (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
                         break;
                 }
         }
+
+        if (d->other_accounts == 1) {
+                um_arrow_frame_set_carousel (d->arrow_frame, NULL);
+                gtk_widget_set_visible (GTK_WIDGET (d->carousel), FALSE);
+        }
 }
 
 static void


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