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



commit 3e03afbe7245daa2a5451fc25adbbf785890dfab
Author: Sebastian Geiger <sbastig gmx net>
Date:   Thu Apr 2 23:52:01 2020 +0200

    fixup! window-picker: handle item lifecycle in TaskList

 gnome-applets/window-picker/task-item.c | 13 ++-----------
 gnome-applets/window-picker/task-list.c | 28 +++++++---------------------
 2 files changed, 9 insertions(+), 32 deletions(-)
---
diff --git a/gnome-applets/window-picker/task-item.c b/gnome-applets/window-picker/task-item.c
index 7a03cdda5..2e149cf81 100644
--- a/gnome-applets/window-picker/task-item.c
+++ b/gnome-applets/window-picker/task-item.c
@@ -47,7 +47,6 @@ G_DEFINE_TYPE (TaskItem, task_item, GTK_TYPE_EVENT_BOX)
 #define DEFAULT_TASK_ITEM_WIDTH 28 + 2
 
 enum {
-    TASK_ITEM_CLOSED_SIGNAL,
     TASK_ITEM_MONITOR_CHANGED,
     LAST_SIGNAL
 };
@@ -590,7 +589,7 @@ on_window_geometry_changed (WnckWindow *window,
       {
         set_monitor (item, window_monitor);
 
-        g_signal_emit (item, task_item_signals[TASK_ITEM_MONITOR_CHANGED], 0);
+        g_signal_emit (item, task_item_signals[TASK_ITEM_MONITOR_CHANGED], 0, window, NULL);
       }
 }
 
@@ -969,17 +968,9 @@ static void task_item_class_init (TaskItemClass *klass) {
     widget_class->get_preferred_height = task_item_get_preferred_height;
     widget_class->get_preferred_height_for_width = task_item_get_preferred_height_for_width;
 
-    task_item_signals [TASK_ITEM_CLOSED_SIGNAL] =
-            g_signal_new ("task-item-closed",
-                          G_TYPE_FROM_CLASS (klass),
-                          G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
-                          0,
-                          NULL, NULL,
-                          g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
-
     task_item_signals [TASK_ITEM_MONITOR_CHANGED] =
         g_signal_new ("monitor-changed", TASK_TYPE_ITEM, G_SIGNAL_RUN_LAST,
-                      0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+                      0, NULL, NULL, NULL, G_TYPE_NONE, 1, WNCK_TYPE_WINDOW);
 }
 
 static void task_item_init (TaskItem *item) {
diff --git a/gnome-applets/window-picker/task-list.c b/gnome-applets/window-picker/task-list.c
index 28d331858..98d68a862 100644
--- a/gnome-applets/window-picker/task-list.c
+++ b/gnome-applets/window-picker/task-list.c
@@ -71,14 +71,6 @@ get_task_list_for_monitor (GdkMonitor *monitor)
     return task_lists->data;
 }
 
-static void on_task_item_closed (
-        TaskItem *item,
-        TaskList *list)
-{
-    gtk_container_remove (GTK_CONTAINER (list),
-                          GTK_WIDGET (item));
-}
-
 static GdkMonitor *
 window_get_monitor (WnckWindow *window)
 {
@@ -95,13 +87,16 @@ window_get_monitor (WnckWindow *window)
 }
 
 static void
-on_task_item_monitor_changed_cb (TaskItem *item,
-                                 TaskList *current_list)
+on_task_item_monitor_changed_cb (TaskItem   *item,
+                                 WnckWindow *window,
+                                 TaskList   *current_list)
 {
     GdkMonitor *monitor;
     GdkMonitor *list_monitor;
     TaskList *list;
 
+    g_debug ("Moving item: %p of window: %p", item, window);
+
     monitor = task_item_get_monitor (item);
     list_monitor = task_list_get_monitor (current_list);
 
@@ -111,6 +106,7 @@ on_task_item_monitor_changed_cb (TaskItem *item,
 
         g_object_ref (item);
         gtk_container_remove (GTK_CONTAINER (current_list), GTK_WIDGET (item));
+        g_hash_table_steal(current_list->items, window);
 
         gtk_widget_queue_resize (GTK_WIDGET (current_list));
 
@@ -118,14 +114,8 @@ on_task_item_monitor_changed_cb (TaskItem *item,
                                               on_task_item_monitor_changed_cb,
                                               current_list);
 
-        g_signal_handlers_disconnect_by_func (item,
-                                              on_task_item_closed,
-                                              current_list);
-
         gtk_container_add (GTK_CONTAINER (list), GTK_WIDGET (item));
-
-        g_signal_connect_object (TASK_ITEM (item), "task-item-closed",
-                                 G_CALLBACK (on_task_item_closed), list, 0);
+        g_hash_table_insert (list->items, window, item);
 
         g_signal_connect_object (TASK_ITEM (item), "monitor-changed",
                                  G_CALLBACK (on_task_item_monitor_changed_cb), list, 0);
@@ -163,10 +153,6 @@ create_task_item (TaskList   *taskList,
       {
         gtk_container_add (GTK_CONTAINER (taskList), item);
 
-        g_signal_connect_object (TASK_ITEM (item), "task-item-closed",
-                                 G_CALLBACK (on_task_item_closed),
-                                 taskList, 0);
-
         g_signal_connect_object (TASK_ITEM (item), "monitor-changed",
                                  G_CALLBACK (on_task_item_monitor_changed_cb),
                                  taskList, 0);


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