transcriptview perf: only draw the items that are actually visible.
This commit is contained in:
@@ -17,8 +17,10 @@ public class TranscriptView : Adw.Bin
|
||||
_model = value;
|
||||
|
||||
if (value != null) {
|
||||
// Reset scroll position
|
||||
scrolled_window.vadjustment = new Gtk.Adjustment(0, 0, 0, 0, 0, 0);
|
||||
// Reset scroll position by updating the existing adjustment
|
||||
scrolled_window.vadjustment.value = 0;
|
||||
scrolled_window.vadjustment.upper = 0;
|
||||
scrolled_window.vadjustment.page_size = 0;
|
||||
|
||||
weak TranscriptView self = this;
|
||||
messages_changed_handler_id = value.messages_changed.connect(() => {
|
||||
@@ -56,8 +58,14 @@ public class TranscriptView : Adw.Bin
|
||||
|
||||
scrolled_window.set_child(transcript_drawing_area);
|
||||
scrolled_window.add_css_class("message-list-scroller");
|
||||
transcript_drawing_area.viewport = scrolled_window.vadjustment;
|
||||
container.set_content(scrolled_window);
|
||||
|
||||
// Connect to the adjustment's value_changed signal
|
||||
scrolled_window.vadjustment.value_changed.connect(() => {
|
||||
transcript_drawing_area.viewport = scrolled_window.vadjustment;
|
||||
});
|
||||
|
||||
var header_bar = new Adw.HeaderBar();
|
||||
title_label.single_line_mode = true;
|
||||
title_label.ellipsize = Pango.EllipsizeMode.END;
|
||||
|
||||
Reference in New Issue
Block a user