summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-06-18 10:02:05 +0200
committerGitHub <noreply@github.com>2020-06-18 10:02:05 +0200
commite54031cf1aa36022241fecca58258611f3319ef6 (patch)
treee61a48a46f93daa447ac3605a97b5ded055c7a6c /editor
parenta8fce16b2f675825b0f82889e2d5aca0c59b205c (diff)
parenta86521d0bdedc988d7c5a2892dc4d5cf7f01c793 (diff)
Merge pull request #39614 from hinlopen/fix-search-highlight
Search result highlights follow font size
Diffstat (limited to 'editor')
-rw-r--r--editor/find_in_files.cpp22
-rw-r--r--editor/find_in_files.h3
2 files changed, 12 insertions, 13 deletions
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index 1bc0de1ab0..53c52b94cc 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -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;
diff --git a/editor/find_in_files.h b/editor/find_in_files.h
index 41adb156b6..9815296be8 100644
--- a/editor/find_in_files.h
+++ b/editor/find_in_files.h
@@ -191,8 +191,7 @@ private:
int line_number;
int begin;
int end;
- float draw_begin;
- float draw_width;
+ int begin_trimmed;
};
void apply_replaces_in_file(String fpath, const Vector<Result> &locations, String new_text);