TextEdit: Properly scroll vertically when selecting text with mouse drag
This commit is contained in:
parent
51fa997cb5
commit
b70e2b754d
2 changed files with 14 additions and 19 deletions
|
@ -1091,16 +1091,16 @@ void TextEdit::backspace_at_cursor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TextEdit::_get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const {
|
void TextEdit::_get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const {
|
||||||
|
|
||||||
int row=p_mouse.y;
|
float rows=p_mouse.y;
|
||||||
row-=cache.style_normal->get_margin(MARGIN_TOP);
|
rows-=cache.style_normal->get_margin(MARGIN_TOP);
|
||||||
row/=get_row_height();
|
rows/=get_row_height();
|
||||||
|
int row=cursor.line_ofs+rows;
|
||||||
if (row<0 || row>=get_visible_rows())
|
|
||||||
return false;
|
if (row<0)
|
||||||
|
row=0;
|
||||||
row+=cursor.line_ofs;
|
|
||||||
int col=0;
|
int col=0;
|
||||||
|
|
||||||
if (row>=text.size()) {
|
if (row>=text.size()) {
|
||||||
|
@ -1116,7 +1116,6 @@ bool TextEdit::_get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) co
|
||||||
|
|
||||||
r_row=row;
|
r_row=row;
|
||||||
r_col=col;
|
r_col=col;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextEdit::_input_event(const InputEvent& p_input_event) {
|
void TextEdit::_input_event(const InputEvent& p_input_event) {
|
||||||
|
@ -1174,8 +1173,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
|
||||||
if (mb.button_index==BUTTON_LEFT) {
|
if (mb.button_index==BUTTON_LEFT) {
|
||||||
|
|
||||||
int row,col;
|
int row,col;
|
||||||
if (!_get_mouse_pos(Point2i(mb.x,mb.y), row,col))
|
_get_mouse_pos(Point2i(mb.x,mb.y), row,col);
|
||||||
return;
|
|
||||||
|
|
||||||
int prev_col=cursor.column;
|
int prev_col=cursor.column;
|
||||||
int prev_line=cursor.line;
|
int prev_line=cursor.line;
|
||||||
|
@ -1304,8 +1302,7 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
|
||||||
if (mm.button_mask&BUTTON_MASK_LEFT) {
|
if (mm.button_mask&BUTTON_MASK_LEFT) {
|
||||||
|
|
||||||
int row,col;
|
int row,col;
|
||||||
if (!_get_mouse_pos(Point2i(mm.x,mm.y), row,col))
|
_get_mouse_pos(Point2i(mm.x,mm.y), row,col);
|
||||||
return;
|
|
||||||
|
|
||||||
if (selection.selecting_mode!=Selection::MODE_NONE) {
|
if (selection.selecting_mode!=Selection::MODE_NONE) {
|
||||||
|
|
||||||
|
@ -3505,10 +3502,8 @@ String TextEdit::get_tooltip(const Point2& p_pos) const {
|
||||||
if (!tooltip_obj)
|
if (!tooltip_obj)
|
||||||
return Control::get_tooltip(p_pos);
|
return Control::get_tooltip(p_pos);
|
||||||
int row,col;
|
int row,col;
|
||||||
if (!_get_mouse_pos(p_pos, row,col)) {
|
_get_mouse_pos(p_pos, row, col);
|
||||||
return Control::get_tooltip(p_pos);
|
|
||||||
}
|
|
||||||
|
|
||||||
String s = text[row];
|
String s = text[row];
|
||||||
if (s.length()==0)
|
if (s.length()==0)
|
||||||
return Control::get_tooltip(p_pos);
|
return Control::get_tooltip(p_pos);
|
||||||
|
|
|
@ -270,7 +270,7 @@ class TextEdit : public Control {
|
||||||
void _confirm_completion();
|
void _confirm_completion();
|
||||||
void _update_completion_candidates();
|
void _update_completion_candidates();
|
||||||
|
|
||||||
bool _get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const;
|
void _get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue