diff --git a/src/config.py b/src/config.py index fd37bca5f..cb5be0723 100644 --- a/src/config.py +++ b/src/config.py @@ -515,11 +515,11 @@ class PreferencesWindow: def on_sort_by_show_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'sort_by_show') - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() def on_show_avatars_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_avatars_in_roster') - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() # Redraw connected groupchats (in an ugly way) for account in gajim.connections: if gajim.connections[account].connected: @@ -530,14 +530,14 @@ class PreferencesWindow: def on_show_status_msgs_in_roster_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'show_status_msgs_in_roster') - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() for ctl in gajim.interface.msg_win_mgr.controls(): if ctl.type_id == message_control.TYPE_GC: ctl.update_ui() def on_sort_by_show_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'sort_by_show') - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() def on_emoticons_combobox_changed(self, widget): active = widget.get_active() @@ -570,7 +570,7 @@ class PreferencesWindow: ctl.chat_buttons_set_visible(active) gajim.config.set('compact_view', active) gajim.interface.save_config() - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() def on_xhtml_checkbutton_toggled(self, widget): self.on_checkbutton_toggled(widget, 'ignore_incoming_xhtml') @@ -1753,7 +1753,7 @@ class AccountsWindow: if self.current_account == old_name: self.current_account = new_name # refresh roster - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() self.init_accounts() self.select_account(new_name) @@ -2077,7 +2077,7 @@ class AccountsWindow: gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() def on_enable_zeroconf_checkbutton2_toggled(self, widget): # don't do anything if there is an account with the local name but is a @@ -2119,7 +2119,7 @@ class AccountsWindow: gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() gajim.interface.roster.set_actions_menu_needs_rebuild() elif not gajim.config.get('enable_zeroconf') and widget.get_active(): @@ -2156,7 +2156,7 @@ class AccountsWindow: gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() gajim.interface.roster.set_actions_menu_needs_rebuild() gajim.interface.save_config() @@ -2587,7 +2587,7 @@ class RemoveAccountWindow: gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() gajim.interface.roster.set_actions_menu_needs_rebuild() if gajim.interface.instances.has_key('accounts'): gajim.interface.instances['accounts'].init_accounts() @@ -3421,7 +3421,7 @@ class AccountCreationWizardWindow: gajim.interface.roster.regroup = gajim.config.get('mergeaccounts') else: gajim.interface.roster.regroup = False - gajim.interface.roster.draw_roster() + gajim.interface.roster.setup_and_draw_roster() gajim.interface.roster.set_actions_menu_needs_rebuild() gajim.interface.save_config() diff --git a/src/roster_window.py b/src/roster_window.py index eeca1fbb5..e39b23acd 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -382,7 +382,6 @@ class RosterWindow: added_iters.append(i_) # Restore the group expand state - # FIXME path may be invalid at this point! path = self.model.get_path(child_iterG) if account + group in self.collapsed_rows: is_expanded = False @@ -432,14 +431,14 @@ class RosterWindow: # Remove us and empty groups from the model for i in iters: parent_i = self.model.iter_parent(i) - self.model.remove(i) - if parent_type == 'group' and \ - self.model.iter_n_children(parent_i) == 0: + self.model.iter_n_children(parent_i) == 1: group = self.model[parent_i][C_JID].decode('utf-8') if gajim.groups[account].has_key(group): del gajim.groups[account][group] self.model.remove(parent_i) + else: + self.model.remove(i) return True @@ -552,10 +551,6 @@ class RosterWindow: assert not self.model.iter_children(iters[0]),\ "Old Big Brother %s still has children" % old_big_jid - # This one is strange but necessary: - # Refilter filtered model to not crash hard. It thinks it still has children. - self.refilter_shown_roster_items() - ok = self._remove_entity(old_big_contact, old_big_account) assert ok, "Old Big Brother %s not removed" % old_big_jid assert len(self._get_contact_iter(old_big_jid, old_big_account, old_big_contact, @@ -1237,7 +1232,7 @@ class RosterWindow: task = _draw_all_contacts(jids, account, t) gobject.idle_add(task.next) - def draw_roster(self): + def setup_and_draw_roster(self): '''create new empty model and draw roster''' #(icon, name, type, jid, account, editable, avatar_pixbuf, padlock_pixbuf) self.model = gtk.TreeStore(gtk.Image, str, str, str, str, gtk.gdk.Pixbuf, @@ -3938,7 +3933,7 @@ class RosterWindow: def update_jabber_state_images(self): # Update the roster - self.draw_roster() + self.setup_and_draw_roster() # Update the status combobox model = self.status_combobox.get_model() titer = model.get_iter_root() @@ -5942,7 +5937,7 @@ class RosterWindow: self.tooltip = tooltips.RosterTooltip() # Workaroung: For strange reasons signal is behaving like row-changed self._toggeling_row = False - self.draw_roster() + self.setup_and_draw_roster() for account in gajim.connections: if gajim.config.get_per('accounts', account, 'publish_tune'):