diff --git a/src/Views/DiffView.axaml b/src/Views/DiffView.axaml index 85da69d1..559ad14d 100644 --- a/src/Views/DiffView.axaml +++ b/src/Views/DiffView.axaml @@ -122,7 +122,7 @@ diff --git a/src/Views/DiffView.axaml.cs b/src/Views/DiffView.axaml.cs index 9dd27f24..54f9617a 100644 --- a/src/Views/DiffView.axaml.cs +++ b/src/Views/DiffView.axaml.cs @@ -1,3 +1,4 @@ +using Avalonia; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.VisualTree; @@ -40,5 +41,24 @@ namespace SourceGit.Views if (sender is TextDiffView textDiff) BlockNavigationIndicator.Text = textDiff.BlockNavigation?.Indicator ?? string.Empty; } + + private void OnUseFullTextDiffClicked(object sender, RoutedEventArgs e) + { + var textDiffView = this.FindDescendantOfType(); + if (textDiffView == null) + return; + + var presenter = textDiffView.FindDescendantOfType(); + if (presenter == null) + return; + + if (presenter.DataContext is Models.TextDiff combined) + combined.ScrollOffset = Vector.Zero; + else if (presenter.DataContext is ViewModels.TwoSideTextDiff twoSides) + twoSides.File = string.Empty; // Just to reset `SyncScrollOffset` without affect UI refresh. + + (DataContext as ViewModels.DiffContext)?.ToggleFullTextDiff(); + e.Handled = true; + } } }