diff options
Diffstat (limited to 'main/src')
-rw-r--r-- | main/src/ui/conversation_content_view/conversation_item_skeleton.vala | 13 | ||||
-rw-r--r-- | main/src/ui/conversation_view_controller.vala | 5 |
2 files changed, 16 insertions, 2 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 343c6631..d6bf5089 100644 --- a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala +++ b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala @@ -127,6 +127,7 @@ public class ItemMetaDataHeader : Box { public Entities.Message.Marked item_mark { get; set; } private ArrayList<Plugins.MetaConversationItem> items = new ArrayList<Plugins.MetaConversationItem>(); private uint time_update_timeout = 0; + private ulong updated_roster_handler_id = 0; public ItemMetaDataHeader(StreamInteractor stream_interactor, Conversation conversation, Plugins.MetaConversationItem item) { this.stream_interactor = stream_interactor; @@ -136,6 +137,11 @@ public class ItemMetaDataHeader : Box { update_name_label(); name_label.style_updated.connect(update_name_label); + updated_roster_handler_id = stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { + if (this.conversation.account.equals(account) && this.conversation.counterpart.equals(jid)) { + update_name_label(); + } + }); conversation.notify["encryption"].connect(update_unencrypted_icon); item.notify["encryption"].connect(update_encryption_icon); @@ -309,12 +315,15 @@ public class ItemMetaDataHeader : Box { } public override void dispose() { - base.dispose(); - if (time_update_timeout != 0) { Source.remove(time_update_timeout); time_update_timeout = 0; } + if (updated_roster_handler_id != 0){ + stream_interactor.get_module(RosterManager.IDENTITY).disconnect(updated_roster_handler_id); + updated_roster_handler_id = 0; + } + base.dispose(); } } diff --git a/main/src/ui/conversation_view_controller.vala b/main/src/ui/conversation_view_controller.vala index a9a94738..87657b37 100644 --- a/main/src/ui/conversation_view_controller.vala +++ b/main/src/ui/conversation_view_controller.vala @@ -80,6 +80,11 @@ public class ConversationViewController : Object { update_conversation_topic(subject); } }); + stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { + if (conversation.account.equals(account) && conversation.counterpart.equals(jid)) { + update_conversation_display_name(); + } + }); stream_interactor.get_module(FileManager.IDENTITY).upload_available.connect(update_file_upload_status); |