[gnome-todo/wip/selection-mode] window: remove list item on signal



commit d3e9f922168a480879c39158b98d4b372920a1ff
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sat Aug 22 19:48:29 2015 -0300

    window: remove list item on signal
    
    When manager sends the ::list-removed signal, remove the
    related task list item if it exists.

 src/gtd-window.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/src/gtd-window.c b/src/gtd-window.c
index 577aa1a..356329a 100644
--- a/src/gtd-window.c
+++ b/src/gtd-window.c
@@ -429,6 +429,26 @@ gtd_window__list_added (GtdManager  *manager,
 }
 
 static void
+gtd_window__list_removed (GtdManager  *manager,
+                          GtdTaskList *list,
+                          gpointer     user_data)
+{
+  GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv;
+  GList *children;
+  GList *l;
+
+  children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox));
+
+  for (l = children; l != NULL; l = l->next)
+    {
+      if (gtd_task_list_item_get_list (l->data) == list)
+        gtk_widget_destroy (l->data);
+    }
+
+  g_list_free (children);
+}
+
+static void
 gtd_window_constructed (GObject *object)
 {
   GtdWindowPrivate *priv = GTD_WINDOW (object)->priv;
@@ -522,6 +542,10 @@ gtd_window_set_property (GObject      *object,
                         "list-added",
                         G_CALLBACK (gtd_window__list_added),
                         self);
+      g_signal_connect (self->priv->manager,
+                        "list-removed",
+                        G_CALLBACK (gtd_window__list_removed),
+                        self);
 
       /* Add already loaded lists */
       lists = gtd_manager_get_task_lists (self->priv->manager);


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