[gnome-applets/wip/segeiger/type-changed: 1/2] window-picker: Listen to type-changed signal of WnckWindow



commit f8c30c5089d4925ea9ecbc5c68c8fb9c97b5694f
Author: Sebastian Geiger <sbastig gmx net>
Date:   Wed Dec 2 11:23:23 2015 +0100

    window-picker: Listen to type-changed signal of WnckWindow

 windowpicker/src/task-list.c |   38 ++++++++++++++++++++++++++++++--------
 1 files changed, 30 insertions(+), 8 deletions(-)
---
diff --git a/windowpicker/src/task-list.c b/windowpicker/src/task-list.c
index 00bec88..e8cbd5d 100644
--- a/windowpicker/src/task-list.c
+++ b/windowpicker/src/task-list.c
@@ -42,6 +42,34 @@ static void on_task_item_closed (
     gtk_widget_destroy (GTK_WIDGET (item));
 }
 
+static void create_task_item (TaskList   *taskList,
+                              WnckWindow *window)
+{
+    GtkWidget *item = task_item_new (taskList->priv->windowPickerApplet,
+                                     window);
+
+    if (item) {
+        //we add items dynamically to the end of the list
+        gtk_container_add (GTK_CONTAINER(taskList), item);
+        g_signal_connect (TASK_ITEM (item), "task-item-closed",
+                          G_CALLBACK (on_task_item_closed), taskList);
+    }
+}
+
+static void type_changed (WnckWindow *window,
+                          gpointer user_data)
+{
+    TaskList *taskList = TASK_LIST (user_data);
+    WnckWindowType type = wnck_window_get_window_type (window);
+
+    if (!(type == WNCK_WINDOW_DESKTOP
+          || type == WNCK_WINDOW_DOCK
+          || type == WNCK_WINDOW_SPLASHSCREEN
+          || type == WNCK_WINDOW_MENU)) {
+        create_task_item (taskList, window);
+    }
+}
+
 static void on_window_opened (WnckScreen *screen,
     WnckWindow *window,
     TaskList *taskList)
@@ -53,17 +81,11 @@ static void on_window_opened (WnckScreen *screen,
         || type == WNCK_WINDOW_SPLASHSCREEN
         || type == WNCK_WINDOW_MENU)
     {
+        g_signal_connect (window, "type-changed", G_CALLBACK (type_changed), taskList);
         return;
     }
 
-    GtkWidget *item = task_item_new (taskList->priv->windowPickerApplet, window);
-
-    if (item) {
-        //we add items dynamically to the end of the list
-        gtk_container_add(GTK_CONTAINER(taskList), item);
-        g_signal_connect (TASK_ITEM(item), "task-item-closed",
-                G_CALLBACK(on_task_item_closed), taskList);
-    }
+    create_task_item (taskList, window);
 }
 
 static void on_task_list_orient_changed(PanelApplet *applet,


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