1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-06 12:20:30 +00:00

Automatically start searching in the asset library when entering text

Entering text will now start searching automatically after 0.25 seconds
have passed (debounce delay).

This removes the need for a separate Search button.

(cherry picked from commit 6055db2a72)
This commit is contained in:
Hugo Locurcio
2020-09-29 12:43:38 +02:00
committed by Rémi Verschelde
parent 7840a550b5
commit f7ed1f4d1f
2 changed files with 18 additions and 7 deletions

View File

@@ -951,8 +951,11 @@ void EditorAssetLibrary::_search(int p_page) {
_api_request("asset", REQUESTING_SEARCH, args);
}
void EditorAssetLibrary::_search_text_entered(const String &p_text) {
void EditorAssetLibrary::_search_text_changed(const String &p_text) {
filter_debounce_timer->start();
}
void EditorAssetLibrary::_filter_debounce_timer_timeout() {
_search();
}
@@ -1328,7 +1331,8 @@ void EditorAssetLibrary::_bind_methods() {
ClassDB::bind_method("_select_category", &EditorAssetLibrary::_select_category);
ClassDB::bind_method("_image_request_completed", &EditorAssetLibrary::_image_request_completed);
ClassDB::bind_method("_search", &EditorAssetLibrary::_search, DEFVAL(0));
ClassDB::bind_method("_search_text_entered", &EditorAssetLibrary::_search_text_entered);
ClassDB::bind_method("_search_text_changed", &EditorAssetLibrary::_search_text_changed);
ClassDB::bind_method("_filter_debounce_timer_timeout", &EditorAssetLibrary::_filter_debounce_timer_timeout);
ClassDB::bind_method("_install_asset", &EditorAssetLibrary::_install_asset);
ClassDB::bind_method("_manage_plugins", &EditorAssetLibrary::_manage_plugins);
ClassDB::bind_method("_asset_open", &EditorAssetLibrary::_asset_open);
@@ -1359,10 +1363,15 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) {
filter = memnew(LineEdit);
search_hb->add_child(filter);
filter->set_h_size_flags(SIZE_EXPAND_FILL);
filter->connect("text_entered", this, "_search_text_entered");
search = memnew(Button(TTR("Search")));
search->connect("pressed", this, "_search");
search_hb->add_child(search);
filter->connect("text_changed", this, "_search_text_changed");
// Perform a search automatically if the user hasn't entered any text for a certain duration.
// This way, the user doesn't need to press Enter to initiate their search.
filter_debounce_timer = memnew(Timer);
filter_debounce_timer->set_one_shot(true);
filter_debounce_timer->set_wait_time(0.25);
filter_debounce_timer->connect("timeout", this, "_filter_debounce_timer_timeout");
search_hb->add_child(filter_debounce_timer);
if (!p_templates_only)
search_hb->add_child(memnew(VSeparator));