diff options
Diffstat (limited to 'editor/find_in_files.cpp')
-rw-r--r-- | editor/find_in_files.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp index 1bc0de1ab0..c2ccbdb08c 100644 --- a/editor/find_in_files.cpp +++ b/editor/find_in_files.cpp @@ -54,7 +54,7 @@ inline void pop_back(T &container) { } // TODO Copied from TextEdit private, would be nice to extract it in a single place -static bool is_text_char(CharType c) { +static bool is_text_char(char32_t c) { return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '_'; } @@ -483,7 +483,7 @@ void FindInFilesDialog::_notification(int p_what) { } void FindInFilesDialog::_on_folder_button_pressed() { - _folder_dialog->popup_centered_ratio(); + _folder_dialog->popup_file_dialog(); } void FindInFilesDialog::custom_action(const String &p_action) { @@ -719,22 +719,20 @@ void FindInFilesPanel::_on_result_found(String fpath, int line_number, int begin // Do this first because it resets properties of the cell... item->set_cell_mode(text_index, TreeItem::CELL_MODE_CUSTOM); - String item_text = vformat("%3s: %s", line_number, text.replace("\t", " ")); + // Trim result item line + int old_text_size = text.size(); + text = text.strip_edges(true, false); + int chars_removed = old_text_size - text.size(); + String start = vformat("%3s: ", line_number); - item->set_text(text_index, item_text); + item->set_text(text_index, start + text); item->set_custom_draw(text_index, this, "_draw_result_text"); - Ref<Font> font = _results_display->get_theme_font("font"); - - float raw_text_width = font->get_string_size(text).x; - float item_text_width = font->get_string_size(item_text).x; - Result r; r.line_number = line_number; r.begin = begin; r.end = end; - r.draw_begin = (item_text_width - raw_text_width) + font->get_string_size(text.left(r.begin)).x; - r.draw_width = font->get_string_size(text.substr(r.begin, r.end - r.begin)).x; + r.begin_trimmed = begin - chars_removed + start.size() - 1; _result_items[item] = r; if (_with_replace) { @@ -755,10 +753,12 @@ void FindInFilesPanel::draw_result_text(Object *item_obj, Rect2 rect) { return; } Result r = E->value(); + String item_text = item->get_text(_with_replace ? 1 : 0); + Ref<Font> font = _results_display->get_theme_font("font"); Rect2 match_rect = rect; - match_rect.position.x += r.draw_begin; - match_rect.size.x = r.draw_width; + match_rect.position.x += font->get_string_size(item_text.left(r.begin_trimmed)).x; + match_rect.size.x = font->get_string_size(_search_text_label->get_text()).x; match_rect.position.y += 1 * EDSCALE; match_rect.size.y -= 2 * EDSCALE; @@ -854,7 +854,7 @@ public: String get_line(FileAccess *f) { _line_buffer.clear(); - CharType c = f->get_8(); + char32_t c = f->get_8(); while (!f->eof_reached()) { if (c == '\n') { |