From 588f659d84801706730f15f309b6eb803dd3899d Mon Sep 17 00:00:00 2001 From: Stephan Erb <steve-e@h3c.de> Date: Mon, 10 Nov 2008 23:11:31 +0000 Subject: [PATCH] Small bugfix and introduce a new function in roster window. * draw_completely: draw contact, mood, activity... of a given jid * For metacontacts over several accounts, not all avatars were shown correctly when the second accounts connected --- src/roster_window.py | 60 ++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 35 deletions(-) diff --git a/src/roster_window.py b/src/roster_window.py index e30492daaf..ca99a9e278 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -589,13 +589,9 @@ class RosterWindow: self._remove_metacontact_family(family, account) brothers = self._add_metacontact_family(family, account) - + for c, acc in brothers: - self.draw_contact(c.jid, acc) - self.draw_mood(c.jid, acc) - self.draw_activity(c.jid, acc) - self.draw_tune(c.jid, acc) - self.draw_avatar(c.jid, acc) + self.draw_completely(c.jid, acc) def _get_nearby_family_and_big_brother(self, family, account): @@ -639,11 +635,7 @@ class RosterWindow: 'self_contact', jid, account, None, None, None, None, None)) - self.draw_contact(jid, account) - self.draw_mood(jid, account) - self.draw_activity(jid, account) - self.draw_tune(jid, account) - self.draw_avatar(jid, account) + self.draw_completely(jid, account) self.draw_account(account) return contact @@ -699,11 +691,7 @@ class RosterWindow: # Draw the contact and its groups contact if not self.starting: for c, acc in contacts: - self.draw_contact(c.jid, acc) - self.draw_mood(c.jid, acc) - self.draw_activity(c.jid, acc) - self.draw_tune(c.jid, acc) - self.draw_avatar(c.jid, acc) + self.draw_completely(c.jid, acc) for group in contact.get_shown_groups(): self.draw_group(group, account) self._adjust_group_expand_collapse_state(group, account) @@ -764,11 +752,7 @@ class RosterWindow: # reshow the rest of the family brothers = self._add_metacontact_family(family, account) for c, acc in brothers: - self.draw_contact(c.jid, acc) - self.draw_mood(c.jid, acc) - self.draw_activity(c.jid, acc) - self.draw_tune(c.jid, acc) - self.draw_avatar(c.jid, acc) + self.draw_completely(c.jid, acc) if iters: # Draw all groups of the contact @@ -808,7 +792,7 @@ class RosterWindow: else: contact.show = show contact.status = status - self.draw_completely_and_show_if_needed(jid, account) + self.adjust_and_draw_contact_context(jid, account) return contact @@ -1307,9 +1291,15 @@ class RosterWindow: for child_iter in iters: self.model[child_iter][C_AVATAR_PIXBUF] = scaled_pixbuf return False + + def draw_completely(self, jid, account): + self.draw_contact(jid, account) + self.draw_mood(jid, account) + self.draw_activity(jid, account) + self.draw_tune(jid, account) + self.draw_avatar(jid, account) - - def draw_completely_and_show_if_needed(self, jid, account): + def adjust_and_draw_contact_context(self, jid, account): '''Draw contact, account and groups of given jid Show contact if it has pending events ''' @@ -1338,11 +1328,15 @@ class RosterWindow: ''' def _draw_all_contacts(jids, account): for jid in jids: - self.draw_contact(jid, account) - self.draw_mood(jid, account) - self.draw_activity(jid, account) - self.draw_tune(jid, account) - self.draw_avatar(jid, account) + family = gajim.contacts.get_metacontacts_family(account, jid) + if family: + # For metacontacts over several accounts: + # When we connect a new account existing brothers + # must be redrawn (got removed and readded) + for data in family: + self.draw_completely(data['jid'], data['account']) + else: + self.draw_completely(jid, account) yield True yield False @@ -2062,7 +2056,7 @@ class RosterWindow: pep.delete_pep(contact.jid, account) # Redraw everything and select the sender - self.draw_completely_and_show_if_needed(contact.jid, account) + self.adjust_and_draw_contact_context(contact.jid, account) def on_status_changed(self, account, status): @@ -3775,11 +3769,7 @@ class RosterWindow: brothers = self._add_metacontact_family(new_family, account_source) for c, acc in brothers: - self.draw_contact(c.jid, acc) - self.draw_mood(c.jid, acc) - self.draw_activity(c.jid, acc) - self.draw_tune(c.jid, acc) - self.draw_avatar(c.jid, acc) + self.draw_completely(c.jid, acc) old_groups.extend(c_dest.groups) for g in old_groups: -- GitLab