pass the ChatControl around with printed_chat events

This commit is contained in:
Brendan Taylor 2008-06-14 16:49:48 +00:00
parent 964cb10163
commit 2b074aed41
4 changed files with 7 additions and 9 deletions

View File

@ -710,7 +710,7 @@ class ChatControlBase(MessageControl):
show_in_systray = notify.get_show_in_systray(event,
self.account, self.contact, type_)
event = gajim.events.create_event(type_, (self.session,),
event = gajim.events.create_event(type_, (self,),
show_in_roster = show_in_roster,
show_in_systray = show_in_systray)
gajim.events.add_event(self.account, full_jid, event)

View File

@ -41,6 +41,7 @@ class Event:
where kind in error, incoming
file-*: file_props
gc_msg: None
printed_chat: control
printed_*: None
messages that are already printed in chat, but not read'''
self.type_ = type_

View File

@ -58,7 +58,7 @@ class StanzaSession(object):
for event in gajim.events.get_events(self.conn.name, self.jid, types=types):
# the event wasn't in this session
if (event.type_ == 'chat' and event.parameters[8] != self) or \
(event.type_ == 'printed_chat' and event.parameters[0] != self):
(event.type_ == 'printed_chat' and event.parameters[0].session != self):
continue
# events.remove_events returns True when there were no events

View File

@ -2260,20 +2260,17 @@ class Interface:
if not event:
event = gajim.events.get_first_event(account, jid, type_)
session = None
if type_ == 'printed_chat':
session = event.parameters[0]
ctrl = event.parameters[0]
elif type_ == 'chat':
session = event.parameters[8]
if session and session.control:
ctrl = session.control
elif type_ == '' and self.msg_win_mgr.has_window(fjid, account):
if type_ == '' and self.msg_win_mgr.has_window(fjid, account):
# assume that the most recently updated control we have for this party
# is the one that this event was in
ctrl = self.msg_win_mgr.get_chat_controls(fjid, account)[0]
else:
elif not ctrl:
highest_contact = gajim.contacts.get_contact_with_highest_priority(
account, jid)
# jid can have a window if this resource was lower when he sent