From e620956cec21318f74f5dc5736ebeecc96bfd291 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Fri, 6 Dec 2013 16:07:00 +0100 Subject: [PATCH 5/5] tweakview.py: Remove and re-add all tweaks on tweak reload This is a bit heavier but keeps everything always sorted. The number of widgets we have isn't high enough for it to be too slow anyway. --- gtweak/tweakview.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/gtweak/tweakview.py b/gtweak/tweakview.py index 9de821c..f5ee5c9 100644 --- a/gtweak/tweakview.py +++ b/gtweak/tweakview.py @@ -73,7 +73,6 @@ class TweakView: ctx.add_provider (provider,6000) #add all tweaks - self._tweak_set = set() self._tweak_vbox = builder.get_object('tweak_vbox') self.reload_tweaks() @@ -83,24 +82,14 @@ class TweakView: self._notification_functions = {} def reload_tweaks(self): - new_tweak_set = set() + for widget in self._tweak_vbox: + self._tweak_vbox.remove(widget) for t in sorted(self._model.tweaks, key=_sort_tweak_widgets_by_widget_type): - new_tweak_set.add(t) - if t in self._tweak_set: - continue - t.main_window = self._main_window self._tweak_vbox.pack_start(t.widget, False, False, 0) t.set_notify_cb(self._on_tweak_notify) - self._tweak_set.add(t) - - for t in self._tweak_set - new_tweak_set: - self._tweak_vbox.remove(t.widget) - - self._tweak_set = new_tweak_set - def _on_model_row_changed(self, model, path, titer): model, selected = self.treeview.get_selection().get_selected_rows() self.select_none() -- 1.8.3.1