From 8378104ce2c3dcea7c449f71d3db90acf10206da Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Thu, 4 Jul 2024 15:40:06 +0800 Subject: [PATCH] Make the side panel scroll as a whole, which works much better on small screens when repo has lots of tags and branches --- src/Resources/Styles.axaml | 4 +- src/Views/Repository.axaml | 719 ++++++++++++++++------------------ src/Views/Repository.axaml.cs | 44 +-- 3 files changed, 358 insertions(+), 409 deletions(-) diff --git a/src/Resources/Styles.axaml b/src/Resources/Styles.axaml index 460a6ce5..c7910679 100644 --- a/src/Resources/Styles.axaml +++ b/src/Resources/Styles.axaml @@ -1205,8 +1205,8 @@ - - + + - + @@ -231,396 +231,357 @@ - - - - - + + - - - - - - - - - - - - - - - - - - + + + + + - + + + + + + + + + + + + + + + + + + - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + - - - - - - - - + - - - - - + + + + + - - - - - - + + + + + + + + + + - - - + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/src/Views/Repository.axaml.cs b/src/Views/Repository.axaml.cs index 43e9a4a6..3e149cc3 100644 --- a/src/Views/Repository.axaml.cs +++ b/src/Views/Repository.axaml.cs @@ -255,14 +255,14 @@ namespace SourceGit.Views } } - private void OnTagDataGridSelectionChanged(object sender, SelectionChangedEventArgs e) + private void OnTagSelectionChanged(object sender, SelectionChangedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null) + if (sender is TreeView tree && tree.SelectedItem != null) { localBranchTree.UnselectAll(); remoteBranchTree.UnselectAll(); - var tag = datagrid.SelectedItem as Models.Tag; + var tag = tree.SelectedItem as Models.Tag; if (DataContext is ViewModels.Repository repo) repo.NavigateToCommit(tag.SHA); } @@ -270,28 +270,16 @@ namespace SourceGit.Views private void OnTagContextRequested(object sender, ContextRequestedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null && DataContext is ViewModels.Repository repo) + if (sender is TreeView tree && tree.SelectedItem != null && DataContext is ViewModels.Repository repo) { - var tag = datagrid.SelectedItem as Models.Tag; + var tag = tree.SelectedItem as Models.Tag; var menu = repo.CreateContextMenuForTag(tag); - datagrid.OpenContextMenu(menu); + tree.OpenContextMenu(menu); } e.Handled = true; } - private void OnTagPropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e) - { - if (e.Property == DataGrid.ItemsSourceProperty && DataContext is ViewModels.Repository vm) - { - if (vm.VisibleTags == null) - return; - - var desiredHeight = tagsList.RowHeight * vm.VisibleTags.Count; - tagsList.Height = Math.Min(200, desiredHeight); - } - } - private void OnToggleFilter(object sender, RoutedEventArgs e) { if (sender is ToggleButton toggle) @@ -318,11 +306,11 @@ namespace SourceGit.Views private void OnSubmoduleContextRequested(object sender, ContextRequestedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null && DataContext is ViewModels.Repository repo) + if (sender is TreeView tree && tree.SelectedItem != null && DataContext is ViewModels.Repository repo) { - var submodule = datagrid.SelectedItem as string; + var submodule = tree.SelectedItem as string; var menu = repo.CreateContextMenuForSubmodule(submodule); - datagrid.OpenContextMenu(menu); + tree.OpenContextMenu(menu); } e.Handled = true; @@ -330,9 +318,9 @@ namespace SourceGit.Views private void OnDoubleTappedSubmodule(object sender, TappedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null && DataContext is ViewModels.Repository repo) + if (sender is TreeView tree && tree.SelectedItem != null && DataContext is ViewModels.Repository repo) { - var submodule = datagrid.SelectedItem as string; + var submodule = tree.SelectedItem as string; (DataContext as ViewModels.Repository).OpenSubmodule(submodule); } @@ -341,11 +329,11 @@ namespace SourceGit.Views private void OnWorktreeContextRequested(object sender, ContextRequestedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null && DataContext is ViewModels.Repository repo) + if (sender is TreeView tree && tree.SelectedItem != null && DataContext is ViewModels.Repository repo) { - var worktree = datagrid.SelectedItem as Models.Worktree; + var worktree = tree.SelectedItem as Models.Worktree; var menu = repo.CreateContextMenuForWorktree(worktree); - datagrid.OpenContextMenu(menu); + tree.OpenContextMenu(menu); } e.Handled = true; @@ -353,9 +341,9 @@ namespace SourceGit.Views private void OnDoubleTappedWorktree(object sender, TappedEventArgs e) { - if (sender is DataGrid datagrid && datagrid.SelectedItem != null && DataContext is ViewModels.Repository repo) + if (sender is TreeView tree && tree.SelectedItem != null && DataContext is ViewModels.Repository repo) { - var worktree = datagrid.SelectedItem as Models.Worktree; + var worktree = tree.SelectedItem as Models.Worktree; (DataContext as ViewModels.Repository).OpenWorktree(worktree); }