Commit 06307dd7 authored by Colin Walters's avatar Colin Walters

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
parent b5577781
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment