[gnome-applets/wip/segeiger/type-changed] windowpicker: emit task-item-closed on window type-change
- From: Sebastian Geiger <segeiger src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-applets/wip/segeiger/type-changed] windowpicker: emit task-item-closed on window type-change
- Date: Fri, 22 Jan 2016 14:30:50 +0000 (UTC)
commit 7e3a91187ea49676f177a120bc21a032a09708ae
Author: Sebastian Geiger <sbastig gmx net>
Date: Fri Jan 22 13:41:12 2016 +0100
windowpicker: emit task-item-closed on window type-change
windowpicker/src/task-item.c | 51 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 51 insertions(+), 0 deletions(-)
---
diff --git a/windowpicker/src/task-item.c b/windowpicker/src/task-item.c
index 126467a..ca178aa 100644
--- a/windowpicker/src/task-item.c
+++ b/windowpicker/src/task-item.c
@@ -78,6 +78,19 @@ static const GtkTargetEntry drag_types[] = {
static const gint n_drag_types = G_N_ELEMENTS(drag_types);
+
+static void on_screen_window_closed (WnckScreen *screen,
+ WnckWindow *window,
+ TaskItem *item);
+
+static void on_screen_active_window_changed (WnckScreen *screen,
+ WnckWindow *old_window,
+ TaskItem *item);
+
+static void on_screen_active_workspace_changed (WnckScreen *screen,
+ WnckWorkspace *old_workspace,
+ TaskItem *taskItem);
+
static void update_hints (TaskItem *item) {
GtkWidget *parent, *widget;
GtkAllocation allocation_parent, allocation_widget;
@@ -464,6 +477,39 @@ static void on_window_icon_changed (WnckWindow *window, TaskItem *item) {
gtk_widget_queue_draw (GTK_WIDGET (item));
}
+static void
+on_window_type_changed (WnckWindow *window,
+ TaskItem *item)
+{
+ WnckWindowType type;
+ WnckScreen *screen;
+
+ type = wnck_window_get_window_type (window);
+ screen = item->priv->screen;
+
+ if (type == WNCK_WINDOW_DESKTOP ||
+ type == WNCK_WINDOW_DOCK ||
+ type == WNCK_WINDOW_SPLASHSCREEN ||
+ type == WNCK_WINDOW_MENU)
+ {
+ g_signal_handlers_disconnect_by_func (screen,
+ G_CALLBACK (on_screen_window_closed), item);
+ g_signal_handlers_disconnect_by_func (screen,
+ G_CALLBACK (on_screen_active_window_changed), item);
+ g_signal_handlers_disconnect_by_func (screen,
+ G_CALLBACK (on_screen_active_workspace_changed), item);
+ g_signal_handlers_disconnect_by_func (screen,
+ G_CALLBACK (on_screen_window_closed), item);
+ g_signal_handlers_disconnect_by_func (window,
+ G_CALLBACK (on_window_workspace_changed), item);
+ g_signal_handlers_disconnect_by_func (window,
+ G_CALLBACK (on_window_state_changed), item);
+ g_signal_emit (G_OBJECT (item),
+ task_item_signals[TASK_ITEM_CLOSED_SIGNAL], 0);
+ }
+}
+
+
static void on_screen_active_window_changed (
WnckScreen *screen,
WnckWindow *old_window,
@@ -521,6 +567,8 @@ static void on_screen_window_closed (
G_CALLBACK (on_window_workspace_changed), item);
g_signal_handlers_disconnect_by_func (window,
G_CALLBACK (on_window_state_changed), item);
+ g_signal_handlers_disconnect_by_func (window,
+ G_CALLBACK (on_window_type_changed), item);
g_signal_emit (G_OBJECT (item),
task_item_signals[TASK_ITEM_CLOSED_SIGNAL], 0);
}
@@ -730,6 +778,7 @@ task_item_dispose (GObject *object)
g_signal_handlers_disconnect_by_func (task_item->priv->window, on_window_workspace_changed, task_item);
g_signal_handlers_disconnect_by_func (task_item->priv->window, on_window_state_changed, task_item);
g_signal_handlers_disconnect_by_func (task_item->priv->window, on_window_icon_changed, task_item);
+ g_signal_handlers_disconnect_by_func (task_item->priv->window, on_window_type_changed, task_item);
G_OBJECT_CLASS (task_item_parent_class)->dispose (object);
}
@@ -848,6 +897,8 @@ GtkWidget *task_item_new (WpApplet* windowPickerApplet, WnckWindow *window) {
G_CALLBACK (on_window_state_changed), item);
g_signal_connect (window, "icon-changed",
G_CALLBACK (on_window_icon_changed), item);
+ g_signal_connect (window, "type-changed",
+ G_CALLBACK (on_window_type_changed), item);
g_signal_connect(item, "draw",
G_CALLBACK(task_item_draw), windowPickerApplet);
g_signal_connect (item, "button-release-event",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]