diff options
Diffstat (limited to 'scene/gui/line_edit.cpp')
-rw-r--r-- | scene/gui/line_edit.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 42ee6cb0bc..956e93466c 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -79,7 +79,7 @@ void LineEdit::_move_caret_left(bool p_select, bool p_move_by_word) { if (caret_mid_grapheme_enabled) { set_caret_column(get_caret_column() - 1); } else { - set_caret_column(TS->shaped_text_prev_grapheme_pos(text_rid, get_caret_column())); + set_caret_column(TS->shaped_text_prev_character_pos(text_rid, get_caret_column())); } } @@ -112,7 +112,7 @@ void LineEdit::_move_caret_right(bool p_select, bool p_move_by_word) { if (caret_mid_grapheme_enabled) { set_caret_column(get_caret_column() + 1); } else { - set_caret_column(TS->shaped_text_next_grapheme_pos(text_rid, get_caret_column())); + set_caret_column(TS->shaped_text_next_character_pos(text_rid, get_caret_column())); } } @@ -211,7 +211,7 @@ void LineEdit::_delete(bool p_word, bool p_all_to_right) { delete_char(); } else { int cc = caret_column; - set_caret_column(TS->shaped_text_next_grapheme_pos(text_rid, caret_column)); + set_caret_column(TS->shaped_text_next_character_pos(text_rid, caret_column)); delete_text(cc, caret_column); } } @@ -1326,6 +1326,9 @@ void LineEdit::set_caret_at_pixel_pos(int p_x) { } int ofs = ceil(TS->shaped_text_hit_test_position(text_rid, p_x - x_ofs - scroll_offset)); + if (!caret_mid_grapheme_enabled) { + ofs = TS->shaped_text_closest_character_pos(text_rid, ofs); + } set_caret_column(ofs); } |