[gnome-applets/wip-geiger-task-item] fixup! window-picker: handle item lifecycle in TaskList



commit 6cb0f9f8d7cfe7b8104e49ca947745efc8597281
Author: Sebastian Geiger <sbastig gmx net>
Date:   Fri Apr 3 00:16:19 2020 +0200

    fixup! window-picker: handle item lifecycle in TaskList

 gnome-applets/window-picker/task-list.c | 34 ++++++++++++++++-----------------
 1 file changed, 17 insertions(+), 17 deletions(-)
---
diff --git a/gnome-applets/window-picker/task-list.c b/gnome-applets/window-picker/task-list.c
index e04c8923b..8e96fd55d 100644
--- a/gnome-applets/window-picker/task-list.c
+++ b/gnome-applets/window-picker/task-list.c
@@ -86,6 +86,14 @@ window_get_monitor (WnckWindow *window)
                                              y + h / 2);
 }
 
+static void
+on_window_closed (WnckScreen *screen,
+                  WnckWindow *window,
+                  TaskList *taskList)
+{
+    g_hash_table_remove (taskList->items, window);
+}
+
 static void
 on_task_item_monitor_changed_cb (TaskItem   *item,
                                  WnckWindow *window,
@@ -113,6 +121,9 @@ on_task_item_monitor_changed_cb (TaskItem   *item,
         g_signal_handlers_disconnect_by_func (item,
                                               on_task_item_monitor_changed_cb,
                                               current_list);
+        g_signal_handlers_disconnect_by_func (item,
+                                              on_window_closed,
+                                              current_list);
 
         gtk_container_add (GTK_CONTAINER (list), GTK_WIDGET (item));
         g_hash_table_insert (list->items, window, item);
@@ -120,6 +131,9 @@ on_task_item_monitor_changed_cb (TaskItem   *item,
         g_signal_connect_object (TASK_ITEM (item), "monitor-changed",
                                  G_CALLBACK (on_task_item_monitor_changed_cb), list, 0);
 
+        g_signal_connect_object (list->screen, "window-closed",
+                                 G_CALLBACK (on_window_closed), list, 0);
+
         g_object_unref (item);
 
         gtk_widget_queue_resize (GTK_WIDGET (list));
@@ -171,9 +185,7 @@ on_window_type_changed (WnckWindow *window,
 
   if (window_is_special (window))
     {
-      item = g_hash_table_lookup (list->items, window);
-
-      g_hash_table_remove(list->items, item);
+      g_hash_table_remove (list->items, window);
     }
   else
     {
@@ -215,7 +227,7 @@ clear_windows (TaskList *list)
     g_hash_table_remove_all (list->items);
 }
 
-static GtkWidget *
+static void
 add_window (TaskList *list, WnckWindow *window)
 {
   GtkWidget *item;
@@ -224,7 +236,7 @@ add_window (TaskList *list, WnckWindow *window)
                            G_CALLBACK (on_window_type_changed), list, 0);
 
   if (window_is_special (window))
-    return NULL;
+    return;
 
   item = create_task_item (list, window);
 
@@ -255,18 +267,6 @@ on_window_opened (WnckScreen *screen,
   add_window (taskList, window);
 }
 
-static void
-on_window_closed (WnckScreen *screen,
-                  WnckWindow *window,
-                  TaskList *taskList)
-{
-    TaskItem * item;
-
-    item = g_hash_table_lookup (taskList->items, window);
-
-    g_hash_table_remove (taskList->items, item);
-}
-
 static gboolean
 init_windows (gpointer user_data)
 {


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