diff options
author | fiaxh <git@lightrise.org> | 2020-05-28 17:31:31 +0200 |
---|---|---|
committer | fiaxh <git@lightrise.org> | 2020-06-03 21:50:40 +0200 |
commit | 8fe723bccb1dbcc38ec2742195cc77702f7f3f52 (patch) | |
tree | c4b8f03db975149555266ed546e48e03f987ad9b /main/src/ui/conversation_content_view/file_widget.vala | |
parent | a9e6a9c3d58002810757f1e3f4fc9c9488b48fc4 (diff) | |
download | dino-8fe723bccb1dbcc38ec2742195cc77702f7f3f52.tar.gz dino-8fe723bccb1dbcc38ec2742195cc77702f7f3f52.zip |
Fix cyclic references => let objects be freed
Diffstat (limited to 'main/src/ui/conversation_content_view/file_widget.vala')
-rw-r--r-- | main/src/ui/conversation_content_view/file_widget.vala | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index 3819e5bc..a965db47 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -37,6 +37,8 @@ public class FileWidget : SizeRequestBox { private StreamInteractor stream_interactor; private FileTransfer file_transfer; + public FileTransfer.State file_transfer_state { get; set; } + public string file_transfer_mime_type { get; set; } private State? state = null; private FileDefaultWidgetController default_widget_controller; @@ -58,8 +60,11 @@ public class FileWidget : SizeRequestBox { } }); - file_transfer.notify["state"].connect(update_widget); - file_transfer.notify["mime-type"].connect(update_widget); + file_transfer.bind_property("state", this, "file-transfer-state"); + file_transfer.bind_property("mime-type", this, "file-transfer-mime-type"); + + this.notify["file-transfer-state"].connect(update_widget); + this.notify["file-transfer-mime-type"].connect(update_widget); } private async void update_widget() { @@ -115,6 +120,10 @@ public class FileDefaultWidgetController : Object { private FileDefaultWidget widget; private FileTransfer? file_transfer; + public string file_transfer_path { get; set; } + public string file_transfer_state { get; set; } + public string file_transfer_mime_type { get; set; } + private StreamInteractor? stream_interactor; private string file_uri; private FileTransfer.State state; @@ -130,9 +139,13 @@ public class FileDefaultWidgetController : Object { widget.name_label.label = file_transfer.file_name; - file_transfer.notify["path"].connect(update_file_info); - file_transfer.notify["state"].connect(update_file_info); - file_transfer.notify["mime-type"].connect(update_file_info); + file_transfer.bind_property("path", this, "file-transfer-path"); + file_transfer.bind_property("state", this, "file-transfer-state"); + file_transfer.bind_property("mime-type", this, "file-transfer-mime-type"); + + this.notify["file-transfer-path"].connect(update_file_info); + this.notify["file-transfer-state"].connect(update_file_info); + this.notify["file-transfer-mime-type"].connect(update_file_info); update_file_info(); } |