diff --git a/src/DisplayTabs/_EmbeddedList.py b/src/DisplayTabs/_EmbeddedList.py index 6bc03a720..4c30ceec5 100644 --- a/src/DisplayTabs/_EmbeddedList.py +++ b/src/DisplayTabs/_EmbeddedList.py @@ -459,6 +459,10 @@ class EmbeddedList(ButtonTab): """ #during rebuild, don't do _selection_changed self.dirty_selection = True + (model, node) = self.selection.get_selected() + selectedpath = None + if node: + selectedpath = model.get_path(node) try: self.model = self.construct_model() except AttributeError, msg: @@ -469,13 +473,22 @@ class EmbeddedList(ButtonTab): return self.tree.set_model(self.model) + #reset previous select + if not selectedpath is None: + self.selection.select_path(selectedpath) + #self.selection.select_path(node) self._set_label() #model and tree are reset, allow _selection_changed again, and force it self.dirty_selection = False self._selection_changed() - self.post_rebuild() + self.post_rebuild(selectedpath) - def post_rebuild(self): + def post_rebuild(self, prebuildpath): + """ + Allow post rebuild embeddedlist specific handling. + @param prebuildpath: path selected before rebuild, None if none + @type prebuildpath: tree path + """ pass def rebuild_callback(self): diff --git a/src/DisplayTabs/_EventEmbedList.py b/src/DisplayTabs/_EventEmbedList.py index 0ea79c1d5..5023ac9ee 100644 --- a/src/DisplayTabs/_EventEmbedList.py +++ b/src/DisplayTabs/_EventEmbedList.py @@ -304,5 +304,12 @@ class EventEmbedList(GroupEmbeddedList): """ self._non_native_change() - def post_rebuild(self): + def post_rebuild(self, prebuildpath): + """ + Allow post rebuild specific handling. + @param prebuildpath: path selected before rebuild, None if none + @type prebuildpath: tree path + """ self.tree.expand_all() + if not prebuildpath is None: + self.selection.select_path(prebuildpath) diff --git a/src/DisplayTabs/_NameEmbedList.py b/src/DisplayTabs/_NameEmbedList.py index eb2397133..1878882cb 100644 --- a/src/DisplayTabs/_NameEmbedList.py +++ b/src/DisplayTabs/_NameEmbedList.py @@ -198,5 +198,12 @@ class NameEmbedList(GroupEmbeddedList): if row_from[0] == self._WORKGROUP and row_to[0] == NameModel.DEFINDEX: self.set_default_name(obj) - def post_rebuild(self): + def post_rebuild(self, prebuildpath): + """ + Allow post rebuild specific handling. + @param prebuildpath: path selected before rebuild, None if none + @type prebuildpath: tree path + """ self.tree.expand_all() + if not prebuildpath is None: + self.selection.select_path(prebuildpath)