aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/ui/conversation_content_view/conversation_item_skeleton.vala')
-rw-r--r--main/src/ui/conversation_content_view/conversation_item_skeleton.vala36
1 files changed, 33 insertions, 3 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 9e98cacb..b6c0f7c6 100644
--- a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
+++ b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala
@@ -71,9 +71,7 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface,
ContentMetaItem? content_meta_item = item as ContentMetaItem;
if (content_meta_item != null) {
reactions_controller = new ReactionsController(conversation, content_meta_item.content_item, stream_interactor);
- reactions_controller.box_activated.connect((widget) => {
- set_widget(widget, Plugins.WidgetType.GTK4, 3);
- });
+ reactions_controller.box_activated.connect(on_reaction_box_activated);
reactions_controller.init();
}
@@ -170,6 +168,10 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface,
}
}
+ private void on_reaction_box_activated(Widget widget) {
+ set_widget(widget, Plugins.WidgetType.GTK4, 3);
+ }
+
private void update_time() {
time_label.label = get_relative_time(item.time.to_local()).to_string();
@@ -271,6 +273,34 @@ public class ConversationItemSkeleton : Plugins.ConversationItemWidgetInterface,
stream_interactor.get_module(RosterManager.IDENTITY).disconnect(updated_roster_handler_id);
updated_roster_handler_id = 0;
}
+ reactions_controller = null;
+
+ // Children won't be disposed automatically
+ if (name_label != null) {
+ name_label.unparent();
+ name_label.dispose();
+ name_label = null;
+ }
+ if (time_label != null) {
+ time_label.unparent();
+ time_label.dispose();
+ time_label = null;
+ }
+ if (avatar_image != null) {
+ avatar_image.unparent();
+ avatar_image.dispose();
+ avatar_image = null;
+ }
+ if (encryption_image != null) {
+ encryption_image.unparent();
+ encryption_image.dispose();
+ encryption_image = null;
+ }
+ if (received_image != null) {
+ received_image.unparent();
+ received_image.dispose();
+ received_image = null;
+ }
base.dispose();
}
}