From 9feb6a1611a86b90a02b5bfe2b1d4c8189650491 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sun, 16 Nov 2025 14:26:12 +0800 Subject: Fix text edit hittest trailing bug. --- src/platform/graphics/cairo/PangoTextLayout.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/platform/graphics/cairo/PangoTextLayout.cpp') diff --git a/src/platform/graphics/cairo/PangoTextLayout.cpp b/src/platform/graphics/cairo/PangoTextLayout.cpp index 9d301031..25d9f85d 100644 --- a/src/platform/graphics/cairo/PangoTextLayout.cpp +++ b/src/platform/graphics/cairo/PangoTextLayout.cpp @@ -160,7 +160,19 @@ TextHitTestResult PangoTextLayout::HitTest(const Point& point) { auto inside_text = pango_layout_xy_to_index(pango_layout_, point.x * PANGO_SCALE, point.y * PANGO_SCALE, &index, &trailing); - return TextHitTestResult{index, trailing != 0, inside_text != 0}; + + TextHitTestResult result{index, trailing != 0, inside_text != 0}; + + if (result.trailing) { + Index position_with_trailing; + string::Utf8NextCodePoint(text_.data(), text_.size(), result.position, + &position_with_trailing); + result.position_with_trailing = position_with_trailing; + } else { + result.position_with_trailing = result.position; + } + + return result; } } // namespace cru::platform::graphics::cairo -- cgit v1.2.3