Various roster_window and modelfilter fixes.
* Do not double escape group names * Try to remove SelfContact on disconnect only once * Do not show minimized groupchats which were minimized after disconnect * Always reset group expand state after adding a contact to roster.
This commit is contained in:
parent
9457c28a63
commit
2c83acb614
|
@ -489,6 +489,7 @@ class RosterWindow:
|
||||||
# Family might has changed (actual big brother not on top).
|
# Family might has changed (actual big brother not on top).
|
||||||
# Remove childs first then big brother
|
# Remove childs first then big brother
|
||||||
family_in_roster = False
|
family_in_roster = False
|
||||||
|
big_brother_jid = None
|
||||||
for data in nearby_family:
|
for data in nearby_family:
|
||||||
_account = data['account']
|
_account = data['account']
|
||||||
_jid = data['jid']
|
_jid = data['jid']
|
||||||
|
@ -521,7 +522,9 @@ class RosterWindow:
|
||||||
|
|
||||||
if not family_in_roster:
|
if not family_in_roster:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
assert old_big_jid, 'No Big Brother in nearby family % (Family: %)' % \
|
||||||
|
(nearby_family, family)
|
||||||
iters = self._get_contact_iter(old_big_jid, old_big_account,
|
iters = self._get_contact_iter(old_big_jid, old_big_account,
|
||||||
old_big_contact, self.model)
|
old_big_contact, self.model)
|
||||||
assert len(iters) > 0, 'Old Big Brother %s is not in roster anymore' % \
|
assert len(iters) > 0, 'Old Big Brother %s is not in roster anymore' % \
|
||||||
|
@ -665,6 +668,7 @@ class RosterWindow:
|
||||||
self.draw_avatar(c.jid, acc)
|
self.draw_avatar(c.jid, acc)
|
||||||
for group in contact.get_shown_groups():
|
for group in contact.get_shown_groups():
|
||||||
self.draw_group(group, account)
|
self.draw_group(group, account)
|
||||||
|
self._adjust_group_expand_collapse_state(group, account)
|
||||||
self.draw_account(account)
|
self.draw_account(account)
|
||||||
|
|
||||||
return contacts[0][0] # it's contact/big brother with highest priority
|
return contacts[0][0] # it's contact/big brother with highest priority
|
||||||
|
@ -728,14 +732,20 @@ class RosterWindow:
|
||||||
'''
|
'''
|
||||||
contact = gajim.contacts.get_contact_with_highest_priority(account, jid)
|
contact = gajim.contacts.get_contact_with_highest_priority(account, jid)
|
||||||
if contact is None:
|
if contact is None:
|
||||||
|
# Do not show gc if we are disconnected and minimize it
|
||||||
|
if gajim.account_is_connected(account):
|
||||||
|
show = 'online'
|
||||||
|
else:
|
||||||
|
show = 'offline'
|
||||||
|
status = ''
|
||||||
contact = gajim.contacts.create_contact(jid = jid, name = jid,
|
contact = gajim.contacts.create_contact(jid = jid, name = jid,
|
||||||
groups = [_('Groupchats')], show = 'online',
|
groups = [_('Groupchats')], show = show,
|
||||||
status = status, sub = 'none')
|
status = status, sub = 'none')
|
||||||
gajim.contacts.add_contact(account, contact)
|
gajim.contacts.add_contact(account, contact)
|
||||||
self.add_contact(jid, account)
|
self.add_contact(jid, account)
|
||||||
else:
|
else:
|
||||||
contact.show = 'online'
|
contact.show = 'online'
|
||||||
self.draw_contact(jid, account)
|
self.draw_completely_and_show_if_needed(jid, account)
|
||||||
return contact
|
return contact
|
||||||
|
|
||||||
|
|
||||||
|
@ -922,7 +932,7 @@ class RosterWindow:
|
||||||
accounts = accounts, groups = [group])
|
accounts = accounts, groups = [group])
|
||||||
text += ' (%s/%s)' % (repr(nbr_on), repr(nbr_total))
|
text += ' (%s/%s)' % (repr(nbr_on), repr(nbr_total))
|
||||||
|
|
||||||
self.model[child_iter][C_NAME] = gobject.markup_escape_text(text)
|
self.model[child_iter][C_NAME] = text
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def draw_parent_contact(self, jid, account):
|
def draw_parent_contact(self, jid, account):
|
||||||
|
@ -1872,10 +1882,6 @@ class RosterWindow:
|
||||||
for contact in [c for c in lcontact if (c.show != 'offline' or \
|
for contact in [c for c in lcontact if (c.show != 'offline' or \
|
||||||
c.is_transport())]:
|
c.is_transport())]:
|
||||||
self.chg_contact_status(contact, 'offline', '', account)
|
self.chg_contact_status(contact, 'offline', '', account)
|
||||||
# Remove SelfContact from roster and remove it.
|
|
||||||
# It might be gone when we return
|
|
||||||
self_jid = gajim.get_jid_from_account(account)
|
|
||||||
self.remove_contact(self_jid, account, backend = True)
|
|
||||||
self.actions_menu_needs_rebuild = True
|
self.actions_menu_needs_rebuild = True
|
||||||
self.update_status_combobox()
|
self.update_status_combobox()
|
||||||
# Force the rebuild now since the on_activates on the menu itself does
|
# Force the rebuild now since the on_activates on the menu itself does
|
||||||
|
@ -2644,7 +2650,6 @@ class RosterWindow:
|
||||||
ctrl = gajim.interface.minimized_controls[account][jid]
|
ctrl = gajim.interface.minimized_controls[account][jid]
|
||||||
del gajim.interface.minimized_controls[account][jid]
|
del gajim.interface.minimized_controls[account][jid]
|
||||||
ctrl.shutdown()
|
ctrl.shutdown()
|
||||||
|
|
||||||
self.remove_groupchat(jid, account)
|
self.remove_groupchat(jid, account)
|
||||||
|
|
||||||
def on_send_single_message_menuitem_activate(self, widget, account,
|
def on_send_single_message_menuitem_activate(self, widget, account,
|
||||||
|
|
Loading…
Reference in New Issue