diff --git a/src/Resources/Locales/en_US.axaml b/src/Resources/Locales/en_US.axaml
index cee9ad2c..2f7c5c43 100644
--- a/src/Resources/Locales/en_US.axaml
+++ b/src/Resources/Locales/en_US.axaml
@@ -617,6 +617,7 @@
Message
SHA
Current Branch
+ Show Submodules as Tree
Show Tags as Tree
SKIP
Statistics
diff --git a/src/Resources/Locales/zh_CN.axaml b/src/Resources/Locales/zh_CN.axaml
index 3b0237da..56227607 100644
--- a/src/Resources/Locales/zh_CN.axaml
+++ b/src/Resources/Locales/zh_CN.axaml
@@ -621,6 +621,7 @@
提交信息
提交指纹
仅在当前分支中查找
+ 以树型结构展示
以树型结构展示
跳过此提交
提交统计
diff --git a/src/Resources/Locales/zh_TW.axaml b/src/Resources/Locales/zh_TW.axaml
index 6b3ce423..204e1cf7 100644
--- a/src/Resources/Locales/zh_TW.axaml
+++ b/src/Resources/Locales/zh_TW.axaml
@@ -621,6 +621,7 @@
提交訊息
提交編號
僅搜尋目前分支
+ 以樹型結構展示
以樹型結構展示
跳過此提交
提交統計
diff --git a/src/Resources/Styles.axaml b/src/Resources/Styles.axaml
index 882a14f4..923ef22b 100644
--- a/src/Resources/Styles.axaml
+++ b/src/Resources/Styles.axaml
@@ -1235,7 +1235,7 @@
-
+
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Views/SubmodulesView.axaml.cs b/src/Views/SubmodulesView.axaml.cs
index 116cbe9f..81ccdc5d 100644
--- a/src/Views/SubmodulesView.axaml.cs
+++ b/src/Views/SubmodulesView.axaml.cs
@@ -89,15 +89,6 @@ namespace SourceGit.Views
public partial class SubmodulesView : UserControl
{
- public static readonly StyledProperty SubmodulesProperty =
- AvaloniaProperty.Register(nameof(Submodules));
-
- public ViewModels.SubmoduleCollection Submodules
- {
- get => GetValue(SubmodulesProperty);
- set => SetValue(SubmodulesProperty, value);
- }
-
public static readonly RoutedEvent RowsChangedEvent =
RoutedEvent.Register(nameof(RowsChanged), RoutingStrategies.Tunnel | RoutingStrategies.Bubble);
@@ -120,11 +111,10 @@ namespace SourceGit.Views
public void ToggleNodeIsExpanded(ViewModels.SubmoduleTreeNode node)
{
- var submodules = Submodules;
- if (submodules != null)
+ if (Content is ViewModels.SubmoduleCollectionAsTree tree)
{
- submodules.ToggleExpand(node);
- Rows = submodules.Rows.Count;
+ tree.ToggleExpand(node);
+ Rows = tree.Rows.Count;
RaiseEvent(new RoutedEventArgs(RowsChangedEvent));
}
}
@@ -133,9 +123,15 @@ namespace SourceGit.Views
{
base.OnPropertyChanged(change);
- if (change.Property == SubmodulesProperty)
+ if (change.Property == ContentProperty)
{
- Rows = Submodules?.Rows.Count ?? 0;
+ if (Content is ViewModels.SubmoduleCollectionAsTree tree)
+ Rows = tree.Rows.Count;
+ else if (Content is ViewModels.SubmoduleCollectionAsList list)
+ Rows = list.Submodules.Count;
+ else
+ Rows = 0;
+
RaiseEvent(new RoutedEventArgs(RowsChangedEvent));
}
else if (change.Property == IsVisibleProperty)
@@ -144,28 +140,40 @@ namespace SourceGit.Views
}
}
- private void OnDoubleTappedNode(object sender, TappedEventArgs e)
+ private void OnItemDoubleTapped(object sender, TappedEventArgs e)
{
- if (sender is Control { DataContext: ViewModels.SubmoduleTreeNode node } &&
- DataContext is ViewModels.Repository repo)
+ if (sender is Control control && DataContext is ViewModels.Repository repo)
{
- if (node.IsFolder)
- ToggleNodeIsExpanded(node);
- else if (node.Module.Status != Models.SubmoduleStatus.NotInited)
- repo.OpenSubmodule(node.Module.Path);
+ if (control.DataContext is ViewModels.SubmoduleTreeNode node)
+ {
+ if (node.IsFolder)
+ ToggleNodeIsExpanded(node);
+ else if (node.Module.Status != Models.SubmoduleStatus.NotInited)
+ repo.OpenSubmodule(node.Module.Path);
+ }
+ else if (control.DataContext is Models.Submodule m && m.Status != Models.SubmoduleStatus.NotInited)
+ {
+ repo.OpenSubmodule(m.Path);
+ }
}
e.Handled = true;
}
- private void OnRowContextRequested(object sender, ContextRequestedEventArgs e)
+ private void OnItemContextRequested(object sender, ContextRequestedEventArgs e)
{
- if (sender is Control { DataContext: ViewModels.SubmoduleTreeNode node } control &&
- node.Module != null &&
- DataContext is ViewModels.Repository repo)
+ if (sender is Control control && DataContext is ViewModels.Repository repo)
{
- var menu = repo.CreateContextMenuForSubmodule(node.Module);
- menu?.Open(control);
+ if (control.DataContext is ViewModels.SubmoduleTreeNode node && node.Module != null)
+ {
+ var menu = repo.CreateContextMenuForSubmodule(node.Module);
+ menu?.Open(control);
+ }
+ else if (control.DataContext is Models.Submodule m)
+ {
+ var menu = repo.CreateContextMenuForSubmodule(m);
+ menu?.Open(control);
+ }
}
e.Handled = true;