diff --git a/src/chat_control.py b/src/chat_control.py index db4cfb92c..8f1fbad28 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -639,8 +639,14 @@ class ChatControlBase(MessageControl): self.parent_win.redraw_tab(self) self.parent_win.show_title() # redraw roster - gajim.interface.roster.draw_contact(jid, self.account) - gajim.interface.roster.show_title() + if self.type_id == message_control.TYPE_PM: + room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) + groupchat_control = gajim.interface.msg_win_mgr.get_control( + room_jid, self.account) + groupchat_control.draw_contact(nick) + else: + gajim.interface.roster.draw_contact(jid, self.account) + gajim.interface.roster.show_title() self.msg_textview.grab_focus() # Note, we send None chatstate to preserve current self.parent_win.redraw_tab(self) @@ -1631,7 +1637,8 @@ class ChatControl(ChatControlBase): # list of message ids which should be marked as read message_ids = [] for event in events: - if event.type_ != 'chat': + print event.type_ + if event.type_ != self.type_id: continue data = event.parameters kind = data[2] @@ -1646,7 +1653,7 @@ class ChatControl(ChatControlBase): if message_ids: gajim.logger.set_read_messages(message_ids) gajim.events.remove_events(self.account, jid_with_resource, - types = ['chat']) + types = [self.type_id]) self.parent_win.show_title() self.parent_win.redraw_tab(self) @@ -1659,7 +1666,13 @@ class ChatControl(ChatControlBase): control.update_ui() typ = 'pm' - gajim.interface.roster.draw_contact(jid, self.account) + if is_pm: + room_jid, nick = gajim.get_room_and_nick_from_fjid(jid) + groupchat_control = gajim.interface.msg_win_mgr.get_control( + room_jid, self.account) + groupchat_control.draw_contact(nick) + else: + gajim.interface.roster.draw_contact(jid, self.account) # Redraw parent too gajim.interface.roster.draw_parent_contact(jid, self.account) if (self.contact.show == 'offline' or self.contact.show == 'error'): diff --git a/src/roster_window.py b/src/roster_window.py index 9810129c9..000729587 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -2395,7 +2395,10 @@ _('If "%s" accepts this request you will know his or her status.') % jid) mw.new_tab(chat_control) + print gajim.events._events + print fjid if len(gajim.events.get_events(account, fjid)): + print 'ici' # We call this here to avoid race conditions with widget validation chat_control.read_queue()