aboutsummaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/ui/conversation_content_view/conversation_item_skeleton.vala13
-rw-r--r--main/src/ui/conversation_view_controller.vala5
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);