font-manager: update to 0.9.2
[aosc-os-abbs.git] / runtime-desktop / libwnck / autobuild / patches / 0001-WindowActionMenu-unset-window-and-stop-async-events-on-dispose.patch
blobd7630e3c3c40ae70ee9337adec3837d135573939
1 From 9e17ab5b4345d90aa5e01a2379ae0ce29c3a3cf3 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
3 Date: Fri, 27 Sep 2013 19:32:51 +0200
4 Subject: WindowActionMenu: unset window and stop async events on dispose
6 Finalize function can be never called here, so it's better to do this
7 when the widget gets destroyed.
9 diff --git a/libwnck/window-action-menu.c b/libwnck/window-action-menu.c
10 index e687cff..1e4b27e 100644
11 --- a/libwnck/window-action-menu.c
12 +++ b/libwnck/window-action-menu.c
13 @@ -104,10 +104,8 @@ enum {
14 G_DEFINE_TYPE (WnckActionMenu, wnck_action_menu, GTK_TYPE_MENU);
15 #define WNCK_ACTION_MENU_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), WNCK_TYPE_ACTION_MENU, WnckActionMenuPrivate))
17 -static void wnck_action_menu_finalize (GObject *object);
18 +static void wnck_action_menu_dispose (GObject *object);
20 -static void object_weak_notify (gpointer data,
21 - GObject *obj);
22 static void window_weak_notify (gpointer data,
23 GObject *window);
25 @@ -118,23 +116,10 @@ static void
26 window_weak_notify (gpointer data,
27 GObject *window)
29 - g_object_weak_unref (G_OBJECT (data),
30 - object_weak_notify,
31 - window);
33 + WNCK_ACTION_MENU(data)->priv->window = NULL;
34 gtk_widget_destroy (GTK_WIDGET (data));
38 -static void
39 -object_weak_notify (gpointer data,
40 - GObject *obj)
42 - g_object_weak_unref (G_OBJECT (data),
43 - window_weak_notify,
44 - obj);
47 static WnckActionMenu*
48 get_action_menu (GtkWidget *widget)
50 @@ -1030,7 +1015,6 @@ wnck_action_menu_constructor (GType type,
53 g_object_weak_ref (G_OBJECT (priv->window), window_weak_notify, menu);
54 - g_object_weak_ref (G_OBJECT (menu), object_weak_notify, priv->window);
56 priv->minimize_item = make_menu_item (MINIMIZE);
58 @@ -1181,7 +1165,7 @@ wnck_action_menu_class_init (WnckActionMenuClass *klass)
59 object_class->constructor = wnck_action_menu_constructor;
60 object_class->get_property = wnck_action_menu_get_property;
61 object_class->set_property = wnck_action_menu_set_property;
62 - object_class->finalize = wnck_action_menu_finalize;
63 + object_class->dispose = wnck_action_menu_dispose;
65 g_object_class_install_property (object_class,
66 PROP_WINDOW,
67 @@ -1192,17 +1176,30 @@ wnck_action_menu_class_init (WnckActionMenuClass *klass)
70 static void
71 -wnck_action_menu_finalize (GObject *object)
72 +wnck_action_menu_dispose (GObject *object)
74 WnckActionMenu *menu;
76 menu = WNCK_ACTION_MENU (object);
78 if (menu->priv->idle_handler)
79 - g_source_remove (menu->priv->idle_handler);
80 - menu->priv->idle_handler = 0;
81 + {
82 + g_source_remove (menu->priv->idle_handler);
83 + menu->priv->idle_handler = 0;
84 + }
86 + if (WNCK_IS_WINDOW (menu->priv->window))
87 + {
88 + g_object_weak_unref (G_OBJECT (menu->priv->window), window_weak_notify, menu);
89 + g_signal_handlers_disconnect_by_data (menu->priv->window, menu);
91 + WnckScreen *screen = wnck_window_get_screen (menu->priv->window);
92 + g_signal_handlers_disconnect_by_data (screen, menu);
94 + menu->priv->window = NULL;
95 + }
97 - G_OBJECT_CLASS (wnck_action_menu_parent_class)->finalize (object);
98 + G_OBJECT_CLASS (wnck_action_menu_parent_class)->dispose (object);
103 cgit v0.10.2