Philipp Hörist pushed to branch master at gajim / gajim
Commits: c30369ac by lovetox at 2022-08-13T19:12:28+02:00 fix: ChatList: Update avatar for all chats correctly - - - - - 1 changed file: - gajim/gtk/chat_list.py Changes: ===================================== gajim/gtk/chat_list.py ===================================== @@ -49,6 +49,9 @@ from gajim.common.preview_helpers import guess_simple_file_type from gajim.common.types import ChatContactT from gajim.common.types import OneOnOneContactT +from gajim.common.modules.contacts import BareContact +from gajim.common.modules.contacts import GroupchatContact +from gajim.common.modules.contacts import GroupchatParticipant from .menus import get_chat_list_row_menu from .builder import get_builder @@ -548,11 +551,24 @@ def __init__(self, workspace_id: str, account: str, jid: JID, type_: str, self._client = app.get_client(account) self.contact = self._client.get_module('Contacts').get_contact(jid) - self.contact.connect('presence-update', self._on_presence_update) - self.contact.connect('chatstate-update', self._on_chatstate_update) - self.contact.connect('nickname-update', self._on_nickname_update) - self.contact.connect('caps-update', self._on_avatar_update) - self.contact.connect('avatar-update', self._on_avatar_update) + + if isinstance(self.contact, BareContact): + self.contact.connect('presence-update', self._on_presence_update) + self.contact.connect('chatstate-update', self._on_chatstate_update) + self.contact.connect('nickname-update', self._on_nickname_update) + self.contact.connect('caps-update', self._on_avatar_update) + self.contact.connect('avatar-update', self._on_avatar_update) + + elif isinstance(self.contact, GroupchatContact): + self.contact.connect('avatar-update', self._on_avatar_update) + + elif isinstance(self.contact, GroupchatParticipant): + self.contact.connect('chatstate-update', self._on_chatstate_update) + self.contact.connect('user-joined', self._on_muc_user_update) + self.contact.connect('user-left', self._on_muc_user_update) + self.contact.connect('user-avatar-update', self._on_muc_user_update) + self.contact.connect('user-status-show-changed', + self._on_muc_user_update) self.contact_name: str = self.contact.name self.timestamp: float = 0 @@ -568,6 +584,7 @@ def __init__(self, workspace_id: str, account: str, jid: JID, type_: str, self.add(self._ui.eventbox) self.connect('state-flags-changed', self._on_state_flags_changed) + self.connect('destroy', self._on_destroy) self._ui.eventbox.connect('button-press-event', self._on_button_press) self._ui.close_button.connect('clicked', self._on_close_button_clicked) @@ -752,6 +769,13 @@ def _on_avatar_update(self, ) -> None: self.update_avatar() + def _on_muc_user_update(self, + _contact: GroupchatParticipant, + _signal_name: str, + *args: Any + ) -> None: + self.update_avatar() + def update_avatar(self) -> None: scale = self.get_scale_factor() surface = self.contact.get_avatar(AvatarSize.ROSTER, scale) @@ -881,6 +905,10 @@ def _on_state_flags_changed(self, else: self._ui.revealer.set_reveal_child(False) + def _on_destroy(self, _row: ChatRow) -> None: + self.contact.disconnect_all_from_obj(self) + app.check_finalize(self) + def _on_close_button_clicked(self, _button: Gtk.Button) -> None: app.window.activate_action( 'remove-chat', View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/c30369acb0fccb0d64cecd6e13749be3fad20d20 -- View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/c30369acb0fccb0d64cecd6e13749be3fad20d20 You're receiving this email because of your account on dev.gajim.org.
_______________________________________________ Commits mailing list Commits@gajim.org https://lists.gajim.org/cgi-bin/listinfo/commits