mirror of
https://github.com/godotengine/godot.git
synced 2024-12-15 10:12:40 +08:00
Merge pull request #47632 from Calinou/asset-search-autofocus
Automatically focus the Search field when displaying asset library
This commit is contained in:
commit
789646e201
@ -557,8 +557,15 @@ void EditorAssetLibrary::_notification(int p_what) {
|
||||
error_label->raise();
|
||||
} break;
|
||||
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||
if (is_visible() && initial_loading) {
|
||||
_repository_changed(0); // Update when shown for the first time.
|
||||
if (is_visible()) {
|
||||
// Focus the search box automatically when switching to the Templates tab (in the Project Manager)
|
||||
// or switching to the AssetLib tab (in the editor).
|
||||
// The Project Manager's project filter box is automatically focused in the project manager code.
|
||||
filter->grab_focus();
|
||||
|
||||
if (initial_loading) {
|
||||
_repository_changed(0); // Update when shown for the first time.
|
||||
}
|
||||
}
|
||||
} break;
|
||||
case NOTIFICATION_PROCESS: {
|
||||
@ -1332,6 +1339,11 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) {
|
||||
library_main->add_theme_constant_override("separation", 10 * EDSCALE);
|
||||
|
||||
filter = memnew(LineEdit);
|
||||
if (templates_only) {
|
||||
filter->set_placeholder(TTR("Search templates, projects, and demos"));
|
||||
} else {
|
||||
filter->set_placeholder(TTR("Search assets (excluding templates, projects, and demos)"));
|
||||
}
|
||||
search_hb->add_child(filter);
|
||||
filter->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
filter->connect("text_changed", callable_mp(this, &EditorAssetLibrary::_search_text_changed));
|
||||
|
@ -2331,6 +2331,17 @@ void ProjectManager::_on_order_option_changed(int p_idx) {
|
||||
}
|
||||
}
|
||||
|
||||
void ProjectManager::_on_tab_changed(int p_tab) {
|
||||
if (p_tab == 0) { // Projects
|
||||
// Automatically grab focus when the user moves from the Templates tab
|
||||
// back to the Projects tab.
|
||||
search_box->grab_focus();
|
||||
}
|
||||
|
||||
// The Templates tab's search field is focused on display in the asset
|
||||
// library editor plugin code.
|
||||
}
|
||||
|
||||
void ProjectManager::_on_search_term_changed(const String &p_term) {
|
||||
_project_list->set_search_term(p_term);
|
||||
_project_list->sort_projects();
|
||||
@ -2456,6 +2467,7 @@ ProjectManager::ProjectManager() {
|
||||
center_box->add_child(tabs);
|
||||
tabs->set_anchors_and_offsets_preset(Control::PRESET_WIDE);
|
||||
tabs->set_tab_align(TabContainer::ALIGN_LEFT);
|
||||
tabs->connect("tab_changed", callable_mp(this, &ProjectManager::_on_tab_changed));
|
||||
|
||||
HBoxContainer *projects_hb = memnew(HBoxContainer);
|
||||
projects_hb->set_name(TTR("Projects"));
|
||||
@ -2472,8 +2484,8 @@ ProjectManager::ProjectManager() {
|
||||
search_tree_vb->add_child(hb);
|
||||
|
||||
search_box = memnew(LineEdit);
|
||||
search_box->set_placeholder(TTR("Search"));
|
||||
search_box->set_tooltip(TTR("The search box filters projects by name and last path component.\nTo filter projects by name and full path, the query must contain at least one `/` character."));
|
||||
search_box->set_placeholder(TTR("Filter projects"));
|
||||
search_box->set_tooltip(TTR("This field filters projects by name and last path component.\nTo filter projects by name and full path, the query must contain at least one `/` character."));
|
||||
search_box->connect("text_changed", callable_mp(this, &ProjectManager::_on_search_term_changed));
|
||||
search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
hb->add_child(search_box);
|
||||
|
@ -116,6 +116,7 @@ class ProjectManager : public Control {
|
||||
void _files_dropped(PackedStringArray p_files, int p_screen);
|
||||
|
||||
void _on_order_option_changed(int p_idx);
|
||||
void _on_tab_changed(int p_tab);
|
||||
void _on_search_term_changed(const String &p_term);
|
||||
|
||||
protected:
|
||||
|
Loading…
Reference in New Issue
Block a user