1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-13 13:31:48 +00:00

Some QOL and cleanup to EditorHelp's FindBar

This commit is contained in:
Jayden Sipe
2025-04-30 21:43:05 -04:00
parent 32eafc18b4
commit 201238168c
3 changed files with 45 additions and 24 deletions

View File

@@ -4758,44 +4758,47 @@ EditorHelpHighlighter::~EditorHelpHighlighter() {
FindBar::FindBar() {
search_text = memnew(LineEdit);
search_text->set_accessibility_name(TTRC("Search help"));
add_child(search_text);
search_text->set_keep_editing_on_text_submit(true);
add_child(search_text);
search_text->set_placeholder(TTR("Search"));
search_text->set_tooltip_text(TTR("Search"));
search_text->set_accessibility_name(TTRC("Search Documentation"));
search_text->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
search_text->set_h_size_flags(SIZE_EXPAND_FILL);
search_text->connect(SceneStringName(text_changed), callable_mp(this, &FindBar::_search_text_changed));
search_text->connect(SceneStringName(text_submitted), callable_mp(this, &FindBar::_search_text_submitted));
matches_label = memnew(Label);
matches_label->set_focus_mode(FOCUS_ACCESSIBILITY);
add_child(matches_label);
matches_label->set_focus_mode(FOCUS_ACCESSIBILITY);
matches_label->hide();
find_prev = memnew(Button);
find_prev->set_accessibility_name(TTRC("Find Previous"));
find_prev->set_flat(true);
find_prev->set_disabled(results_count < 1);
find_prev->set_tooltip_text(TTR("Previous Match"));
find_prev->set_accessibility_name(TTRC("Previous Match"));
add_child(find_prev);
find_prev->set_focus_mode(FOCUS_NONE);
find_prev->connect(SceneStringName(pressed), callable_mp(this, &FindBar::search_prev));
find_next = memnew(Button);
find_next->set_accessibility_name(TTRC("Find Next"));
find_next->set_flat(true);
find_next->set_disabled(results_count < 1);
find_next->set_tooltip_text(TTR("Next Match"));
find_next->set_accessibility_name(TTRC("Next Match"));
add_child(find_next);
find_next->set_focus_mode(FOCUS_NONE);
find_next->connect(SceneStringName(pressed), callable_mp(this, &FindBar::search_next));
Control *space = memnew(Control);
add_child(space);
space->set_custom_minimum_size(Size2(4, 0) * EDSCALE);
hide_button = memnew(TextureButton);
add_child(hide_button);
hide_button = memnew(Button);
hide_button->set_flat(true);
hide_button->set_tooltip_text(TTR("Hide"));
hide_button->set_accessibility_name(TTRC("Hide"));
hide_button->set_focus_mode(FOCUS_NONE);
hide_button->set_ignore_texture_size(true);
hide_button->set_stretch_mode(TextureButton::STRETCH_KEEP_CENTERED);
hide_button->connect(SceneStringName(pressed), callable_mp(this, &FindBar::_hide_bar));
hide_button->set_v_size_flags(SIZE_SHRINK_CENTER);
add_child(hide_button);
}
void FindBar::popup_search() {
@@ -4820,10 +4823,7 @@ void FindBar::_notification(int p_what) {
case NOTIFICATION_THEME_CHANGED: {
find_prev->set_button_icon(get_editor_theme_icon(SNAME("MoveUp")));
find_next->set_button_icon(get_editor_theme_icon(SNAME("MoveDown")));
hide_button->set_texture_normal(get_editor_theme_icon(SNAME("Close")));
hide_button->set_texture_hover(get_editor_theme_icon(SNAME("Close")));
hide_button->set_texture_pressed(get_editor_theme_icon(SNAME("Close")));
hide_button->set_custom_minimum_size(hide_button->get_texture_normal()->get_size());
hide_button->set_button_icon(get_editor_theme_icon(SNAME("Close")));
matches_label->add_theme_color_override(SceneStringName(font_color), results_count > 0 ? get_theme_color(SceneStringName(font_color), SNAME("Label")) : get_theme_color(SNAME("error_color"), EditorStringName(Editor)));
} break;
@@ -4848,22 +4848,25 @@ bool FindBar::search_prev() {
bool FindBar::_search(bool p_search_previous) {
String stext = search_text->get_text();
bool keep = prev_search == stext;
bool ret = rich_text_label->search(stext, keep, p_search_previous);
prev_search = stext;
if (!keep) {
results_count_to_current = 0;
}
if (ret) {
_update_results_count();
_update_results_count(p_search_previous);
} else {
results_count = 0;
results_count_to_current = 0;
}
_update_matches_label();
return ret;
}
void FindBar::_update_results_count() {
void FindBar::_update_results_count(bool p_search_previous) {
results_count = 0;
String searched = search_text->get_text();
@@ -4884,6 +4887,13 @@ void FindBar::_update_results_count() {
results_count++;
from_pos = pos + searched.length();
}
results_count_to_current += (p_search_previous) ? -1 : 1;
if (results_count_to_current > results_count) {
results_count_to_current = results_count_to_current - results_count;
} else if (results_count_to_current <= 0) {
results_count_to_current = results_count;
}
}
void FindBar::_update_matches_label() {
@@ -4893,8 +4903,16 @@ void FindBar::_update_matches_label() {
matches_label->show();
matches_label->add_theme_color_override(SceneStringName(font_color), results_count > 0 ? get_theme_color(SceneStringName(font_color), SNAME("Label")) : get_theme_color(SNAME("error_color"), EditorStringName(Editor)));
matches_label->set_text(vformat(results_count == 1 ? TTR("%d match.") : TTR("%d matches."), results_count));
if (results_count == 0) {
matches_label->set_text(TTR("No match"));
} else if (results_count_to_current == 0) {
matches_label->set_text(vformat(TTRN("%d match", "%d matches", results_count), results_count));
} else {
matches_label->set_text(vformat(TTRN("%d of %d match", "%d of %d matches", results_count), results_count_to_current, results_count));
}
}
find_prev->set_disabled(results_count < 1);
find_next->set_disabled(results_count < 1);
}
void FindBar::_hide_bar() {