Skip to content

Commit 44103f9

Browse files
love-lingerasliturk
andcommitted
feature: add keybindings F2 to rename selected local branch (#2294)
Co-authored-by: Hüseyin Aslıtürk <huseyin@asliturk.com> Signed-off-by: leo <longshuang@msn.cn>
1 parent 0b09bc5 commit 44103f9

1 file changed

Lines changed: 46 additions & 26 deletions

File tree

src/Views/BranchTree.axaml.cs

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,7 @@ private void OnTreeContextRequested(object _1, ContextRequestedEventArgs _2)
557557
var deleteMulti = new MenuItem();
558558
deleteMulti.Header = App.Text("BranchCM.DeleteMultiBranches", branches.Count);
559559
deleteMulti.Icon = this.CreateMenuIcon("Icons.Clear");
560+
deleteMulti.Tag = "Delete/Back";
560561
deleteMulti.Click += (_, ev) =>
561562
{
562563
repo.DeleteMultipleBranches(branches, branches[0].IsLocal);
@@ -579,43 +580,59 @@ private void OnTreeKeyDown(object _, KeyEventArgs e)
579580
{
580581
RaiseEvent(new RoutedEventArgs(SearchRequestedEvent));
581582
e.Handled = true;
582-
return;
583583
}
584+
else if ((e.Key == Key.Delete || e.Key == Key.Back) && e.KeyModifiers == KeyModifiers.None)
585+
{
586+
var repo = DataContext as ViewModels.Repository;
587+
if (repo?.Settings == null)
588+
return;
584589

585-
if (e.Key is not (Key.Delete or Key.Back))
586-
return;
590+
var selected = BranchesPresenter.SelectedItems;
591+
if (selected == null || selected.Count == 0)
592+
return;
587593

588-
var repo = DataContext as ViewModels.Repository;
589-
if (repo?.Settings == null)
590-
return;
594+
if (selected.Count == 1 && selected[0] is ViewModels.BranchTreeNode { Backend: Models.Remote remote })
595+
{
596+
repo.DeleteRemote(remote);
597+
e.Handled = true;
598+
return;
599+
}
591600

592-
var selected = BranchesPresenter.SelectedItems;
593-
if (selected == null || selected.Count == 0)
594-
return;
601+
var branches = new List<Models.Branch>();
602+
foreach (var item in selected)
603+
{
604+
if (item is ViewModels.BranchTreeNode node)
605+
CollectBranchesInNode(branches, node);
606+
}
607+
608+
if (branches.Find(x => x.IsCurrent) != null)
609+
return;
610+
611+
if (branches.Count == 1)
612+
repo.DeleteBranch(branches[0]);
613+
else
614+
repo.DeleteMultipleBranches(branches, branches[0].IsLocal);
595615

596-
if (selected.Count == 1 && selected[0] is ViewModels.BranchTreeNode { Backend: Models.Remote remote })
597-
{
598-
repo.DeleteRemote(remote);
599616
e.Handled = true;
600-
return;
601617
}
602-
603-
var branches = new List<Models.Branch>();
604-
foreach (var item in selected)
618+
else if (e.Key == Key.F2 && e.KeyModifiers == KeyModifiers.None)
605619
{
606-
if (item is ViewModels.BranchTreeNode node)
607-
CollectBranchesInNode(branches, node);
608-
}
620+
var repo = DataContext as ViewModels.Repository;
621+
if (repo?.Settings == null)
622+
return;
609623

610-
if (branches.Find(x => x.IsCurrent) != null)
611-
return;
624+
var selected = BranchesPresenter.SelectedItems;
625+
if (selected == null || selected.Count != 1)
626+
return;
612627

613-
if (branches.Count == 1)
614-
repo.DeleteBranch(branches[0]);
615-
else
616-
repo.DeleteMultipleBranches(branches, branches[0].IsLocal);
628+
if (selected[0] is ViewModels.BranchTreeNode { Backend: Models.Branch { IsLocal: true } branch })
629+
{
630+
if (repo.CanCreatePopup())
631+
repo.ShowPopup(new ViewModels.RenameBranch(repo, branch));
617632

618-
e.Handled = true;
633+
e.Handled = true;
634+
}
635+
}
619636
}
620637

621638
private async void OnDoubleTappedBranchNode(object sender, TappedEventArgs _)
@@ -928,6 +945,7 @@ private ContextMenu CreateContextMenuForLocalBranch(ViewModels.Repository repo,
928945
var rename = new MenuItem();
929946
rename.Header = App.Text("BranchCM.Rename", branch.Name);
930947
rename.Icon = this.CreateMenuIcon("Icons.Rename");
948+
rename.Tag = "F2";
931949
rename.Click += (_, e) =>
932950
{
933951
if (repo.CanCreatePopup())
@@ -938,6 +956,7 @@ private ContextMenu CreateContextMenuForLocalBranch(ViewModels.Repository repo,
938956
var delete = new MenuItem();
939957
delete.Header = App.Text("BranchCM.Delete", branch.Name);
940958
delete.Icon = this.CreateMenuIcon("Icons.Clear");
959+
delete.Tag = "Delete/Back";
941960
delete.IsEnabled = !branch.IsCurrent;
942961
delete.Click += (_, e) =>
943962
{
@@ -1242,6 +1261,7 @@ public ContextMenu CreateContextMenuForRemoteBranch(ViewModels.Repository repo,
12421261
var delete = new MenuItem();
12431262
delete.Header = App.Text("BranchCM.Delete", name);
12441263
delete.Icon = this.CreateMenuIcon("Icons.Clear");
1264+
delete.Tag = "Delete/Back";
12451265
delete.Click += (_, e) =>
12461266
{
12471267
if (repo.CanCreatePopup())

0 commit comments

Comments
 (0)