diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-07-16 08:20:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 08:20:58 +0200 |
commit | a239727cfd58d1fd0ea8f0227263d610641a967b (patch) | |
tree | b8140497d5af641b02b73b72949fcca54503ac54 | |
parent | 6b9d502195fd6d7f9f2700f85f803d3876081b89 (diff) | |
parent | d91346f72090f124dc3473295014be8a59d12e3d (diff) |
Merge pull request #30604 from YeldhamDev/line_align_caret_fix
Fix incorrect caret position when clicking a 'LineEdit' with a non-left alignment
-rw-r--r-- | scene/gui/line_edit.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index 3dcbf64e7c..d5347edb87 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -999,6 +999,8 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { Ref<StyleBox> style = get_stylebox("normal"); int pixel_ofs = 0; Size2 size = get_size(); + bool display_clear_icon = !text.empty() && is_editable() && clear_button_enabled; + int r_icon_width = Control::get_icon("clear")->get_width(); switch (align) { @@ -1013,10 +1015,16 @@ void LineEdit::set_cursor_at_pixel_pos(int p_x) { pixel_ofs = int(style->get_offset().x); else pixel_ofs = int(size.width - (cached_width)) / 2; + + if (display_clear_icon) + pixel_ofs -= int(r_icon_width / 2 + style->get_margin(MARGIN_RIGHT)); } break; case ALIGN_RIGHT: { pixel_ofs = int(size.width - style->get_margin(MARGIN_RIGHT) - (cached_width)); + + if (display_clear_icon) + pixel_ofs -= int(r_icon_width + style->get_margin(MARGIN_RIGHT)); } break; } |