[gnome-control-center/wip/feborges/new-users-panel: 14/17] user-accounts: Remove Carousel item when removing account



commit 38d7471de98b6a303af6e5cc1ab957aa767ded49
Author: Felipe Borges <felipeborges gnome org>
Date:   Tue Jul 12 16:19:18 2016 +0200

    user-accounts: Remove Carousel item when removing account
    
    https://bugzilla.gnome.org/show_bug.cgi?id=767065

 panels/user-accounts/um-carousel.c   |    5 +++++
 panels/user-accounts/um-user-panel.c |   15 ++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletions(-)
---
diff --git a/panels/user-accounts/um-carousel.c b/panels/user-accounts/um-carousel.c
index f702058..4f68447 100644
--- a/panels/user-accounts/um-carousel.c
+++ b/panels/user-accounts/um-carousel.c
@@ -215,6 +215,11 @@ model_changed (GListModel *list,
 
                 item = get_item_at_index (self, position);
                 gtk_widget_destroy (GTK_WIDGET (item));
+
+                /* After removing the item, set the selected item to be the first children. */
+                priv->current_button = GTK_RADIO_BUTTON (get_item_at_index (self, 0));
+                gtk_stack_set_visible_child_name (priv->stack, "0");
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->current_button), TRUE);
         }
 
         for (i = 0; i < added; i++) {
diff --git a/panels/user-accounts/um-user-panel.c b/panels/user-accounts/um-user-panel.c
index b00672b..fd11d00 100644
--- a/panels/user-accounts/um-user-panel.c
+++ b/panels/user-accounts/um-user-panel.c
@@ -210,7 +210,20 @@ user_added (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
 static void
 user_removed (ActUserManager *um, ActUser *user, CcUserPanelPrivate *d)
 {
-        g_print ("user removed\n");
+        ActUser *u;
+        int i;
+
+        g_debug ("user removed: %d %s\n", act_user_get_uid (user), get_real_or_user_name (user));
+
+        for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (d->users_list)); i++) {
+                u = g_list_model_get_item (G_LIST_MODEL (d->users_list), i);
+                if (u == user) {
+                        g_list_store_remove (d->users_list, i);
+                        break;
+                }
+        }
+
+        g_object_unref (u);
 }
 
 static void


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