mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 14:30:15 +00:00
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
This commit is contained in:
parent
b5577781d1
commit
06307dd774
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user