fix: sync-scroll in side-by-side text diff view does not work while draging mouse out of the scrollbar

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo
2025-08-15 10:50:05 +08:00
parent 4315328512
commit 8fdacd1f82

View File

@@ -1495,9 +1495,15 @@ namespace SourceGit.Views
private void OnTextViewScrollChanged(object sender, ScrollChangedEventArgs e)
{
if (IsPointerOver && DataContext is ViewModels.TwoSideTextDiff diff)
if (_scrollViewer == null || DataContext is not ViewModels.TwoSideTextDiff diff)
return;
if (diff.SyncScrollOffset.NearlyEquals(_scrollViewer.Offset))
return;
if (IsPointerOver || !e.OffsetDelta.NearlyEquals(Vector.Zero))
{
diff.SyncScrollOffset = _scrollViewer?.Offset ?? Vector.Zero;
diff.SyncScrollOffset = _scrollViewer.Offset;
if (!TextArea.TextView.IsPointerOver)
TrySetChunk(null);
@@ -1507,7 +1513,7 @@ namespace SourceGit.Views
private void DirectSyncScrollOffset()
{
if (_scrollViewer is not null && DataContext is ViewModels.TwoSideTextDiff diff)
diff.SyncScrollOffset = _scrollViewer?.Offset ?? Vector.Zero;
diff.SyncScrollOffset = _scrollViewer.Offset;
}
private ScrollViewer _scrollViewer = null;