diff options
author | Ian <ianb96@gmail.com> | 2018-01-18 09:52:51 -0500 |
---|---|---|
committer | Ian <ianb96@gmail.com> | 2018-01-18 12:18:06 -0500 |
commit | 1b837125ce5aa67ba69763da5a340f8e51a98a8c (patch) | |
tree | 71b953155da1e45ddf649135caaca65866653bbc | |
parent | 7b4e45b794d33ad5277d6d5f99efc7b8cc1fd2dc (diff) |
TextEdit fix get_mouse after many folds
-rw-r--r-- | scene/gui/text_edit.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 4d87a6b3ba..179ea5336b 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1775,15 +1775,16 @@ void TextEdit::indent_left() { void TextEdit::_get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) const { float rows = p_mouse.y; + rows -= cache.style_normal->get_margin(MARGIN_TOP); + rows += (CLAMP(v_scroll->get_value() - get_line_scroll_pos(true), 0, 1) * get_row_height()); rows /= get_row_height(); - rows += v_scroll->get_value(); - int row = Math::floor(rows); + int first_vis_line = CLAMP(cursor.line_ofs, 0, text.size() - 1); + int row = first_vis_line + Math::floor(rows); if (is_hiding_enabled()) { // row will be offset by the hidden rows - int lsp = get_line_scroll_pos(true); - int f_ofs = num_lines_from(CLAMP(cursor.line_ofs, 0, text.size() - 1), MIN(row + 1 - cursor.line_ofs, text.size() - cursor.line_ofs)) - 1; - row = cursor.line_ofs + f_ofs; + int f_ofs = num_lines_from(first_vis_line, rows + 1) - 1; + row = first_vis_line + f_ofs; row = CLAMP(row, 0, text.size() - num_lines_from(text.size() - 1, -1)); } |