[gtk+] GtkAction: Hold a reference to proxy widgets
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkAction: Hold a reference to proxy widgets
- Date: Tue, 20 Dec 2011 20:37:15 +0000 (UTC)
commit 06307dd774da77a2d74f5529feee2ca120804e2f
Author: Colin Walters <walters verbum org>
Date: Thu Aug 25 14:50:30 2011 -0400
GtkAction: Hold a reference to proxy widgets
Previously we expect that a proxy widget holds a reference to the
action via gtk_activatable_do_set_related_action(). However, it
is possible for the widget to still be in a floating state when
it adds itself to the the action.
This is a problem when gtk_action_get_proxies() gets called, because
we return floating objects back to the user. And language bindings
aren't going to be expecting that.
Fix this by calling ref_sink() and unref().
https://bugzilla.gnome.org/show_bug.cgi?id=657367
gtk/gtkaction.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkaction.c b/gtk/gtkaction.c
index ad69d4f..c24ee78 100644
--- a/gtk/gtkaction.c
+++ b/gtk/gtkaction.c
@@ -716,6 +716,7 @@ static void
remove_proxy (GtkAction *action,
GtkWidget *proxy)
{
+ g_object_unref (proxy);
action->private_data->proxies = g_slist_remove (action->private_data->proxies, proxy);
}
@@ -725,6 +726,8 @@ connect_proxy (GtkAction *action,
{
action->private_data->proxies = g_slist_prepend (action->private_data->proxies, proxy);
+ g_object_ref_sink (proxy);
+
if (action->private_data->action_group)
_gtk_action_group_emit_connect_proxy (action->private_data->action_group, action, proxy);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]