From c5ba4275ae68dd558108ce273dafa1bf890259e8 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Fri, 10 Apr 2026 21:54:26 +0200 Subject: Early dispose the reaction widget when no longer needed It previously triggered the leak checker, even though eventually the widget would be disposed when the corresponding message skeletion got disposed. --- .../conversation_content_view/conversation_item_skeleton.vala | 10 +++++++--- main/src/ui/conversation_content_view/reactions_widget.vala | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) (limited to 'main/src/ui') diff --git a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala index 3c1b4e3b..d8cf469c 100644 --- a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala +++ b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala @@ -102,12 +102,16 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface, update_received_mark(); } - public void set_widget(Object object, Plugins.WidgetType type, int priority) { + public void set_widget(Object? object, Plugins.WidgetType type, int priority) { foreach (var content_widget in content_widgets.values) { content_widget.unparent(); } - content_widgets[priority] = (Widget) object; + if (object is Widget) { + content_widgets[priority] = (Widget) object; + } else { + content_widgets.unset(priority); + } int row_no = 1; for (int i = 0; i < 5; i++) { if (!content_widgets.has_key(i)) continue; @@ -169,7 +173,7 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface, } } - private void on_reaction_box_activated(Widget widget) { + private void on_reaction_box_activated(Widget? widget) { set_widget(widget, Plugins.WidgetType.GTK4, 3); } diff --git a/main/src/ui/conversation_content_view/reactions_widget.vala b/main/src/ui/conversation_content_view/reactions_widget.vala index a148a677..cb756167 100644 --- a/main/src/ui/conversation_content_view/reactions_widget.vala +++ b/main/src/ui/conversation_content_view/reactions_widget.vala @@ -7,7 +7,7 @@ using Xmpp; namespace Dino.Ui.ConversationSummary { public class ReactionsController : Object { - public signal void box_activated(Widget widget); + public signal void box_activated(Widget? widget); private Conversation conversation; private Account account; @@ -94,7 +94,7 @@ public class ReactionsController : Object { } if (reactions.size == 0) { - widget.unparent(); + box_activated(null); this.widget.set(null); } } -- cgit v1.3