Added scroll lines, issue 4243

(cherry picked from commit 54244e0e1d)
This commit is contained in:
Paulb23 2016-04-27 18:32:14 +01:00 committed by Rémi Verschelde
parent 084ce221d7
commit 517518ae9a
2 changed files with 55 additions and 2 deletions

View File

@ -2021,7 +2021,17 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
scancode_handled=false; scancode_handled=false;
break; break;
} }
#ifdef APPLE_STYLE_KEYS #ifndef APPLE_STYLE_KEYS
if (k.mod.command) {
_scroll_lines_up();
break;
}
#else
if (k.mod.command && k.mod.alt) {
_scroll_lines_up();
break;
}
if (k.mod.command) if (k.mod.command)
cursor_set_line(0); cursor_set_line(0);
else else
@ -2048,7 +2058,17 @@ void TextEdit::_input_event(const InputEvent& p_input_event) {
scancode_handled=false; scancode_handled=false;
break; break;
} }
#ifdef APPLE_STYLE_KEYS #ifndef APPLE_STYLE_KEYS
if (k.mod.command) {
_scroll_lines_down();
break;
}
#else
if (k.mod.command && k.mod.alt) {
_scroll_lines_down();
break;
}
if (k.mod.command) if (k.mod.command)
cursor_set_line(text.size()-1); cursor_set_line(text.size()-1);
else else
@ -2462,6 +2482,36 @@ void TextEdit::_post_shift_selection() {
selection.selecting_text=true; selection.selecting_text=true;
} }
void TextEdit::_scroll_lines_up() {
// adjust the vertical scroll
if (get_v_scroll() > 0) {
set_v_scroll(get_v_scroll() - 1);
}
// adjust the cursor
if (cursor_get_line() >= (get_visible_rows() + get_v_scroll()) && !selection.active) {
cursor_set_line((get_visible_rows() + get_v_scroll()) - 1, false);
}
}
void TextEdit::_scroll_lines_down() {
// calculate the maximum vertical scroll position
int max_v_scroll = get_line_count() - 1;
if (!scroll_past_end_of_file_enabled) {
max_v_scroll -= get_visible_rows() - 1;
}
// adjust the vertical scroll
if (get_v_scroll() < max_v_scroll) {
set_v_scroll(get_v_scroll() + 1);
}
// adjust the cursor
if ((cursor_get_line()) <= get_v_scroll() - 1 && !selection.active) {
cursor_set_line(get_v_scroll(), false);
}
}
/**** TEXT EDIT CORE API ****/ /**** TEXT EDIT CORE API ****/
void TextEdit::_base_insert_text(int p_line, int p_char,const String& p_text,int &r_end_line,int &r_end_column) { void TextEdit::_base_insert_text(int p_line, int p_char,const String& p_text,int &r_end_line,int &r_end_column) {

View File

@ -258,6 +258,9 @@ class TextEdit : public Control {
void _pre_shift_selection(); void _pre_shift_selection();
void _post_shift_selection(); void _post_shift_selection();
void _scroll_lines_up();
void _scroll_lines_down();
// void mouse_motion(const Point& p_pos, const Point& p_rel, int p_button_mask); // void mouse_motion(const Point& p_pos, const Point& p_rel, int p_button_mask);
Size2 get_minimum_size(); Size2 get_minimum_size();