changeset 70dbe48350ff in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=70dbe48350ff description: correctly forward unread printed messages to other resources. Fixes #7094
diffstat:
src/chat_control.py | 14 +++++++------- src/common/commands.py | 18 +++++++++++------- src/common/events.py | 2 +- src/common/stanza_session.py | 2 +- src/gui_interface.py | 4 ++-- src/roster_window.py | 4 ++-- 6 files changed, 24 insertions(+), 20 deletions(-)
diffs (142 lines):
diff -r 74adce11c070 -r 70dbe48350ff src/chat_control.py --- a/src/chat_control.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/chat_control.py Sun Apr 01 19:39:26 2012 +0200 @@ -980,8 +980,8 @@ show_in_systray = notify.get_show_in_systray(event, self.account, self.contact, type_)
- event = gajim.events.create_event(type_, (self, msg_id), - show_in_roster=show_in_roster, + event = gajim.events.create_event(type_, (text, subject, self, + msg_id), show_in_roster=show_in_roster, show_in_systray=show_in_systray) gajim.events.add_event(self.account, full_jid, event) # We need to redraw contact if we show in roster @@ -1648,15 +1648,15 @@ self.restore_conversation() self.msg_textview.grab_focus()
- # change tooltip text for audio and video buttons if python-farsight is + # change tooltip text for audio and video buttons if python-farstream is # not installed - if not gajim.HAVE_FARSIGHT: + if not gajim.HAVE_FARSTREAM: tooltip_text = self._audio_button.get_tooltip_text() self._audio_button.set_tooltip_text( - '%s\n%s' % (tooltip_text, _('Requires python-farsight.'))) + '%s\n%s' % (tooltip_text, _('Requires python-farstream.'))) tooltip_text = self._video_button.get_tooltip_text() self._video_button.set_tooltip_text( - '%s\n%s' % (tooltip_text, _('Requires python-farsight.'))) + '%s\n%s' % (tooltip_text, _('Requires python-farstream.')))
gajim.ged.register_event_handler('pep-received', ged.GUI1, self._nec_pep_received) @@ -1704,7 +1704,7 @@
# Jingle detection if self.contact.supports(NS_JINGLE_ICE_UDP) and \ - gajim.HAVE_FARSIGHT and self.contact.resource: + gajim.HAVE_FARSTREAM and self.contact.resource: self.audio_available = self.contact.supports(NS_JINGLE_RTP_AUDIO) self.video_available = self.contact.supports(NS_JINGLE_RTP_VIDEO) else: diff -r 74adce11c070 -r 70dbe48350ff src/common/commands.py --- a/src/common/commands.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/common/commands.py Sun Apr 01 19:39:26 2012 +0200 @@ -56,10 +56,10 @@ assert status in ('executing', 'completed', 'canceled')
response = request.buildReply('result') - cmd = response.addChild('command', namespace=xmpp.NS_COMMANDS, attrs={ - 'sessionid': self.sessionid, - 'node': self.commandnode, - 'status': status}) + cmd = response.getTag('command', namespace=xmpp.NS_COMMANDS) + cmd.setAttr('sessionid', self.sessionid) + cmd.setAttr('node', self.commandnode) + cmd.setAttr('status', status) if defaultaction is not None or actions is not None: if defaultaction is not None: assert defaultaction in ('cancel', 'execute', 'prev', 'next', @@ -277,13 +277,17 @@ def execute(self, request): account = self.connection.name # Forward messages - events = gajim.events.get_events(account, types=['chat', 'normal']) + events = gajim.events.get_events(account, types=['chat', 'normal', + 'printed_chat']) j, resource = gajim.get_room_and_nick_from_fjid(self.jid) for jid in events: for event in events[jid]: + ev_typ = event.type_ + if ev_typ == 'printed_chat': + ev_typ = 'chat' self.connection.send_message(j, event.parameters[0], '', - type_=event.type_, subject=event.parameters[1], - resource=resource, forward_from=jid, delayed=event.time_) + type_=ev_typ, subject=event.parameters[1], + resource=resource, forward_from=jid, delayed=event.time_)
# Inform other client of completion response, cmd = self.buildResponse(request, status = 'completed') diff -r 74adce11c070 -r 70dbe48350ff src/common/events.py --- a/src/common/events.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/common/events.py Sun Apr 01 19:39:26 2012 +0200 @@ -45,7 +45,7 @@ where kind in error, incoming file-*: file_props gc_msg: None - printed_chat: control + printed_chat: [message, subject, control, msg_id] printed_*: None messages that are already printed in chat, but not read gc-invitation: [room_jid, reason, password, is_continued] diff -r 74adce11c070 -r 70dbe48350ff src/common/stanza_session.py --- a/src/common/stanza_session.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/common/stanza_session.py Sun Apr 01 19:39:26 2012 +0200 @@ -99,7 +99,7 @@ for event in gajim.events.get_events(self.conn.name, j, 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].session != \ + (event.type_ == 'printed_chat' and event.parameters[2].session != \ self): continue
diff -r 74adce11c070 -r 70dbe48350ff src/gui_interface.py --- a/src/gui_interface.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/gui_interface.py Sun Apr 01 19:39:26 2012 +0200 @@ -1540,7 +1540,7 @@ return
if type_ == 'printed_chat': - ctrl = event.parameters[0] + ctrl = event.parameters[2] elif type_ == 'chat': session = event.parameters[8] ctrl = session.control @@ -1578,7 +1578,7 @@ event = gajim.events.get_first_event(account, jid, type_)
if type_ == 'printed_pm': - ctrl = event.parameters[0] + ctrl = event.parameters[2] elif type_ == 'pm': session = event.parameters[8]
diff -r 74adce11c070 -r 70dbe48350ff src/roster_window.py --- a/src/roster_window.py Tue Mar 27 14:57:49 2012 +0200 +++ b/src/roster_window.py Sun Apr 01 19:39:26 2012 +0200 @@ -1871,9 +1871,9 @@ for ev in event_list: if ev.type_ != 'printed_chat': continue - if len(ev.parameters) > 1 and ev.parameters[1]: + if len(ev.parameters) > 3 and ev.parameters[3]: # There is a msg_id - msg_ids.append(ev.parameters[1]) + msg_ids.append(ev.parameters[3])
if msg_ids: gajim.logger.set_read_messages(msg_ids)