From 6f1411d8b7f354ec2ef4d40753aa584702e41080 Mon Sep 17 00:00:00 2001 From: Tom Rijnsburger Date: Mon, 27 May 2024 16:25:19 +0200 Subject: [PATCH] Fix rounding error when getting VisualLine --- ICSharpCode.AvalonEdit/Rendering/TextView.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ICSharpCode.AvalonEdit/Rendering/TextView.cs b/ICSharpCode.AvalonEdit/Rendering/TextView.cs index 9e1aa1f8..0b5d0f5f 100644 --- a/ICSharpCode.AvalonEdit/Rendering/TextView.cs +++ b/ICSharpCode.AvalonEdit/Rendering/TextView.cs @@ -1743,10 +1743,12 @@ public VisualLine GetVisualLineFromVisualTop(double visualTop) // TODO: change this method to also work outside the visible range - // required to make GetPosition work as expected! EnsureVisualLines(); + + double epsilon = 1e-12; // Small margin to prevent rounding problems, Double.Epsilon is not a large enough margin. foreach (VisualLine vl in this.VisualLines) { - if (visualTop < vl.VisualTop) + if (visualTop < vl.VisualTop - epsilon) continue; - if (visualTop < vl.VisualTop + vl.Height) + if (visualTop < vl.VisualTop + vl.Height - epsilon) return vl; } return null;