Philipp Hörist pushed to branch master at gajim / gajim
Commits: fbcce35b by Philipp Hörist at 2019-11-13T20:42:33Z Improve event filter
Allow comparing attributes with different names
Example: ``` @event_filter(['account', 'jid=own_jid']) def _on_event(self): pass ```
_on_event() is only executed if the event attribute `jid` matches the `own_jid` attribute on self
- - - - - 4726272d by Philipp Hörist at 2019-11-13T20:46:33Z Replace ensure_proper_control with event_filter
- - - - - 40106f2b by Philipp Hörist at 2019-11-13T21:14:46Z ChatControl: Refactor event handlers
- Group all event handlers - Use event as var name instead of obj - Use event_filter() - Unify handler method names
- - - - - 4b312c2d by Philipp Hörist at 2019-11-13T21:19:47Z PrivateChatControl: Refactor event handlers
- Group all event handlers - Use event as var name instead of obj - Use event_filter() - Unify handler method names
- - - - - 4fb0c787 by Philipp Hörist at 2019-11-13T21:44:18Z GroupChatControl: Refactor event handlers
- Use event as var name instead of obj - Use event_filter() - Unify handler method names
- - - - -
7 changed files:
- gajim/chat_control.py - gajim/common/connection.py - gajim/common/helpers.py - gajim/common/modules/caps.py - gajim/groupchat_control.py - gajim/gtk/util.py - gajim/privatechat_control.py
Changes:
===================================== gajim/chat_control.py ===================================== @@ -67,7 +67,6 @@ from gajim.gtk.dialogs import NewConfirmationDialog from gajim.gtk.add_contact import AddNewContactWindow from gajim.gtk.util import get_icon_name from gajim.gtk.util import get_cursor -from gajim.gtk.util import ensure_proper_control from gajim.gtk.util import format_mood from gajim.gtk.util import format_activity from gajim.gtk.util import format_tune @@ -217,11 +216,11 @@ class ChatControl(ChatControlBase): ('tune-received', ged.GUI1, self._on_tune_received), ('location-received', ged.GUI1, self._on_location_received), ('update-client-info', ged.GUI1, self._on_update_client_info), - ('chatstate-received', ged.GUI1, self._nec_chatstate_received), - ('caps-update', ged.GUI1, self._nec_caps_received), - ('message-sent', ged.OUT_POSTCORE, self._message_sent), - ('mam-decrypted-message-received', ged.GUI1, self._nec_mam_decrypted_message_received), - ('decrypted-message-received', ged.GUI1, self._nec_decrypted_message_received), + ('chatstate-received', ged.GUI1, self._on_chatstate_received), + ('caps-update', ged.GUI1, self._on_caps_update), + ('message-sent', ged.OUT_POSTCORE, self._on_message_sent), + ('mam-decrypted-message-received', ged.GUI1, self._on_mam_decrypted_message_received), + ('decrypted-message-received', ged.GUI1, self._on_decrypted_message_received), ('receipt-received', ged.GUI1, self._receipt_received), ('message-error', ged.GUI1, self._on_message_error), ('zeroconf-error', ged.GUI1, self._on_zeroconf_error), @@ -229,7 +228,7 @@ class ChatControl(ChatControlBase):
if self._type.is_chat: # Dont connect this when PrivateChatControl is used - self.register_event('update-roster-avatar', ged.GUI1, self._nec_update_avatar) + self.register_event('update-roster-avatar', ged.GUI1, self._on_update_roster_avatar) # pylint: enable=line-too-long
# PluginSystem: adding GUI extension point for this ChatControl @@ -468,29 +467,29 @@ class ChatControl(ChatControlBase): return self.xml.location_image return None
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_mood_received(self, _event): self._update_pep(PEPEventType.MOOD)
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_activity_received(self, _event): self._update_pep(PEPEventType.ACTIVITY)
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_tune_received(self, _event): self._update_pep(PEPEventType.TUNE)
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_location_received(self, _event): self._update_pep(PEPEventType.LOCATION)
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_nickname_received(self, _event): self.update_ui() self.parent_win.redraw_tab(self) self.parent_win.show_title()
- @ensure_proper_control + @event_filter(['account', 'jid']) def _on_update_client_info(self, event): contact = app.contacts.get_contact( self.account, event.jid, event.resource) @@ -498,6 +497,136 @@ class ChatControl(ChatControlBase): return self.xml.phone_image.set_visible(contact.uses_phone)
+ @event_filter(['account']) + def _on_chatstate_received(self, event): + if self._type.is_privatechat: + if event.contact != self.gc_contact: + return + else: + if event.contact.jid != self.contact.jid: + return + + self.draw_banner_text() + + # update chatstate in tab for this chat + if event.contact.is_gc_contact: + chatstate = event.contact.chatstate + else: + chatstate = app.contacts.get_combined_chatstate( + self.account, self.contact.jid) + self.parent_win.redraw_tab(self, chatstate) + + @event_filter(['account']) + def _on_caps_update(self, event): + if self._type.is_chat and event.jid != self.contact.jid: + return + if self._type.is_privatechat and event.fjid != self.contact.jid: + return + self.update_ui() + + @event_filter(['account']) + def _on_mam_decrypted_message_received(self, event): + if event.properties.type.is_groupchat: + return + + if event.properties.is_muc_pm: + if not event.properties.jid == self.contact.get_full_jid(): + return + else: + if not event.properties.jid.bareMatch(self.contact.jid): + return + + kind = '' # incoming + if event.kind == KindConstant.CHAT_MSG_SENT: + kind = 'outgoing' + + self.add_message(event.msgtxt, + kind, + tim=event.properties.mam.timestamp, + correct_id=event.correct_id, + message_id=event.properties.id, + additional_data=event.additional_data) + + @event_filter(['account']) + def _on_decrypted_message_received(self, event): + if not event.msgtxt: + return True + + if event.session.control != self: + return + + typ = '' + if event.properties.is_sent_carbon: + typ = 'out' + + self.add_message(event.msgtxt, + typ, + tim=event.properties.timestamp, + subject=event.properties.subject, + displaymarking=event.displaymarking, + msg_log_id=event.msg_log_id, + message_id=event.properties.id, + correct_id=event.correct_id, + additional_data=event.additional_data) + if event.msg_log_id: + pw = self.parent_win + end = self.conv_textview.autoscroll + if not pw or (pw.get_active_control() and self \ + == pw.get_active_control() and pw.is_active() and end): + app.logger.set_read_messages([event.msg_log_id]) + + @event_filter(['account', 'jid']) + def _on_message_error(self, event): + self.conv_textview.show_error(event.message_id, event.error) + + @event_filter(['account', 'jid']) + def _on_message_sent(self, event): + if not event.message: + return + + self.last_sent_msg = event.stanza_id + message_id = event.msg_iq.getID() + + if event.label: + displaymarking = event.label.getTag('displaymarking') + else: + displaymarking = None + if self.correcting: + self.correcting = False + gtkgui_helpers.remove_css_class( + self.msg_textview, 'gajim-msg-correcting') + + self.add_message(event.message, + self.contact.jid, + tim=event.timestamp, + displaymarking=displaymarking, + message_id=message_id, + correct_id=event.correct_id, + additional_data=event.additional_data) + + @event_filter(['account', 'jid']) + def _receipt_received(self, event): + self.conv_textview.show_receipt(event.receipt_id) + + @event_filter(['account', 'jid']) + def _on_zeroconf_error(self, event): + self.add_status_message(event.message) + + @event_filter(['account', 'jid']) + def _on_update_roster_avatar(self, obj): + self.show_avatar() + + def _nec_ping(self, event): + if self.contact != event.contact: + return + if event.name == 'ping-sent': + self.add_info_message(_('Ping?')) + elif event.name == 'ping-reply': + self.add_info_message( + _('Pong! (%s seconds)') % event.seconds) + elif event.name == 'ping-error': + self.add_info_message(_('Error.')) + def _update_jingle(self, jingle_type): if jingle_type not in ('audio', 'video'): return @@ -787,90 +916,6 @@ class ChatControl(ChatControlBase): fixed.set_no_show_all(True) self.close_jingle_content(jingle_type)
- @event_filter(['account']) - def _nec_mam_decrypted_message_received(self, obj): - if obj.properties.type.is_groupchat: - return - - if obj.properties.is_muc_pm: - if not obj.properties.jid == self.contact.get_full_jid(): - return - else: - if not obj.properties.jid.bareMatch(self.contact.jid): - return - - kind = '' # incoming - if obj.kind == KindConstant.CHAT_MSG_SENT: - kind = 'outgoing' - - self.add_message(obj.msgtxt, - kind, - tim=obj.properties.mam.timestamp, - correct_id=obj.correct_id, - message_id=obj.properties.id, - additional_data=obj.additional_data) - - def _nec_decrypted_message_received(self, obj): - if not obj.msgtxt: - return True - if obj.conn.name != self.account: - return - - if obj.session.control != self: - return - - typ = '' - if obj.properties.is_sent_carbon: - typ = 'out' - - self.add_message(obj.msgtxt, - typ, - tim=obj.properties.timestamp, - subject=obj.properties.subject, - displaymarking=obj.displaymarking, - msg_log_id=obj.msg_log_id, - message_id=obj.properties.id, - correct_id=obj.correct_id, - additional_data=obj.additional_data) - if obj.msg_log_id: - pw = self.parent_win - end = self.conv_textview.autoscroll - if not pw or (pw.get_active_control() and self \ - == pw.get_active_control() and pw.is_active() and end): - app.logger.set_read_messages([obj.msg_log_id]) - - @event_filter(['account', 'jid']) - def _on_message_error(self, event): - self.conv_textview.show_error(event.message_id, event.error) - - def _message_sent(self, obj): - if obj.conn.name != self.account: - return - if obj.jid != self.contact.jid: - return - if not obj.message: - return - - self.last_sent_msg = obj.stanza_id - message_id = obj.msg_iq.getID() - - if obj.label: - displaymarking = obj.label.getTag('displaymarking') - else: - displaymarking = None - if self.correcting: - self.correcting = False - gtkgui_helpers.remove_css_class( - self.msg_textview, 'gajim-msg-correcting') - - self.add_message(obj.message, - self.contact.jid, - tim=obj.timestamp, - displaymarking=displaymarking, - message_id=message_id, - correct_id=obj.correct_id, - additional_data=obj.additional_data) - def send_message(self, message, xhtml=None, process_commands=True, attention=False): """ @@ -958,10 +1003,6 @@ class ChatControl(ChatControlBase): else: self.old_msg_kind = kind
- @event_filter(['account', 'jid']) - def _receipt_received(self, event): - self.conv_textview.show_receipt(event.receipt_id) - def get_tab_label(self): unread = '' if self.resource: @@ -1112,47 +1153,6 @@ class ChatControl(ChatControlBase): return on_yes(self)
- def _nec_chatstate_received(self, event): - if event.account != self.account: - return - - if self._type.is_privatechat: - if event.contact != self.gc_contact: - return - else: - if event.contact.jid != self.contact.jid: - return - - self.draw_banner_text() - - # update chatstate in tab for this chat - if event.contact.is_gc_contact: - chatstate = event.contact.chatstate - else: - chatstate = app.contacts.get_combined_chatstate( - self.account, self.contact.jid) - self.parent_win.redraw_tab(self, chatstate) - - def _nec_caps_received(self, obj): - if obj.conn.name != self.account: - return - if self._type.is_chat and obj.jid != self.contact.jid: - return - if self._type.is_privatechat and obj.fjid != self.contact.jid: - return - self.update_ui() - - def _nec_ping(self, obj): - if self.contact != obj.contact: - return - if obj.name == 'ping-sent': - self.add_info_message(_('Ping?')) - elif obj.name == 'ping-reply': - self.add_info_message( - _('Pong! (%s seconds)') % obj.seconds) - elif obj.name == 'ping-error': - self.add_info_message(_('Error.')) - def show_avatar(self): if not app.config.get('show_avatar_in_chat'): return @@ -1166,13 +1166,6 @@ class ChatControl(ChatControlBase):
self.xml.avatar_image.set_from_surface(surface)
- def _nec_update_avatar(self, obj): - if obj.account != self.account: - return - if obj.jid != self.contact.jid: - return - self.show_avatar() - def _on_drag_data_received(self, widget, context, x, y, selection, target_type, timestamp): if not selection.get_data(): @@ -1364,10 +1357,6 @@ class ChatControl(ChatControlBase): 'name': name, 'show': uf_show, 'status': status or ''} self.add_status_message(status_line)
- @event_filter(['account', 'jid']) - def _on_zeroconf_error(self, event): - self.add_status_message(event.message) - def _info_bar_show_message(self): if self.info_bar.get_visible(): # A message is already shown
===================================== gajim/common/connection.py ===================================== @@ -1666,9 +1666,14 @@ class Connection(CommonConnection, ConnectionHandlers): def send_gc_message(self, obj): obj.stanza_id = self.connection.send(obj.msg_iq) app.nec.push_incoming_event(MessageSentEvent( - None, conn=self, jid=obj.jid, message=obj.message, + None, + conn=self, + account=self.name, + jid=obj.jid, + message=obj.message, automatic_message=obj.automatic_message, - stanza_id=obj.stanza_id, additional_data=obj.additional_data)) + stanza_id=obj.stanza_id, + additional_data=obj.additional_data))
def unregister_account(self, on_remove_success): self._unregister_account = True
===================================== gajim/common/helpers.py ===================================== @@ -1453,12 +1453,17 @@ def event_filter(filter_): @wraps(func) def func_wrapper(self, event, *args, **kwargs): for attr in filter_: + if '=' in attr: + attr1, attr2 = attr.split('=') + else: + attr1, attr2 = attr, attr try: - if getattr(event, attr) != getattr(self, attr): - return + if getattr(event, attr1) != getattr(self, attr2): + return None except AttributeError: - if getattr(event, attr) != getattr(self, '_%s' % attr): - return + if getattr(event, attr1) != getattr(self, '_%s' % attr2): + return None + return func(self, event, *args, **kwargs) return func_wrapper return event_filter_decorator
===================================== gajim/common/modules/caps.py ===================================== @@ -75,7 +75,7 @@ class Caps(BaseModule):
app.nec.push_incoming_event( NetworkEvent('caps-update', - conn=self._con, + account=self._account, fjid=jid, jid=properties.jid.getBare()))
@@ -134,7 +134,7 @@ class Caps(BaseModule):
app.nec.push_incoming_event( NetworkEvent('caps-update', - conn=self._con, + account=self._account, fjid=str(info.jid), jid=bare_jid))
===================================== gajim/groupchat_control.py ===================================== @@ -204,12 +204,12 @@ class GroupchatControl(ChatControlBase): ('muc-disco-update', ged.GUI1, self._on_disco_update), ('muc-configuration-finished', ged.GUI1, self._on_configuration_finished), ('muc-configuration-failed', ged.GUI1, self._on_configuration_failed), - ('gc-message-received', ged.GUI1, self._nec_gc_message_received), - ('mam-decrypted-message-received', ged.GUI1, self._nec_mam_decrypted_message_received), - ('update-room-avatar', ged.GUI1, self._nec_update_room_avatar), - ('signed-in', ged.GUI1, self._nec_signed_in), - ('decrypted-message-received', ged.GUI2, self._nec_decrypted_message_received), - ('gc-stanza-message-outgoing', ged.OUT_POSTCORE, self._message_sent), + ('gc-message-received', ged.GUI1, self._on_gc_message_received), + ('mam-decrypted-message-received', ged.GUI1, self._on_mam_decrypted_message_received), + ('update-room-avatar', ged.GUI1, self._on_update_room_avatar), + ('signed-in', ged.GUI1, self._on_signed_in), + ('decrypted-message-received', ged.GUI2, self._on_decrypted_message_received), + ('gc-stanza-message-outgoing', ged.OUT_POSTCORE, self._on_message_sent), ('bookmarks-received', ged.GUI2, self._on_bookmarks_received), ]) # pylint: enable=line-too-long @@ -785,9 +785,8 @@ class GroupchatControl(ChatControlBase): """ self.xml.banner_name_label.set_text(self.room_name)
- def _nec_update_room_avatar(self, obj): - if obj.jid != self.room_jid: - return + @event_filter(['jid=room_jid']) + def _on_update_room_avatar(self, event): self._update_banner_state_image()
@event_filter(['account']) @@ -815,37 +814,37 @@ class GroupchatControl(ChatControlBase): modal=False).show()
@event_filter(['account']) - def _nec_mam_decrypted_message_received(self, obj): - if not obj.properties.type.is_groupchat: + def _on_mam_decrypted_message_received(self, event): + if not event.properties.type.is_groupchat: return - if obj.archive_jid != self.room_jid: + if event.archive_jid != self.room_jid: return - self.add_message(obj.msgtxt, - contact=obj.properties.muc_nickname, - tim=obj.properties.mam.timestamp, - correct_id=obj.correct_id, - message_id=obj.properties.id, - additional_data=obj.additional_data) + self.add_message(event.msgtxt, + contact=event.properties.muc_nickname, + tim=event.properties.mam.timestamp, + correct_id=event.correct_id, + message_id=event.properties.id, + additional_data=event.additional_data)
@event_filter(['account', 'room_jid']) - def _nec_gc_message_received(self, obj): - if obj.properties.muc_nickname is None: + def _on_gc_message_received(self, event): + if event.properties.muc_nickname is None: # message from server - self.add_message(obj.msgtxt, - tim=obj.properties.timestamp, - displaymarking=obj.displaymarking, - additional_data=obj.additional_data) + self.add_message(event.msgtxt, + tim=event.properties.timestamp, + displaymarking=event.displaymarking, + additional_data=event.additional_data) else: - if obj.properties.muc_nickname == self.nick: - self.last_sent_txt = obj.msgtxt - self.add_message(obj.msgtxt, - contact=obj.properties.muc_nickname, - tim=obj.properties.timestamp, - displaymarking=obj.displaymarking, - correct_id=obj.correct_id, - message_id=obj.properties.id, - additional_data=obj.additional_data) - obj.needs_highlight = self.needs_visual_notification(obj.msgtxt) + if event.properties.muc_nickname == self.nick: + self.last_sent_txt = event.msgtxt + self.add_message(event.msgtxt, + contact=event.properties.muc_nickname, + tim=event.properties.timestamp, + displaymarking=event.displaymarking, + correct_id=event.correct_id, + message_id=event.properties.id, + additional_data=event.additional_data) + event.needs_highlight = self.needs_visual_notification(event.msgtxt)
def on_private_message(self, nick, sent, msg, tim, session, additional_data, msg_log_id=None, displaymarking=None): @@ -1083,43 +1082,41 @@ class GroupchatControl(ChatControlBase): for change in changes: self.add_info_message(change)
- def _nec_signed_in(self, obj): - if obj.conn.name != self.account: - return - obj.conn.get_module('MUC').join(self._muc_data) - - def _nec_decrypted_message_received(self, obj): - if obj.conn.name != self.account: + def _on_signed_in(self, event): + if event.conn.name != self.account: return + event.conn.get_module('MUC').join(self._muc_data)
- if not obj.properties.jid.bareMatch(self.room_jid): + @event_filter(['account']) + def _on_decrypted_message_received(self, event): + if not event.properties.jid.bareMatch(self.room_jid): return
- if obj.properties.is_muc_pm and not obj.session.control: + if event.properties.is_muc_pm and not event.session.control: # We got a pm from this room - nick = obj.resource + nick = event.resource # otherwise pass it off to the control to be queued self.on_private_message(nick, - obj.properties.is_sent_carbon, - obj.msgtxt, - obj.properties.timestamp, + event.properties.is_sent_carbon, + event.msgtxt, + event.properties.timestamp, self.session, - obj.additional_data, - msg_log_id=obj.msg_log_id, - displaymarking=obj.displaymarking) + event.additional_data, + msg_log_id=event.msg_log_id, + displaymarking=event.displaymarking)
- def _nec_ping(self, obj): - if self.contact.jid != obj.contact.room_jid: + def _nec_ping(self, event): + if self.contact.jid != event.contact.room_jid: return
- nick = obj.contact.get_shown_name() - if obj.name == 'ping-sent': + nick = event.contact.get_shown_name() + if event.name == 'ping-sent': self.add_info_message(_('Ping? (%s)') % nick) - elif obj.name == 'ping-reply': + elif event.name == 'ping-reply': self.add_info_message( _('Pong! (%(nick)s %(delay)s s.)') % {'nick': nick, - 'delay': obj.seconds}) - elif obj.name == 'ping-error': + 'delay': event.seconds}) + elif event.name == 'ping-error': self.add_info_message(_('Error.'))
@property @@ -1519,15 +1516,13 @@ class GroupchatControl(ChatControlBase): if self._wait_for_destruction: self._close_control()
- @event_filter(['account']) - def _message_sent(self, obj): - if not obj.message: - return - if obj.jid != self.room_jid: + @event_filter(['account', 'jid=room_jid']) + def _on_message_sent(self, event): + if not event.message: return # we'll save sent message text when we'll receive it in # _nec_gc_message_received - self.last_sent_msg = obj.stanza_id + self.last_sent_msg = event.stanza_id if self.correcting: self.correcting = False gtkgui_helpers.remove_css_class(
===================================== gajim/gtk/util.py ===================================== @@ -519,17 +519,6 @@ def ensure_not_destroyed(func): return func_wrapper
-def ensure_proper_control(func): - @wraps(func) - def func_wrapper(self, event): - if event.account != self.account: - return - if event.jid != self.contact.jid: - return - return func(self, event) - return func_wrapper - - def format_mood(mood, text): if mood is None: return ''
===================================== gajim/privatechat_control.py ===================================== @@ -29,6 +29,7 @@ from gajim.common import helpers from gajim.common import ged from gajim.common.i18n import _ from gajim.common.const import AvatarSize +from gajim.common.helpers import event_filter
from gajim.chat_control import ChatControl from gajim.command_system.implementation.hosts import PrivateChatCommands @@ -58,15 +59,15 @@ class PrivateChatControl(ChatControl):
# pylint: disable=line-too-long self.register_events([ - ('update-gc-avatar', ged.GUI1, self._nec_update_avatar), - ('caps-update', ged.GUI1, self._nec_caps_received_pm), + ('update-gc-avatar', ged.GUI1, self._on_update_gc_avatar), + ('caps-update', ged.GUI1, self._on_caps_update), ('muc-user-joined', ged.GUI1, self._on_user_joined), ('muc-user-left', ged.GUI1, self._on_user_left), ('muc-nickname-changed', ged.GUI1, self._on_nickname_changed), ('muc-self-presence', ged.GUI1, self._on_self_presence), - ('muc-self-kicked', ged.GUI1, self._on_diconnected), + ('muc-self-kicked', ged.GUI1, self._on_disconnected), ('muc-user-status-show-changed', ged.GUI1, self._on_status_show_changed), - ('muc-destroyed', ged.GUI1, self._on_diconnected), + ('muc-destroyed', ged.GUI1, self._on_disconnected), ]) # pylint: enable=line-too-long
@@ -88,15 +89,14 @@ class PrivateChatControl(ChatControl): def get_our_nick(self): return self.room_ctrl.nick
- def _nec_caps_received_pm(self, obj): - if obj.conn.name != self.account or \ - obj.fjid != self.gc_contact.get_full_jid(): + @event_filter(['account']) + def _on_caps_update(self, event): + if event.fjid != self.gc_contact.get_full_jid(): return self.update_contact()
+ @event_filter(['account']) def _on_nickname_changed(self, event): - if event.account != self.account: - return if event.properties.new_jid != self.gc_contact.get_full_jid(): return
@@ -118,9 +118,8 @@ class PrivateChatControl(ChatControl): self.parent_win.redraw_tab(self) self.update_ui()
+ @event_filter(['account']) def _on_status_show_changed(self, event): - if event.account != self.account: - return if event.properties.jid != self.gc_contact.get_full_jid(): return
@@ -146,25 +145,22 @@ class PrivateChatControl(ChatControl): self.parent_win.redraw_tab(self) self.update_ui()
- def _on_diconnected(self, event): - if event.account != self.account: - return + @event_filter(['account']) + def _on_disconnected(self, event): if event.properties.jid != self.gc_contact.get_full_jid(): return
self.got_disconnected()
+ @event_filter(['account']) def _on_user_left(self, event): - if event.account != self.account: - return if event.properties.jid != self.gc_contact.get_full_jid(): return
self.got_disconnected()
+ @event_filter(['account']) def _on_user_joined(self, event): - if event.account != self.account: - return if event.properties.jid != self.gc_contact.get_full_jid(): return
@@ -173,15 +169,19 @@ class PrivateChatControl(ChatControl): self.parent_win.redraw_tab(self) self.got_connected()
+ @event_filter(['account']) def _on_self_presence(self, event): - if event.account != self.account: - return if event.properties.jid != self.gc_contact.get_full_jid(): return
self.parent_win.redraw_tab(self) self.got_connected()
+ def _on_update_gc_avatar(self, event): + if event.contact != self.gc_contact: + return + self.show_avatar() + def send_message(self, message, xhtml=None, process_commands=True, attention=False): """ @@ -214,11 +214,6 @@ class PrivateChatControl(ChatControl): else: self.got_connected()
- def _nec_update_avatar(self, obj): - if obj.contact != self.gc_contact: - return - self.show_avatar() - def show_avatar(self): if not app.config.get('show_avatar_in_chat'): return
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/36ecf673212775ac3578bec48e2d4b8000...