diff options
Diffstat (limited to 'main/src/ui/conversation_content_view')
-rw-r--r-- | main/src/ui/conversation_content_view/conversation_item_skeleton.vala | 13 |
1 files changed, 11 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(); } } |