app: fix dangling weak pointers to GimpEditor->priv->ui_manager

This commit is contained in:
Michael Natterer 2023-05-22 03:15:32 +02:00
parent ef0eb29e55
commit 1d069d05b4
1 changed files with 15 additions and 3 deletions

View File

@ -273,6 +273,13 @@ gimp_editor_dispose (GObject *object)
g_clear_pointer (&editor->priv->ui_path, g_free);
if (editor->priv->ui_manager)
{
g_object_remove_weak_pointer (G_OBJECT (editor->priv->ui_manager),
(gpointer) &editor->priv->ui_manager);
editor->priv->ui_manager = NULL;
}
G_OBJECT_CLASS (parent_class)->dispose (object);
}
@ -441,15 +448,20 @@ gimp_editor_create_menu (GimpEditor *editor,
editor->priv->menu_factory = g_object_ref (menu_factory);
if (editor->priv->ui_manager)
g_signal_handlers_disconnect_by_func (editor->priv->ui_manager->gimp->config,
G_CALLBACK (gimp_editor_style_updated),
editor);
{
g_signal_handlers_disconnect_by_func (editor->priv->ui_manager->gimp->config,
G_CALLBACK (gimp_editor_style_updated),
editor);
g_object_remove_weak_pointer (G_OBJECT (editor->priv->ui_manager),
(gpointer) &editor->priv->ui_manager);
}
editor->priv->ui_manager = gimp_menu_factory_get_manager (menu_factory,
menu_identifier,
popup_data);
g_object_add_weak_pointer (G_OBJECT (editor->priv->ui_manager),
(gpointer) &editor->priv->ui_manager);
g_signal_connect_object (editor->priv->ui_manager->gimp->config,
"notify::theme",
G_CALLBACK (gimp_editor_style_updated),