[gnome-control-center/wip/feborges/new-users-panel: 7/7] user-accounts: Select main user in the carousel when user_removed



commit 79423a56b8792cb630e7d5ddc9c5e6194da3a743
Author: Felipe Borges <felipeborges gnome org>
Date:   Sat Dec 10 23:08:29 2016 +0100

    user-accounts: Select main user in the carousel when user_removed
    
    After the removal of a user, reset the carousel to the main user.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767065

 panels/user-accounts/um-user-panel.c |   45 ++++++++++++++++++++-------------
 1 files changed, 27 insertions(+), 18 deletions(-)
---
diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c
index 1050fe6..a8d156e 100644
--- a/panels/user-accounts/um-user-panel.c
+++ b/panels/user-accounts/um-user-panel.c
@@ -246,6 +246,26 @@ sort_users (gconstpointer a, gconstpointer b)
         return result;
 }
 
+static gint
+user_compare (gconstpointer i,
+              gconstpointer u)
+{
+        UmCarouselItem *item;
+        ActUser *user;
+        gint uid_a, uid_b;
+        gint result;
+
+        item = (UmCarouselItem *) i;
+        user = ACT_USER (u);
+
+        uid_a = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "uid"));
+        uid_b = act_user_get_uid (user);
+
+        result = uid_a - uid_b;
+
+        return result;
+}
+
 static void
 reload_users (CcUserPanelPrivate *d)
 {
@@ -266,6 +286,8 @@ reload_users (CcUserPanelPrivate *d)
                 user_added (d->um, user, d);
         }
         g_slist_free (list);
+
+
 }
 
 static void
@@ -283,26 +305,13 @@ user_removed (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
         /* Show the current user */
         user = act_user_manager_get_user_by_id (d->um, getuid ());
         show_user (user, d);
-}
-
-static gint
-user_compare (gconstpointer i,
-              gconstpointer u)
-{
-        UmCarouselItem *item;
-        ActUser *user;
-        gint uid_a, uid_b;
-        gint result;
-
-        item = (UmCarouselItem *) i;
-        user = ACT_USER (u);
-
-        uid_a = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "uid"));
-        uid_b = act_user_get_uid (user);
 
-        result = uid_a - uid_b;
+        if (show_carousel) {
+                UmCarouselItem *item;
 
-        return result;
+                item = um_carousel_find_item (d->carousel, user, user_compare);
+                um_carousel_select_item (d->carousel, item);
+        }
 }
 
 static void


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