[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 21:53:24 +0000 (UTC)
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]