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
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits