From 6d03b309a8e6004699001445c2abec485faeb093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=9C=D0=BE=D0=BA=D1=80=D0=B0=D1=83=D1=81=D0=BE=D0=B2?= Date: Sat, 22 Mar 2025 20:48:24 +0300 Subject: [PATCH 1/2] fix --- LogGrokCore/Controls/TextRender/GlyphLine.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/LogGrokCore/Controls/TextRender/GlyphLine.cs b/LogGrokCore/Controls/TextRender/GlyphLine.cs index 4ccfc30..5f6e9a3 100644 --- a/LogGrokCore/Controls/TextRender/GlyphLine.cs +++ b/LogGrokCore/Controls/TextRender/GlyphLine.cs @@ -37,9 +37,9 @@ public int GetNearestTextPosition(double relativeHorizontalPosition) if (!(relativeHorizontalPosition <= currentOffset)) continue; if (relativeHorizontalPosition + currentCharWidth / 2.0 < currentOffset) return i; - return i + 1; + return i < _advanceWidthForChar.Count - 1 ? i + 1 : i; } - return _advanceWidthForChar.Count; + return _advanceWidthForChar.Count - 1; } public Rect GetTextBounds(Point startPoint, int firstTextSourceCharacterIndex, int textLength) From bc46c9af43d8a388269c8c368713d7e07dbae20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=9C=D0=BE=D0=BA=D1=80=D0=B0=D1=83=D1=81=D0=BE=D0=B2?= Date: Sat, 22 Mar 2025 20:49:59 +0300 Subject: [PATCH 2/2] fix --- LogGrokCore/Controls/TextRender/GlyphLine.cs | 4 ++-- LogGrokCore/Controls/TextRender/TextControl.cs | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/LogGrokCore/Controls/TextRender/GlyphLine.cs b/LogGrokCore/Controls/TextRender/GlyphLine.cs index 5f6e9a3..4ccfc30 100644 --- a/LogGrokCore/Controls/TextRender/GlyphLine.cs +++ b/LogGrokCore/Controls/TextRender/GlyphLine.cs @@ -37,9 +37,9 @@ public int GetNearestTextPosition(double relativeHorizontalPosition) if (!(relativeHorizontalPosition <= currentOffset)) continue; if (relativeHorizontalPosition + currentCharWidth / 2.0 < currentOffset) return i; - return i < _advanceWidthForChar.Count - 1 ? i + 1 : i; + return i + 1; } - return _advanceWidthForChar.Count - 1; + return _advanceWidthForChar.Count; } public Rect GetTextBounds(Point startPoint, int firstTextSourceCharacterIndex, int textLength) diff --git a/LogGrokCore/Controls/TextRender/TextControl.cs b/LogGrokCore/Controls/TextRender/TextControl.cs index a485f86..81b94a5 100644 --- a/LogGrokCore/Controls/TextRender/TextControl.cs +++ b/LogGrokCore/Controls/TextRender/TextControl.cs @@ -323,6 +323,9 @@ private static (int start, int length) GetWordSelectionRange(StringRange lineTex left--; } + if (position >= span.Length) + return (left, span.Length - left); + var right = position; while (right < span.Length - 1 && IsWordPart(span[right + 1])) {