diff --git a/spyder/plugins/outlineexplorer/widgets.py b/spyder/plugins/outlineexplorer/widgets.py index 9604a4ccbb9..88247ab23ee 100644 --- a/spyder/plugins/outlineexplorer/widgets.py +++ b/spyder/plugins/outlineexplorer/widgets.py @@ -266,6 +266,7 @@ def __init__(self, parent): self._current_editor = None self._languages = [] self.is_visible = False + self.symbol_expanded = {} self.currentItemChanged.connect(self.selection_switched) self.itemExpanded.connect(self.tree_item_expanded) @@ -597,6 +598,11 @@ def update_tree(self, items, editor): symbol_end = symbol_range['end']['line'] symbol_repr = SymbolStatus(symbol_name, symbol_kind, (symbol_start, symbol_end), None) + if self.symbol_expanded.get(symbol_name): + symbol_repr.status = True + else: + self.symbol_expanded[symbol_name] = False + symbol_repr.status = False tree_info.append((symbol_start, symbol_end + 1, symbol_repr)) tree = IntervalTree.from_tuples(tree_info) @@ -817,10 +823,12 @@ def selection_switched(self, current_item, previous_item): def tree_item_collapsed(self, item): ref = item.ref ref.status = False + self.symbol_expanded[ref.name] = False def tree_item_expanded(self, item): ref = item.ref ref.status = True + self.symbol_expanded[ref.name] = True def set_editors_to_update(self, language, reset_info=False): """Set editors to update per language."""