dwlb

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 21ef00e494117b2bdc8eebf365e0325a6cfad19b
parent a8ee8c0a3427299a0ce203bfda298be3cf232a1e
Author: Janne Veteläinen <janne.vetelainen@elisanet.fi>
Date:   Tue, 18 Jun 2024 00:46:49 +0300

fix snitem finalization

Diffstat:
Msystray/snitem.c | 24++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/systray/snitem.c b/systray/snitem.c @@ -755,7 +755,6 @@ sn_item_dispose(GObject *obj) self->busname, self->busobj); self->exiting = TRUE; - gtk_popover_popdown(GTK_POPOVER(self->popovermenu)); if (self->dbusmenu) { g_object_unref(self->dbusmenu); @@ -768,6 +767,17 @@ sn_item_dispose(GObject *obj) } sn_item_set_menu_model(self, NULL); + + if (self->popovermenu) { + gtk_widget_unparent(self->popovermenu); + self->popovermenu = NULL; + } + + if (self->image) { + gtk_widget_unparent(self->image); + self->image = NULL; + } + gtk_widget_insert_action_group(GTK_WIDGET(self), "menuitem", NULL); G_OBJECT_CLASS(sn_item_parent_class)->dispose(obj); @@ -791,19 +801,10 @@ sn_item_finalize(GObject *object) SnItem *self = SN_ITEM(object); g_object_unref(self->actiongroup); - gtk_widget_unparent(self->popovermenu); - gtk_widget_unparent(self->image); g_free(self->busname); g_free(self->busobj); - /* - g_free(self->iconname); - if (self->iconpixmap) { - g_variant_unref(self->iconpixmap); - } - */ - g_slist_free_full(self->cachedicons, cachedicons_free); G_OBJECT_CLASS(sn_item_parent_class)->finalize(object); @@ -813,6 +814,9 @@ sn_item_finalize(GObject *object) void sn_item_set_menu_model(SnItem *self, GMenu* menu) { + if (!self->popovermenu) + return; + gtk_popover_menu_set_menu_model(GTK_POPOVER_MENU(self->popovermenu), G_MENU_MODEL(menu)); }