aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui
diff options
context:
space:
mode:
authorMarvin W <git@larma.de>2026-10-23 16:56:45 +0200
committerMarvin W <git@larma.de>2026-10-23 17:01:44 +0200
commit873f980faad23135edc1028de6c7f51c16df8ac3 (patch)
treea711bf26d73634c0066b9912770fb93f885b214c /main/src/ui
parentff93e855d25d600d0523fc9cd020079c352b0196 (diff)
main: Improve conversation selector performance on startup
Diffstat (limited to 'main/src/ui')
-rw-r--r--main/src/ui/conversation_selector/conversation_selector.vala10
1 files changed, 8 insertions, 2 deletions
diff --git a/main/src/ui/conversation_selector/conversation_selector.vala b/main/src/ui/conversation_selector/conversation_selector.vala
index 5d88c540..70e192b7 100644
--- a/main/src/ui/conversation_selector/conversation_selector.vala
+++ b/main/src/ui/conversation_selector/conversation_selector.vala
@@ -22,7 +22,7 @@ public class ConversationSelector : Widget {
list_box.add_css_class("navigation-sidebar");
this.layout_manager = new BinLayout();
- stream_interactor.get_module(ConversationManager.IDENTITY).conversation_activated.connect(add_conversation);
+ stream_interactor.get_module(ConversationManager.IDENTITY).conversation_activated.connect(on_conversation_activated);
stream_interactor.get_module(ConversationManager.IDENTITY).conversation_deactivated.connect(remove_conversation);
stream_interactor.get_module(ContentItemStore.IDENTITY).new_item.connect(on_content_item_received);
Timeout.add_seconds(60, () => {
@@ -33,6 +33,7 @@ public class ConversationSelector : Widget {
foreach (Conversation conversation in stream_interactor.get_module(ConversationManager.IDENTITY).get_active_conversations()) {
add_conversation(conversation);
}
+ list_box.invalidate_sort();
return this;
}
@@ -62,6 +63,7 @@ public class ConversationSelector : Widget {
public void on_conversation_selected(Conversation conversation) {
if (!rows.has_key(conversation)) {
add_conversation(conversation);
+ list_box.invalidate_sort();
}
list_box.select_row(rows[conversation]);
}
@@ -72,6 +74,11 @@ public class ConversationSelector : Widget {
}
}
+ private void on_conversation_activated(Conversation conversation) {
+ add_conversation(conversation);
+ list_box.invalidate_sort();
+ }
+
private void add_conversation(Conversation conversation) {
ConversationSelectorRow row;
if (!rows.has_key(conversation)) {
@@ -101,7 +108,6 @@ public class ConversationSelector : Widget {
});
row.add_controller(drop_motion_controller);
}
- list_box.invalidate_sort();
}
private void select_fallback_conversation(Conversation conversation) {