From 2960236090efb4d5d26159b836fd2f458fd05ece Mon Sep 17 00:00:00 2001 From: JC-Chung <52159296+JC-Chung@users.noreply.github.com> Date: Wed, 1 Jul 2026 12:08:47 +0800 Subject: [PATCH] fix: hide file manager and terminal options for invalid repositories --- src/ViewModels/RepositoryNode.cs | 4 +-- src/Views/RepositoryToolbar.axaml.cs | 4 +++ src/Views/Welcome.axaml.cs | 45 +++++++++++++++------------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/ViewModels/RepositoryNode.cs b/src/ViewModels/RepositoryNode.cs index 491b53346..a8969123c 100644 --- a/src/ViewModels/RepositoryNode.cs +++ b/src/ViewModels/RepositoryNode.cs @@ -125,14 +125,14 @@ public void Move() public void OpenInFileManager() { - if (!IsRepository) + if (!IsRepository || IsInvalid) return; Native.OS.OpenInFileManager(_id); } public void OpenTerminal() { - if (!IsRepository) + if (!IsRepository || IsInvalid) return; Native.OS.OpenTerminal(_id); } diff --git a/src/Views/RepositoryToolbar.axaml.cs b/src/Views/RepositoryToolbar.axaml.cs index fd37a6f26..e8cab4257 100644 --- a/src/Views/RepositoryToolbar.axaml.cs +++ b/src/Views/RepositoryToolbar.axaml.cs @@ -21,6 +21,10 @@ private void OpenWithExternalTools(object sender, RoutedEventArgs ev) if (sender is Button button && DataContext is ViewModels.Repository repo) { var fullpath = repo.FullPath; + + if (!System.IO.Directory.Exists(fullpath)) + return; + var menu = new ContextMenu(); menu.Placement = PlacementMode.BottomEdgeAlignedLeft; diff --git a/src/Views/Welcome.axaml.cs b/src/Views/Welcome.axaml.cs index 830b881c2..f0f54d21e 100644 --- a/src/Views/Welcome.axaml.cs +++ b/src/Views/Welcome.axaml.cs @@ -174,29 +174,32 @@ private void OnTreeNodeContextRequested(object sender, ContextRequestedEventArgs e.Handled = true; }; - var explore = new MenuItem(); - explore.Header = App.Text("Repository.Explore"); - explore.Icon = this.CreateMenuIcon("Icons.Explore"); - explore.Click += (_, e) => - { - node.OpenInFileManager(); - e.Handled = true; - }; - - var terminal = new MenuItem(); - terminal.Header = App.Text("Repository.Terminal"); - terminal.Icon = this.CreateMenuIcon("Icons.Terminal"); - terminal.Click += (_, e) => - { - node.OpenTerminal(); - e.Handled = true; - }; - menu.Items.Add(open); menu.Items.Add(new MenuItem() { Header = "-" }); - menu.Items.Add(explore); - menu.Items.Add(terminal); - menu.Items.Add(new MenuItem() { Header = "-" }); + + if (!node.IsInvalid) + { + var explore = new MenuItem(); + explore.Header = App.Text("Repository.Explore"); + explore.Icon = this.CreateMenuIcon("Icons.Explore"); + explore.Click += (_, e) => + { + node.OpenInFileManager(); + e.Handled = true; + }; + + var terminal = new MenuItem(); + terminal.Header = App.Text("Repository.Terminal"); + terminal.Icon = this.CreateMenuIcon("Icons.Terminal"); + terminal.Click += (_, e) => + { + node.OpenTerminal(); + e.Handled = true; + }; + menu.Items.Add(explore); + menu.Items.Add(terminal); + menu.Items.Add(new MenuItem() { Header = "-" }); + } } else {