fix: can not open submodule that has not been initialized

This commit is contained in:
leo 2025-05-14 11:48:44 +08:00
parent 9e91494a20
commit 20a239621b
No known key found for this signature in database
2 changed files with 9 additions and 6 deletions

View file

@ -2330,14 +2330,15 @@ namespace SourceGit.ViewModels
return menu; return menu;
} }
public ContextMenu CreateContextMenuForSubmodule(string submodule) public ContextMenu CreateContextMenuForSubmodule(Models.Submodule submodule)
{ {
var open = new MenuItem(); var open = new MenuItem();
open.Header = App.Text("Submodule.Open"); open.Header = App.Text("Submodule.Open");
open.Icon = App.CreateMenuIcon("Icons.Folder.Open"); open.Icon = App.CreateMenuIcon("Icons.Folder.Open");
open.IsEnabled = submodule.Status != Models.SubmoduleStatus.NotInited;
open.Click += (_, ev) => open.Click += (_, ev) =>
{ {
OpenSubmodule(submodule); OpenSubmodule(submodule.Path);
ev.Handled = true; ev.Handled = true;
}; };
@ -2346,7 +2347,7 @@ namespace SourceGit.ViewModels
copy.Icon = App.CreateMenuIcon("Icons.Copy"); copy.Icon = App.CreateMenuIcon("Icons.Copy");
copy.Click += (_, ev) => copy.Click += (_, ev) =>
{ {
App.CopyText(submodule); App.CopyText(submodule.Path);
ev.Handled = true; ev.Handled = true;
}; };
@ -2356,7 +2357,7 @@ namespace SourceGit.ViewModels
rm.Click += (_, ev) => rm.Click += (_, ev) =>
{ {
if (CanCreatePopup()) if (CanCreatePopup())
ShowPopup(new DeleteSubmodule(this, submodule)); ShowPopup(new DeleteSubmodule(this, submodule.Path));
ev.Handled = true; ev.Handled = true;
}; };

View file

@ -183,7 +183,7 @@ namespace SourceGit.Views
{ {
if (sender is ListBox { SelectedItem: Models.Submodule submodule } grid && DataContext is ViewModels.Repository repo) if (sender is ListBox { SelectedItem: Models.Submodule submodule } grid && DataContext is ViewModels.Repository repo)
{ {
var menu = repo.CreateContextMenuForSubmodule(submodule.Path); var menu = repo.CreateContextMenuForSubmodule(submodule);
menu?.Open(grid); menu?.Open(grid);
} }
@ -192,7 +192,9 @@ namespace SourceGit.Views
private void OnDoubleTappedSubmodule(object sender, TappedEventArgs e) private void OnDoubleTappedSubmodule(object sender, TappedEventArgs e)
{ {
if (sender is ListBox { SelectedItem: Models.Submodule submodule } && DataContext is ViewModels.Repository repo) if (sender is ListBox { SelectedItem: Models.Submodule submodule } &&
submodule.Status != Models.SubmoduleStatus.NotInited &&
DataContext is ViewModels.Repository repo)
{ {
repo.OpenSubmodule(submodule.Path); repo.OpenSubmodule(submodule.Path);
} }