You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +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:
committed by
Rémi Verschelde
parent
7840a550b5
commit
f7ed1f4d1f
@@ -951,8 +951,11 @@ void EditorAssetLibrary::_search(int p_page) {
|
|||||||
_api_request("asset", REQUESTING_SEARCH, args);
|
_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();
|
_search();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1328,7 +1331,8 @@ void EditorAssetLibrary::_bind_methods() {
|
|||||||
ClassDB::bind_method("_select_category", &EditorAssetLibrary::_select_category);
|
ClassDB::bind_method("_select_category", &EditorAssetLibrary::_select_category);
|
||||||
ClassDB::bind_method("_image_request_completed", &EditorAssetLibrary::_image_request_completed);
|
ClassDB::bind_method("_image_request_completed", &EditorAssetLibrary::_image_request_completed);
|
||||||
ClassDB::bind_method("_search", &EditorAssetLibrary::_search, DEFVAL(0));
|
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("_install_asset", &EditorAssetLibrary::_install_asset);
|
||||||
ClassDB::bind_method("_manage_plugins", &EditorAssetLibrary::_manage_plugins);
|
ClassDB::bind_method("_manage_plugins", &EditorAssetLibrary::_manage_plugins);
|
||||||
ClassDB::bind_method("_asset_open", &EditorAssetLibrary::_asset_open);
|
ClassDB::bind_method("_asset_open", &EditorAssetLibrary::_asset_open);
|
||||||
@@ -1359,10 +1363,15 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) {
|
|||||||
filter = memnew(LineEdit);
|
filter = memnew(LineEdit);
|
||||||
search_hb->add_child(filter);
|
search_hb->add_child(filter);
|
||||||
filter->set_h_size_flags(SIZE_EXPAND_FILL);
|
filter->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||||
filter->connect("text_entered", this, "_search_text_entered");
|
filter->connect("text_changed", this, "_search_text_changed");
|
||||||
search = memnew(Button(TTR("Search")));
|
|
||||||
search->connect("pressed", this, "_search");
|
// Perform a search automatically if the user hasn't entered any text for a certain duration.
|
||||||
search_hb->add_child(search);
|
// 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)
|
if (!p_templates_only)
|
||||||
search_hb->add_child(memnew(VSeparator));
|
search_hb->add_child(memnew(VSeparator));
|
||||||
|
|||||||
@@ -186,10 +186,10 @@ class EditorAssetLibrary : public PanelContainer {
|
|||||||
Label *library_loading;
|
Label *library_loading;
|
||||||
Label *library_error;
|
Label *library_error;
|
||||||
LineEdit *filter;
|
LineEdit *filter;
|
||||||
|
Timer *filter_debounce_timer;
|
||||||
OptionButton *categories;
|
OptionButton *categories;
|
||||||
OptionButton *repository;
|
OptionButton *repository;
|
||||||
OptionButton *sort;
|
OptionButton *sort;
|
||||||
Button *search;
|
|
||||||
HBoxContainer *error_hb;
|
HBoxContainer *error_hb;
|
||||||
TextureRect *error_tr;
|
TextureRect *error_tr;
|
||||||
Label *error_label;
|
Label *error_label;
|
||||||
@@ -284,10 +284,12 @@ class EditorAssetLibrary : public PanelContainer {
|
|||||||
|
|
||||||
void _search(int p_page = 0);
|
void _search(int p_page = 0);
|
||||||
void _rerun_search(int p_ignore);
|
void _rerun_search(int p_ignore);
|
||||||
|
void _search_text_changed(const String &p_text = "");
|
||||||
void _search_text_entered(const String &p_text = "");
|
void _search_text_entered(const String &p_text = "");
|
||||||
void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
|
void _api_request(const String &p_request, RequestType p_request_type, const String &p_arguments = "");
|
||||||
void _http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
|
void _http_request_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
|
||||||
void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
|
void _http_download_completed(int p_status, int p_code, const PoolStringArray &headers, const PoolByteArray &p_data);
|
||||||
|
void _filter_debounce_timer_timeout();
|
||||||
|
|
||||||
void _repository_changed(int p_repository_id);
|
void _repository_changed(int p_repository_id);
|
||||||
void _support_toggled(int p_support);
|
void _support_toggled(int p_support);
|
||||||
|
|||||||
Reference in New Issue
Block a user