Skip to content

Commit b8158ad

Browse files
committed
Fix find in files auto search when changing theme
1 parent e6aa06d commit b8158ad

File tree

2 files changed

+34
-9
lines changed

2 files changed

+34
-9
lines changed

editor/script/find_in_files.cpp

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -864,15 +864,7 @@ void FindInFilesPanel::stop_search() {
864864
void FindInFilesPanel::_notification(int p_what) {
865865
switch (p_what) {
866866
case NOTIFICATION_THEME_CHANGED: {
867-
_search_text_label->add_theme_font_override(SceneStringName(font), get_theme_font(SNAME("source"), EditorStringName(EditorFonts)));
868-
_search_text_label->add_theme_font_size_override(SceneStringName(font_size), get_theme_font_size(SNAME("source_size"), EditorStringName(EditorFonts)));
869-
_results_display->add_theme_font_override(SceneStringName(font), get_theme_font(SNAME("source"), EditorStringName(EditorFonts)));
870-
_results_display->add_theme_font_size_override(SceneStringName(font_size), get_theme_font_size(SNAME("source_size"), EditorStringName(EditorFonts)));
871-
872-
// Rebuild search tree.
873-
if (!_finder->get_search_text().is_empty()) {
874-
start_search();
875-
}
867+
_on_theme_changed();
876868
} break;
877869
case NOTIFICATION_TRANSLATION_CHANGED: {
878870
update_matches_text();
@@ -964,6 +956,38 @@ void FindInFilesPanel::_on_result_found(const String &fpath, int line_number, in
964956
}
965957
}
966958

959+
void FindInFilesPanel::_on_theme_changed() {
960+
_results_display->add_theme_font_override(SceneStringName(font), get_theme_font(SNAME("source"), EditorStringName(EditorFonts)));
961+
_results_display->add_theme_font_size_override(SceneStringName(font_size), get_theme_font_size(SNAME("source_size"), EditorStringName(EditorFonts)));
962+
963+
Color file_item_color = _results_display->get_theme_color(SceneStringName(font_color)) * Color(1, 1, 1, 0.67);
964+
Ref<Texture2D> remove_texture = get_editor_theme_icon(SNAME("Close"));
965+
Ref<Texture2D> replace_texture = get_editor_theme_icon(SNAME("ReplaceText"));
966+
967+
TreeItem *file_item = _results_display->get_root()->get_first_child();
968+
while (file_item) {
969+
file_item->set_custom_color(0, file_item_color);
970+
if (_with_replace) {
971+
file_item->set_button(0, file_item->get_button_by_id(0, FIND_BUTTON_REPLACE), replace_texture);
972+
}
973+
file_item->set_button(0, file_item->get_button_by_id(0, FIND_BUTTON_REMOVE), remove_texture);
974+
975+
TreeItem *result_item = file_item->get_first_child();
976+
while (result_item) {
977+
if (_with_replace) {
978+
result_item->set_button(1, result_item->get_button_by_id(1, FIND_BUTTON_REPLACE), replace_texture);
979+
result_item->set_button(1, result_item->get_button_by_id(1, FIND_BUTTON_REMOVE), remove_texture);
980+
} else {
981+
result_item->set_button(0, result_item->get_button_by_id(0, FIND_BUTTON_REMOVE), remove_texture);
982+
}
983+
984+
result_item = result_item->get_next();
985+
}
986+
987+
file_item = file_item->get_next();
988+
}
989+
}
990+
967991
void FindInFilesPanel::draw_result_text(Object *item_obj, Rect2 rect) {
968992
TreeItem *item = Object::cast_to<TreeItem>(item_obj);
969993
if (!item) {

editor/script/find_in_files.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ class FindInFilesPanel : public MarginContainer {
195195
private:
196196
void _on_button_clicked(TreeItem *p_item, int p_column, int p_id, int p_mouse_button_index);
197197
void _on_result_found(const String &fpath, int line_number, int begin, int end, String text);
198+
void _on_theme_changed();
198199
void _on_finished();
199200
void _on_refresh_button_clicked();
200201
void _on_cancel_button_clicked();

0 commit comments

Comments
 (0)