aboutsummaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2026-04-10 21:54:26 +0200
committerMarvin W <git@larma.de>2026-04-10 21:54:26 +0200
commitc5ba4275ae68dd558108ce273dafa1bf890259e8 (patch)
treec11797edfb7190ae0fb5166cec60881237bcd0bf /main
parent0baeaa2b8f481f60f8c7eecc856c48a11f211a20 (diff)
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.
Diffstat (limited to 'main')
-rw-r--r--main/src/ui/conversation_content_view/conversation_item_skeleton.vala10
-rw-r--r--main/src/ui/conversation_content_view/reactions_widget.vala4
2 files changed, 9 insertions, 5 deletions
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);
}
}