popover: dispose popovers when unmanaging them
This makes popovers get rid of dangling pointers at the time of destroying the relative-to widget, just in case these are kept alive by a reference.
This commit is contained in:
@ -1383,6 +1383,13 @@ _gtk_popover_parent_size_allocate (GtkWidget *widget,
|
|||||||
gtk_popover_update_position (popover);
|
gtk_popover_update_position (popover);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_unmanage_popover (GObject *object)
|
||||||
|
{
|
||||||
|
g_object_run_dispose (object);
|
||||||
|
g_object_unref (object);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
widget_manage_popover (GtkWidget *widget,
|
widget_manage_popover (GtkWidget *widget,
|
||||||
GtkPopover *popover)
|
GtkPopover *popover)
|
||||||
@ -1394,7 +1401,7 @@ widget_manage_popover (GtkWidget *widget,
|
|||||||
if (G_UNLIKELY (!popovers))
|
if (G_UNLIKELY (!popovers))
|
||||||
{
|
{
|
||||||
popovers = g_hash_table_new_full (NULL, NULL,
|
popovers = g_hash_table_new_full (NULL, NULL,
|
||||||
(GDestroyNotify) g_object_unref, NULL);
|
(GDestroyNotify) _unmanage_popover, NULL);
|
||||||
g_object_set_qdata_full (G_OBJECT (widget),
|
g_object_set_qdata_full (G_OBJECT (widget),
|
||||||
quark_widget_popovers, popovers,
|
quark_widget_popovers, popovers,
|
||||||
(GDestroyNotify) g_hash_table_unref);
|
(GDestroyNotify) g_hash_table_unref);
|
||||||
|
|||||||
Reference in New Issue
Block a user