Skip to content

Commit 44dff5d

Browse files
committed
code_review: PR #1541
Signed-off-by: leo <[email protected]>
1 parent 4ef3ed8 commit 44dff5d

File tree

1 file changed

+75
-54
lines changed

1 file changed

+75
-54
lines changed

src/ViewModels/WorkingCopy.cs

Lines changed: 75 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -965,29 +965,45 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
965965
menu.Items.Add(new MenuItem() { Header = "-" });
966966
}
967967

968-
var history = new MenuItem();
969-
history.Header = App.Text(hasSelectedFolder ? "DirHistories" : "FileHistory");
970-
history.Icon = App.CreateMenuIcon("Icons.Histories");
971-
history.Click += (_, e) =>
968+
if (hasSelectedFolder)
972969
{
973-
if (hasSelectedFolder)
970+
var history = new MenuItem();
971+
history.Header = App.Text("DirHistories");
972+
history.Icon = App.CreateMenuIcon("Icons.Histories");
973+
history.Click += (_, e) =>
974+
{
974975
App.ShowWindow(new DirHistories(_repo, selectedSingleFolder));
975-
else
976+
e.Handled = true;
977+
};
978+
979+
menu.Items.Add(history);
980+
menu.Items.Add(new MenuItem() { Header = "-" });
981+
}
982+
else if (change.WorkTree is not (Models.ChangeState.Untracked or Models.ChangeState.Added))
983+
{
984+
var history = new MenuItem();
985+
history.Header = App.Text("FileHistory");
986+
history.Icon = App.CreateMenuIcon("Icons.Histories");
987+
history.Click += (_, e) =>
988+
{
976989
App.ShowWindow(new FileHistories(_repo, change.Path));
990+
e.Handled = true;
991+
};
977992

978-
e.Handled = true;
979-
};
993+
var blame = new MenuItem();
994+
blame.Header = App.Text("Blame") + " (HEAD-only)";
995+
blame.Icon = App.CreateMenuIcon("Icons.Blame");
996+
blame.Click += async (_, ev) =>
997+
{
998+
var commit = await new Commands.QuerySingleCommit(_repo.FullPath, "HEAD").GetResultAsync();
999+
App.ShowWindow(new Blame(_repo.FullPath, change.Path, commit));
1000+
ev.Handled = true;
1001+
};
9801002

981-
var blame = new MenuItem();
982-
blame.Header = App.Text("Blame");
983-
blame.Icon = App.CreateMenuIcon("Icons.Blame");
984-
blame.IsEnabled = change.Index != Models.ChangeState.Deleted;
985-
blame.Click += async (_, ev) =>
986-
{
987-
var commit = await new Commands.QuerySingleCommit(_repo.FullPath, "HEAD").GetResultAsync();
988-
App.ShowWindow(new Blame(_repo.FullPath, change.Path, commit));
989-
ev.Handled = true;
990-
};
1003+
menu.Items.Add(history);
1004+
menu.Items.Add(blame);
1005+
menu.Items.Add(new MenuItem() { Header = "-" });
1006+
}
9911007

9921008
var copy = new MenuItem();
9931009
copy.Header = App.Text("CopyPath");
@@ -1007,12 +1023,6 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
10071023
e.Handled = true;
10081024
};
10091025

1010-
menu.Items.Add(history);
1011-
if (hasSelectedFolder == false)
1012-
{
1013-
menu.Items.Add(blame);
1014-
}
1015-
menu.Items.Add(new MenuItem() { Header = "-" });
10161026
menu.Items.Add(copy);
10171027
menu.Items.Add(copyFullPath);
10181028
}
@@ -1174,9 +1184,6 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
11741184
addToIgnore.Icon = App.CreateMenuIcon("Icons.GitIgnore");
11751185
addToIgnore.Items.Add(ignoreFolder);
11761186

1177-
menu.Items.Add(new MenuItem() { Header = "-" });
1178-
menu.Items.Add(addToIgnore);
1179-
11801187
var history = new MenuItem();
11811188
history.Header = App.Text("DirHistories");
11821189
history.Icon = App.CreateMenuIcon("Icons.Histories");
@@ -1185,8 +1192,6 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
11851192
App.ShowWindow(new DirHistories(_repo, selectedSingleFolder));
11861193
e.Handled = true;
11871194
};
1188-
menu.Items.Add(new MenuItem() { Header = "-" });
1189-
menu.Items.Add(history);
11901195

11911196
var copy = new MenuItem();
11921197
copy.Header = App.Text("CopyPath");
@@ -1205,6 +1210,11 @@ public ContextMenu CreateContextMenuForUnstagedChanges(string selectedSingleFold
12051210
await App.CopyTextAsync(Native.OS.GetAbsPath(_repo.FullPath, selectedSingleFolder));
12061211
e.Handled = true;
12071212
};
1213+
1214+
menu.Items.Add(new MenuItem() { Header = "-" });
1215+
menu.Items.Add(addToIgnore);
1216+
menu.Items.Add(new MenuItem() { Header = "-" });
1217+
menu.Items.Add(history);
12081218
menu.Items.Add(new MenuItem() { Header = "-" });
12091219
menu.Items.Add(copy);
12101220
menu.Items.Add(copyFullPath);
@@ -1445,28 +1455,45 @@ public ContextMenu CreateContextMenuForStagedChanges(string selectedSingleFolder
14451455
menu.Items.Add(new MenuItem() { Header = "-" });
14461456
}
14471457

1448-
var history = new MenuItem();
1449-
history.Header = App.Text(hasSelectedFolder ? "DirHistories" : "FileHistory");
1450-
history.Icon = App.CreateMenuIcon("Icons.Histories");
1451-
history.Click += (_, e) =>
1458+
if (hasSelectedFolder)
14521459
{
1453-
if (hasSelectedFolder)
1460+
var history = new MenuItem();
1461+
history.Header = App.Text("DirHistories");
1462+
history.Icon = App.CreateMenuIcon("Icons.Histories");
1463+
history.Click += (_, e) =>
1464+
{
14541465
App.ShowWindow(new DirHistories(_repo, selectedSingleFolder));
1455-
else
1456-
App.ShowWindow(new FileHistories(_repo, change.Path));
1457-
e.Handled = true;
1458-
};
1466+
e.Handled = true;
1467+
};
14591468

1460-
var blame = new MenuItem();
1461-
blame.Header = App.Text("Blame");
1462-
blame.Icon = App.CreateMenuIcon("Icons.Blame");
1463-
blame.IsEnabled = change.Index != Models.ChangeState.Deleted;
1464-
blame.Click += async (_, ev) =>
1469+
menu.Items.Add(history);
1470+
menu.Items.Add(new MenuItem() { Header = "-" });
1471+
}
1472+
else if (change.Index is not (Models.ChangeState.Added or Models.ChangeState.Renamed))
14651473
{
1466-
var commit = await new Commands.QuerySingleCommit(_repo.FullPath, "HEAD").GetResultAsync();
1467-
App.ShowWindow(new Blame(_repo.FullPath, change.Path, commit));
1468-
ev.Handled = true;
1469-
};
1474+
var history = new MenuItem();
1475+
history.Header = App.Text("FileHistory");
1476+
history.Icon = App.CreateMenuIcon("Icons.Histories");
1477+
history.Click += (_, e) =>
1478+
{
1479+
App.ShowWindow(new FileHistories(_repo, change.Path));
1480+
e.Handled = true;
1481+
};
1482+
1483+
var blame = new MenuItem();
1484+
blame.Header = App.Text("Blame") + " (HEAD-only)";
1485+
blame.Icon = App.CreateMenuIcon("Icons.Blame");
1486+
blame.Click += async (_, e) =>
1487+
{
1488+
var commit = await new Commands.QuerySingleCommit(_repo.FullPath, "HEAD").GetResultAsync();
1489+
App.ShowWindow(new Blame(_repo.FullPath, change.Path, commit));
1490+
e.Handled = true;
1491+
};
1492+
1493+
menu.Items.Add(history);
1494+
menu.Items.Add(blame);
1495+
menu.Items.Add(new MenuItem() { Header = "-" });
1496+
}
14701497

14711498
var copyPath = new MenuItem();
14721499
copyPath.Header = App.Text("CopyPath");
@@ -1487,12 +1514,6 @@ public ContextMenu CreateContextMenuForStagedChanges(string selectedSingleFolder
14871514
e.Handled = true;
14881515
};
14891516

1490-
menu.Items.Add(history);
1491-
if (hasSelectedFolder == false)
1492-
{
1493-
menu.Items.Add(blame);
1494-
}
1495-
menu.Items.Add(new MenuItem() { Header = "-" });
14961517
menu.Items.Add(copyPath);
14971518
menu.Items.Add(copyFullPath);
14981519
}
@@ -1574,7 +1595,7 @@ public ContextMenu CreateContextMenuForStagedChanges(string selectedSingleFolder
15741595
if (hasSelectedFolder)
15751596
{
15761597
var history = new MenuItem();
1577-
history.Header = App.Text(hasSelectedFolder ? "DirHistories" : "FileHistory");
1598+
history.Header = App.Text("DirHistories");
15781599
history.Icon = App.CreateMenuIcon("Icons.Histories");
15791600
history.Click += (_, e) =>
15801601
{

0 commit comments

Comments
 (0)