remember which metacontacts were collapsed / expanded and restore their states. Fixes #4618
This commit is contained in:
parent
5c8c6933a0
commit
12c54d9c17
|
@ -1407,6 +1407,19 @@ class RosterWindow:
|
||||||
self.tree.expand_row(path, False)
|
self.tree.expand_row(path, False)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _adjust_contact_expand_collapse_state(self, jid, account):
|
||||||
|
'''Expand/collapse group row based on self.collapsed_rows'''
|
||||||
|
iterC = self._get_contact_iter(jid, account)
|
||||||
|
if not iterC:
|
||||||
|
# Contact not visible
|
||||||
|
return
|
||||||
|
path = self.modelfilter.get_path(iterC)
|
||||||
|
if account + group in self.collapsed_rows:
|
||||||
|
self.tree.collapse_row(path)
|
||||||
|
else:
|
||||||
|
self.tree.expand_row(path, False)
|
||||||
|
return False
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
### Roster and Modelfilter handling
|
### Roster and Modelfilter handling
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
@ -3498,6 +3511,16 @@ class RosterWindow:
|
||||||
gajim.groups[account][group]['expand'] = True
|
gajim.groups[account][group]['expand'] = True
|
||||||
if account + group in self.collapsed_rows:
|
if account + group in self.collapsed_rows:
|
||||||
self.collapsed_rows.remove(account + group)
|
self.collapsed_rows.remove(account + group)
|
||||||
|
for contact in gajim.contacts.iter_contacts(account):
|
||||||
|
jid = contact.jid
|
||||||
|
print contact.jid, group, gajim.contacts.is_big_brother(account, contact.jid, accounts), self.collapsed_rows
|
||||||
|
if group in contact.groups and gajim.contacts.is_big_brother(
|
||||||
|
account, jid, accounts) and account + group + jid \
|
||||||
|
not in self.collapsed_rows:
|
||||||
|
titers = self._get_contact_iter(jid, account)
|
||||||
|
for titer in titers:
|
||||||
|
path = model.get_path(titer)
|
||||||
|
self.tree.expand_row(path, False)
|
||||||
elif type_ == 'account':
|
elif type_ == 'account':
|
||||||
account = accounts[0] # There is only one cause we don't use merge
|
account = accounts[0] # There is only one cause we don't use merge
|
||||||
if account in self.collapsed_rows:
|
if account in self.collapsed_rows:
|
||||||
|
@ -3514,6 +3537,10 @@ class RosterWindow:
|
||||||
# Metacontact got toggled, update icon
|
# Metacontact got toggled, update icon
|
||||||
jid = model[titer][C_JID].decode('utf-8')
|
jid = model[titer][C_JID].decode('utf-8')
|
||||||
account = model[titer][C_ACCOUNT].decode('utf-8')
|
account = model[titer][C_ACCOUNT].decode('utf-8')
|
||||||
|
contact = gajim.contacts.get_contact(account, jid)
|
||||||
|
for group in contact.groups:
|
||||||
|
if account + group + jid in self.collapsed_rows:
|
||||||
|
self.collapsed_rows.append(account + group + jid)
|
||||||
family = gajim.contacts.get_metacontacts_family(account, jid)
|
family = gajim.contacts.get_metacontacts_family(account, jid)
|
||||||
nearby_family = \
|
nearby_family = \
|
||||||
self._get_nearby_family_and_big_brother(family, account)[0]
|
self._get_nearby_family_and_big_brother(family, account)[0]
|
||||||
|
@ -3543,17 +3570,21 @@ class RosterWindow:
|
||||||
for account in accounts:
|
for account in accounts:
|
||||||
if group in gajim.groups[account]: # This account has this group
|
if group in gajim.groups[account]: # This account has this group
|
||||||
gajim.groups[account][group]['expand'] = False
|
gajim.groups[account][group]['expand'] = False
|
||||||
if not account + group in self.collapsed_rows:
|
if account + group not in self.collapsed_rows:
|
||||||
self.collapsed_rows.append(account + group)
|
self.collapsed_rows.append(account + group)
|
||||||
elif type_ == 'account':
|
elif type_ == 'account':
|
||||||
account = accounts[0] # There is only one cause we don't use merge
|
account = accounts[0] # There is only one cause we don't use merge
|
||||||
if not account in self.collapsed_rows:
|
if account not in self.collapsed_rows:
|
||||||
self.collapsed_rows.append(account)
|
self.collapsed_rows.append(account)
|
||||||
self.draw_account(account)
|
self.draw_account(account)
|
||||||
elif type_ == 'contact':
|
elif type_ == 'contact':
|
||||||
# Metacontact got toggled, update icon
|
# Metacontact got toggled, update icon
|
||||||
jid = model[titer][C_JID].decode('utf-8')
|
jid = model[titer][C_JID].decode('utf-8')
|
||||||
account = model[titer][C_ACCOUNT].decode('utf-8')
|
account = model[titer][C_ACCOUNT].decode('utf-8')
|
||||||
|
contact = gajim.contacts.get_contact(account, jid)
|
||||||
|
for group in contact.groups:
|
||||||
|
if account + group + jid not in self.collapsed_rows:
|
||||||
|
self.collapsed_rows.append(account + group + jid)
|
||||||
family = gajim.contacts.get_metacontacts_family(account, jid)
|
family = gajim.contacts.get_metacontacts_family(account, jid)
|
||||||
nearby_family = \
|
nearby_family = \
|
||||||
self._get_nearby_family_and_big_brother(family, account)[0]
|
self._get_nearby_family_and_big_brother(family, account)[0]
|
||||||
|
|
Loading…
Reference in New Issue