[gnome-applets/wip-geiger-task-item] fixup! window-picker: handle item lifecycle in TaskList
- From: Sebastian Geiger <segeiger src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-applets/wip-geiger-task-item] fixup! window-picker: handle item lifecycle in TaskList
- Date: Thu, 2 Apr 2020 22:17:46 +0000 (UTC)
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]