Skip to content

Commit 8fdacd1

Browse files
committed
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>
1 parent 4315328 commit 8fdacd1

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/Views/TextDiffView.axaml.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,9 +1495,15 @@ protected override void OnDataContextChanged(EventArgs e)
14951495

14961496
private void OnTextViewScrollChanged(object sender, ScrollChangedEventArgs e)
14971497
{
1498-
if (IsPointerOver && DataContext is ViewModels.TwoSideTextDiff diff)
1498+
if (_scrollViewer == null || DataContext is not ViewModels.TwoSideTextDiff diff)
1499+
return;
1500+
1501+
if (diff.SyncScrollOffset.NearlyEquals(_scrollViewer.Offset))
1502+
return;
1503+
1504+
if (IsPointerOver || !e.OffsetDelta.NearlyEquals(Vector.Zero))
14991505
{
1500-
diff.SyncScrollOffset = _scrollViewer?.Offset ?? Vector.Zero;
1506+
diff.SyncScrollOffset = _scrollViewer.Offset;
15011507

15021508
if (!TextArea.TextView.IsPointerOver)
15031509
TrySetChunk(null);
@@ -1507,7 +1513,7 @@ private void OnTextViewScrollChanged(object sender, ScrollChangedEventArgs e)
15071513
private void DirectSyncScrollOffset()
15081514
{
15091515
if (_scrollViewer is not null && DataContext is ViewModels.TwoSideTextDiff diff)
1510-
diff.SyncScrollOffset = _scrollViewer?.Offset ?? Vector.Zero;
1516+
diff.SyncScrollOffset = _scrollViewer.Offset;
15111517
}
15121518

15131519
private ScrollViewer _scrollViewer = null;

0 commit comments

Comments
 (0)