diff --git a/biscuit/core/components/utils/tree.py b/biscuit/core/components/utils/tree.py index 75a582ed..7b6aecc7 100644 --- a/biscuit/core/components/utils/tree.py +++ b/biscuit/core/components/utils/tree.py @@ -53,12 +53,15 @@ def collapse_all(self) -> None: def delete(self, *a, **kw) -> None: self.tree.delete(*a, *kw) - def focus(self) -> str: - return self.tree.focus() or '' + def focus(self, *args) -> str: + return self.tree.focus(*args) or '' def get_children(self, *a, **kw) -> str: return self.tree.get_children(*a, **kw) + def identify_row(self, y) -> str: + return self.tree.identify_row(y) + def insert(self, *args, **kwargs): return self.tree.insert(*args, **kwargs) @@ -82,6 +85,9 @@ def parent_selected(self): def selected_parent_path(self): return self.item_fullpath(self.parent_selected()) + + def selection_set(self, *args, **kwargs): + return self.tree.selection_set(*args, **kwargs) def selected_path(self): return self.item_fullpath(self.focus()) diff --git a/biscuit/core/components/views/sidebar/explorer/directorytree.py b/biscuit/core/components/views/sidebar/explorer/directorytree.py index cf256410..b0f1483a 100644 --- a/biscuit/core/components/views/sidebar/explorer/directorytree.py +++ b/biscuit/core/components/views/sidebar/explorer/directorytree.py @@ -43,12 +43,18 @@ def __init__(self, master, startpath=None, observe_changes=False, itembar=True, self.loading = False self.ctxmenu = ExplorerContextMenu(self, "ExplorerContextMenu") - self.tree.bind('', self.ctxmenu.show) + self.tree.bind('', self.right_click) if startpath: self.change_path(startpath) else: self.tree.insert('', 0, text='You have not yet opened a folder.') + + def right_click(self, e: tk.Event) -> None: + if item := self.tree.identify_row(e.y): + self.tree.selection_set(item) + self.tree.focus(item) + self.ctxmenu.show(e) # IMPORTANT def change_path(self, path: str) -> None: