Private
Public Access
1
0

Fix retain cycles

This commit is contained in:
2025-05-14 17:37:23 -07:00
parent f377bbb7f9
commit 1ed7f5bda3
4 changed files with 46 additions and 21 deletions

View File

@@ -9,16 +9,25 @@ public class TranscriptView : Adw.Bin
return _model;
}
set {
if (_model != null) {
_model.disconnect(messages_changed_handler_id);
_model.unwatch_updates();
}
_model = value;
if (model != null) {
if (value != null) {
// Reset scroll position
scrolled_window.vadjustment = new Gtk.Adjustment(0, 0, 0, 0, 0, 0);
model.messages_changed.connect(reload_messages);
model.load_messages();
weak TranscriptView self = this;
messages_changed_handler_id = value.messages_changed.connect(() => {
self.reload_messages();
});
value.load_messages();
} else {
transcript_drawing_area.set_messages(new TreeSet<Message>());
transcript_drawing_area.set_messages(new ArrayList<Message>());
}
}
}
@@ -34,10 +43,9 @@ public class TranscriptView : Adw.Bin
private TranscriptDrawingArea transcript_drawing_area = new TranscriptDrawingArea();
private ScrolledWindow scrolled_window = new ScrolledWindow();
private ulong messages_changed_handler_id = 0;
public TranscriptView(MessageListModel? model = null) {
this.model = model;
public TranscriptView() {
container = new Adw.ToolbarView();
set_child(container);