Skip to content

Commit dfc03d7

Browse files
committed
feature: allows to copy branch/tag name from the context menu of selected commit
1 parent 400aaac commit dfc03d7

File tree

1 file changed

+74
-34
lines changed

1 file changed

+74
-34
lines changed

src/ViewModels/Histories.cs

Lines changed: 74 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,8 @@ private void FillCurrentBranchMenu(ContextMenu menu, Models.Branch current)
813813
submenu.Icon = App.CreateMenuIcon("Icons.Branch");
814814
submenu.Header = current.Name;
815815

816+
FillBranchVisibilityMenu(submenu, current);
817+
816818
if (!string.IsNullOrEmpty(current.Upstream))
817819
{
818820
var upstream = current.Upstream.Substring(13);
@@ -852,6 +854,17 @@ private void FillCurrentBranchMenu(ContextMenu menu, Models.Branch current)
852854
e.Handled = true;
853855
};
854856
submenu.Items.Add(push);
857+
858+
var rename = new MenuItem();
859+
rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", current.Name);
860+
rename.Icon = App.CreateMenuIcon("Icons.Rename");
861+
rename.Click += (_, e) =>
862+
{
863+
if (PopupHost.CanCreatePopup())
864+
PopupHost.ShowPopup(new RenameBranch(_repo, current));
865+
e.Handled = true;
866+
};
867+
submenu.Items.Add(rename);
855868
submenu.Items.Add(new MenuItem() { Header = "-" });
856869

857870
var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, current.Name);
@@ -870,18 +883,15 @@ private void FillCurrentBranchMenu(ContextMenu menu, Models.Branch current)
870883
submenu.Items.Add(new MenuItem() { Header = "-" });
871884
}
872885

873-
FillBranchVisibilityMenu(submenu, current);
874-
875-
var rename = new MenuItem();
876-
rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", current.Name);
877-
rename.Icon = App.CreateMenuIcon("Icons.Rename");
878-
rename.Click += (_, e) =>
886+
var copy = new MenuItem();
887+
copy.Header = App.Text("BranchCM.CopyName");
888+
copy.Icon = App.CreateMenuIcon("Icons.Copy");
889+
copy.Click += (_, e) =>
879890
{
880-
if (PopupHost.CanCreatePopup())
881-
PopupHost.ShowPopup(new RenameBranch(_repo, current));
891+
App.CopyText(current.Name);
882892
e.Handled = true;
883893
};
884-
submenu.Items.Add(rename);
894+
submenu.Items.Add(copy);
885895

886896
menu.Items.Add(submenu);
887897
}
@@ -892,6 +902,8 @@ private void FillOtherLocalBranchMenu(ContextMenu menu, Models.Branch branch, Mo
892902
submenu.Icon = App.CreateMenuIcon("Icons.Branch");
893903
submenu.Header = branch.Name;
894904

905+
FillBranchVisibilityMenu(submenu, branch);
906+
895907
var checkout = new MenuItem();
896908
checkout.Header = new Views.NameHighlightedTextBlock("BranchCM.Checkout", branch.Name);
897909
checkout.Icon = App.CreateMenuIcon("Icons.Check");
@@ -913,25 +925,6 @@ private void FillOtherLocalBranchMenu(ContextMenu menu, Models.Branch branch, Mo
913925
e.Handled = true;
914926
};
915927
submenu.Items.Add(merge);
916-
submenu.Items.Add(new MenuItem() { Header = "-" });
917-
918-
var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, branch.Name);
919-
if (detect.IsGitFlowBranch)
920-
{
921-
var finish = new MenuItem();
922-
finish.Header = new Views.NameHighlightedTextBlock("BranchCM.Finish", branch.Name);
923-
finish.Icon = App.CreateMenuIcon("Icons.GitFlow");
924-
finish.Click += (_, e) =>
925-
{
926-
if (PopupHost.CanCreatePopup())
927-
PopupHost.ShowPopup(new GitFlowFinish(_repo, branch, detect.Type, detect.Prefix));
928-
e.Handled = true;
929-
};
930-
submenu.Items.Add(finish);
931-
submenu.Items.Add(new MenuItem() { Header = "-" });
932-
}
933-
934-
FillBranchVisibilityMenu(submenu, branch);
935928

936929
var rename = new MenuItem();
937930
rename.Header = new Views.NameHighlightedTextBlock("BranchCM.Rename", branch.Name);
@@ -954,6 +947,33 @@ private void FillOtherLocalBranchMenu(ContextMenu menu, Models.Branch branch, Mo
954947
e.Handled = true;
955948
};
956949
submenu.Items.Add(delete);
950+
submenu.Items.Add(new MenuItem() { Header = "-" });
951+
952+
var detect = Commands.GitFlow.DetectType(_repo.FullPath, _repo.Branches, branch.Name);
953+
if (detect.IsGitFlowBranch)
954+
{
955+
var finish = new MenuItem();
956+
finish.Header = new Views.NameHighlightedTextBlock("BranchCM.Finish", branch.Name);
957+
finish.Icon = App.CreateMenuIcon("Icons.GitFlow");
958+
finish.Click += (_, e) =>
959+
{
960+
if (PopupHost.CanCreatePopup())
961+
PopupHost.ShowPopup(new GitFlowFinish(_repo, branch, detect.Type, detect.Prefix));
962+
e.Handled = true;
963+
};
964+
submenu.Items.Add(finish);
965+
submenu.Items.Add(new MenuItem() { Header = "-" });
966+
}
967+
968+
var copy = new MenuItem();
969+
copy.Header = App.Text("BranchCM.CopyName");
970+
copy.Icon = App.CreateMenuIcon("Icons.Copy");
971+
copy.Click += (_, e) =>
972+
{
973+
App.CopyText(branch.Name);
974+
e.Handled = true;
975+
};
976+
submenu.Items.Add(copy);
957977

958978
menu.Items.Add(submenu);
959979
}
@@ -966,6 +986,8 @@ private void FillRemoteBranchMenu(ContextMenu menu, Models.Branch branch, Models
966986
submenu.Icon = App.CreateMenuIcon("Icons.Branch");
967987
submenu.Header = name;
968988

989+
FillBranchVisibilityMenu(submenu, branch);
990+
969991
var checkout = new MenuItem();
970992
checkout.Header = new Views.NameHighlightedTextBlock("BranchCM.Checkout", name);
971993
checkout.Icon = App.CreateMenuIcon("Icons.Check");
@@ -988,9 +1010,6 @@ private void FillRemoteBranchMenu(ContextMenu menu, Models.Branch branch, Models
9881010
};
9891011

9901012
submenu.Items.Add(merge);
991-
submenu.Items.Add(new MenuItem() { Header = "-" });
992-
993-
FillBranchVisibilityMenu(submenu, branch);
9941013

9951014
var delete = new MenuItem();
9961015
delete.Header = new Views.NameHighlightedTextBlock("BranchCM.Delete", name);
@@ -1002,6 +1021,17 @@ private void FillRemoteBranchMenu(ContextMenu menu, Models.Branch branch, Models
10021021
e.Handled = true;
10031022
};
10041023
submenu.Items.Add(delete);
1024+
submenu.Items.Add(new MenuItem() { Header = "-" });
1025+
1026+
var copy = new MenuItem();
1027+
copy.Header = App.Text("BranchCM.CopyName");
1028+
copy.Icon = App.CreateMenuIcon("Icons.Copy");
1029+
copy.Click += (_, e) =>
1030+
{
1031+
App.CopyText(name);
1032+
e.Handled = true;
1033+
};
1034+
submenu.Items.Add(copy);
10051035

10061036
menu.Items.Add(submenu);
10071037
}
@@ -1013,6 +1043,8 @@ private void FillTagMenu(ContextMenu menu, Models.Tag tag, Models.Branch current
10131043
submenu.Icon = App.CreateMenuIcon("Icons.Tag");
10141044
submenu.MinWidth = 200;
10151045

1046+
FillTagVisibilityMenu(submenu, tag);
1047+
10161048
var push = new MenuItem();
10171049
push.Header = new Views.NameHighlightedTextBlock("TagCM.Push", tag.Name);
10181050
push.Icon = App.CreateMenuIcon("Icons.Push");
@@ -1036,9 +1068,6 @@ private void FillTagMenu(ContextMenu menu, Models.Tag tag, Models.Branch current
10361068
e.Handled = true;
10371069
};
10381070
submenu.Items.Add(merge);
1039-
submenu.Items.Add(new MenuItem() { Header = "-" });
1040-
1041-
FillTagVisibilityMenu(submenu, tag);
10421071

10431072
var delete = new MenuItem();
10441073
delete.Header = new Views.NameHighlightedTextBlock("TagCM.Delete", tag.Name);
@@ -1050,6 +1079,17 @@ private void FillTagMenu(ContextMenu menu, Models.Tag tag, Models.Branch current
10501079
e.Handled = true;
10511080
};
10521081
submenu.Items.Add(delete);
1082+
submenu.Items.Add(new MenuItem() { Header = "-" });
1083+
1084+
var copy = new MenuItem();
1085+
copy.Header = App.Text("TagCM.Copy");
1086+
copy.Icon = App.CreateMenuIcon("Icons.Copy");
1087+
copy.Click += (_, e) =>
1088+
{
1089+
App.CopyText(tag.Name);
1090+
e.Handled = true;
1091+
};
1092+
submenu.Items.Add(copy);
10531093

10541094
menu.Items.Add(submenu);
10551095
}

0 commit comments

Comments
 (0)