You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
TextEdit: Center search results
This commit is contained in:
@@ -2984,6 +2984,34 @@ void TextEdit::adjust_viewport_to_cursor() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextEdit::center_viewport_to_cursor() {
|
||||||
|
|
||||||
|
if (cursor.line_ofs>cursor.line)
|
||||||
|
cursor.line_ofs=cursor.line;
|
||||||
|
|
||||||
|
int visible_width=cache.size.width-cache.style_normal->get_minimum_size().width-cache.line_number_w-cache.breakpoint_gutter_width;
|
||||||
|
if (v_scroll->is_visible())
|
||||||
|
visible_width-=v_scroll->get_combined_minimum_size().width;
|
||||||
|
visible_width-=20; // give it a little more space
|
||||||
|
|
||||||
|
int visible_rows = get_visible_rows();
|
||||||
|
if (h_scroll->is_visible())
|
||||||
|
visible_rows-=((h_scroll->get_combined_minimum_size().height-1)/get_row_height());
|
||||||
|
|
||||||
|
int max_ofs = text.size()-(scroll_past_end_of_file_enabled?1:visible_rows);
|
||||||
|
cursor.line_ofs=CLAMP(cursor.line-(visible_rows/2),0,max_ofs);
|
||||||
|
|
||||||
|
int cursor_x = get_column_x_offset( cursor.column, text[cursor.line] );
|
||||||
|
|
||||||
|
if (cursor_x>(cursor.x_ofs+visible_width))
|
||||||
|
cursor.x_ofs=cursor_x-visible_width+1;
|
||||||
|
|
||||||
|
if (cursor_x < cursor.x_ofs)
|
||||||
|
cursor.x_ofs=cursor_x;
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void TextEdit::cursor_set_column(int p_col, bool p_adjust_viewport) {
|
void TextEdit::cursor_set_column(int p_col, bool p_adjust_viewport) {
|
||||||
|
|
||||||
if (p_col<0)
|
if (p_col<0)
|
||||||
|
|||||||
@@ -394,6 +394,8 @@ public:
|
|||||||
}
|
}
|
||||||
void set_auto_indent(bool p_auto_indent);
|
void set_auto_indent(bool p_auto_indent);
|
||||||
|
|
||||||
|
void center_viewport_to_cursor();
|
||||||
|
|
||||||
void cursor_set_column(int p_col, bool p_adjust_viewport=true);
|
void cursor_set_column(int p_col, bool p_adjust_viewport=true);
|
||||||
void cursor_set_line(int p_row, bool p_adjust_viewport=true);
|
void cursor_set_line(int p_row, bool p_adjust_viewport=true);
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,9 @@ bool FindReplaceBar::_search(uint32_t p_flags, int p_from_line, int p_from_col)
|
|||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
if (!preserve_cursor) {
|
if (!preserve_cursor) {
|
||||||
text_edit->cursor_set_line(line);
|
text_edit->cursor_set_line(line, false);
|
||||||
text_edit->cursor_set_column(col+text.length());
|
text_edit->cursor_set_column(col+text.length(), false);
|
||||||
|
text_edit->center_viewport_to_cursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
text_edit->set_search_text(text);
|
text_edit->set_search_text(text);
|
||||||
|
|||||||
Reference in New Issue
Block a user