aboutsummaryrefslogtreecommitdiff
path: root/src/platform/graphics/cairo/PangoTextLayout.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-16 14:26:12 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-16 14:26:12 +0800
commit9feb6a1611a86b90a02b5bfe2b1d4c8189650491 (patch)
tree96a66d98a6354f11432246405d0dfaf421d5f08f /src/platform/graphics/cairo/PangoTextLayout.cpp
parent07d662aafc25b145eb20e4123ebc82b5736cdeb7 (diff)
downloadcru-9feb6a1611a86b90a02b5bfe2b1d4c8189650491.tar.gz
cru-9feb6a1611a86b90a02b5bfe2b1d4c8189650491.tar.bz2
cru-9feb6a1611a86b90a02b5bfe2b1d4c8189650491.zip
Fix text edit hittest trailing bug.
Diffstat (limited to 'src/platform/graphics/cairo/PangoTextLayout.cpp')
-rw-r--r--src/platform/graphics/cairo/PangoTextLayout.cpp14
1 files changed, 13 insertions, 1 deletions
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