diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 7f76dc2a..b97bbf5d 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -1365,12 +1365,6 @@ namespace SourceGit.ViewModels ShowPopup(new DeleteBranch(this, branch)); } - public void DeleteRemote(Models.Remote remote) - { - if (CanCreatePopup()) - ShowPopup(new DeleteRemote(this, remote)); - } - public void DeleteMultipleBranches(List branches, bool isLocal) { if (CanCreatePopup()) @@ -1407,6 +1401,12 @@ namespace SourceGit.ViewModels ShowPopup(new AddRemote(this)); } + public void DeleteRemote(Models.Remote remote) + { + if (CanCreatePopup()) + ShowPopup(new DeleteRemote(this, remote)); + } + public void AddSubmodule() { if (CanCreatePopup()) diff --git a/src/ViewModels/StashesPage.cs b/src/ViewModels/StashesPage.cs index 6cdf9f45..f039d54e 100644 --- a/src/ViewModels/StashesPage.cs +++ b/src/ViewModels/StashesPage.cs @@ -295,6 +295,12 @@ namespace SourceGit.ViewModels SearchFilter = string.Empty; } + public void Drop(Models.Stash stash) + { + if (stash != null && _repo.CanCreatePopup()) + _repo.ShowPopup(new DropStash(_repo, stash)); + } + private void RefreshVisible() { if (string.IsNullOrEmpty(_searchFilter)) @@ -314,12 +320,6 @@ namespace SourceGit.ViewModels } } - public void Drop(Models.Stash stash) - { - if (_repo.CanCreatePopup()) - _repo.ShowPopup(new DropStash(_repo, stash)); - } - private Repository _repo = null; private List _stashes = []; private List _visibleStashes = []; diff --git a/src/Views/BranchTree.axaml b/src/Views/BranchTree.axaml index 151b41bf..1783ffe0 100644 --- a/src/Views/BranchTree.axaml +++ b/src/Views/BranchTree.axaml @@ -13,7 +13,7 @@ ItemsSource="{Binding #ThisControl.Rows}" SelectionMode="Multiple" SelectionChanged="OnNodesSelectionChanged" - KeyDown="OnListKeyDown" + KeyDown="OnTreeKeyDown" ContextRequested="OnTreeContextRequested"> diff --git a/src/Views/BranchTree.axaml.cs b/src/Views/BranchTree.axaml.cs index 45cc8608..0579c0da 100644 --- a/src/Views/BranchTree.axaml.cs +++ b/src/Views/BranchTree.axaml.cs @@ -450,7 +450,7 @@ namespace SourceGit.Views } } - private void OnListKeyDown(object _, KeyEventArgs e) + private void OnTreeKeyDown(object _, KeyEventArgs e) { if (e.Key is not (Key.Delete or Key.Back)) return; @@ -463,7 +463,7 @@ namespace SourceGit.Views if (selected == null || selected.Count == 0) return; - if (selected is [ViewModels.BranchTreeNode { Backend: Models.Remote remote }]) + if (selected.Count == 1 && selected[0] is ViewModels.BranchTreeNode { Backend: Models.Remote remote }) { repo.DeleteRemote(remote); e.Handled = true; diff --git a/src/Views/StashesPage.axaml b/src/Views/StashesPage.axaml index 34913973..30c6e183 100644 --- a/src/Views/StashesPage.axaml +++ b/src/Views/StashesPage.axaml @@ -65,7 +65,7 @@ ItemsSource="{Binding VisibleStashes}" SelectedItem="{Binding SelectedStash, Mode=TwoWay}" SelectionMode="Single" - KeyDown="OnStashKeyDown" + KeyDown="OnStashListKeyDown" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"> diff --git a/src/Views/StashesPage.axaml.cs b/src/Views/StashesPage.axaml.cs index f95d0b98..d152a12f 100644 --- a/src/Views/StashesPage.axaml.cs +++ b/src/Views/StashesPage.axaml.cs @@ -24,17 +24,7 @@ namespace SourceGit.Views layout.StashesLeftWidth = new GridLength(maxLeft, GridUnitType.Pixel); } - private void OnStashContextRequested(object sender, ContextRequestedEventArgs e) - { - if (DataContext is ViewModels.StashesPage vm && sender is Border border) - { - var menu = vm.MakeContextMenu(border.DataContext as Models.Stash); - menu?.Open(border); - } - e.Handled = true; - } - - private void OnStashKeyDown(object sender, KeyEventArgs e) + private void OnStashListKeyDown(object sender, KeyEventArgs e) { if (e.Key is not (Key.Delete or Key.Back)) return; @@ -42,10 +32,17 @@ namespace SourceGit.Views if (DataContext is not ViewModels.StashesPage vm) return; - if (sender is not ListBox { SelectedValue: Models.Stash stash }) - return; + vm.Drop(vm.SelectedStash); + e.Handled = true; + } - vm.Drop(stash); + private void OnStashContextRequested(object sender, ContextRequestedEventArgs e) + { + if (DataContext is ViewModels.StashesPage vm && sender is Border border) + { + var menu = vm.MakeContextMenu(border.DataContext as Models.Stash); + menu?.Open(border); + } e.Handled = true; } diff --git a/src/Views/TagsView.axaml.cs b/src/Views/TagsView.axaml.cs index 6bd312f3..390063ee 100644 --- a/src/Views/TagsView.axaml.cs +++ b/src/Views/TagsView.axaml.cs @@ -217,13 +217,15 @@ namespace SourceGit.Views private void OnKeyDown(object sender, KeyEventArgs e) { - if (sender is not ListBox { SelectedValue: Models.Tag tag }) - return; - if (DataContext is not ViewModels.Repository repo) return; - - repo.DeleteTag(tag); + + var selected = (sender as ListBox)?.SelectedItem; + if (selected is ViewModels.TagTreeNode { Tag: { } tagInNode }) + repo.DeleteTag(tagInNode); + else if (selected is Models.Tag tag) + repo.DeleteTag(tag); + e.Handled = true; } } diff --git a/src/Views/ViewLogs.axaml.cs b/src/Views/ViewLogs.axaml.cs index 0ed24449..b9c71882 100644 --- a/src/Views/ViewLogs.axaml.cs +++ b/src/Views/ViewLogs.axaml.cs @@ -45,11 +45,10 @@ namespace SourceGit.Views { if (e.Key is not (Key.Delete or Key.Back)) return; - - if (DataContext is not ViewModels.ViewLogs vm) - return; - vm.Logs.Remove(vm.SelectedLog); + if (DataContext is ViewModels.ViewLogs { SelectedLog: { } log } vm) + vm.Logs.Remove(log); + e.Handled = true; } } diff --git a/src/Views/Welcome.axaml b/src/Views/Welcome.axaml index 1e300653..d249e5ef 100644 --- a/src/Views/Welcome.axaml +++ b/src/Views/Welcome.axaml @@ -61,8 +61,7 @@ ItemsSource="{Binding Rows}" SelectionMode="Single" Loaded="SetupTreeViewDragAndDrop" - LostFocus="OnTreeViewLostFocus" - KeyDown="OnTreeViewKeyDown"> + LostFocus="OnTreeViewLostFocus">