Add FilterLineEdit to unify editor filter field navigation

This commit is contained in:
kobewi
2024-10-30 11:36:32 +01:00
parent 0304036bed
commit d6975dac11
20 changed files with 206 additions and 196 deletions

View File

@@ -32,12 +32,17 @@
#include "core/io/resource_loader.h"
#include "core/object/class_db.h"
#include "editor/doc/editor_help.h"
#include "editor/editor_node.h"
#include "editor/editor_string_names.h"
#include "editor/file_system/editor_paths.h"
#include "editor/gui/filter_line_edit.h"
#include "editor/settings/editor_feature_profile.h"
#include "editor/settings/editor_settings.h"
#include "editor/themes/editor_scale.h"
#include "scene/gui/button.h"
#include "scene/gui/item_list.h"
#include "scene/gui/tree.h"
void CreateDialog::popup_create(bool p_dont_clear, bool p_replace_mode, const String &p_current_type, const String &p_current_name) {
_fill_type_list();
@@ -539,10 +544,7 @@ void CreateDialog::_sbox_input(const Ref<InputEvent> &p_event) {
// Redirect navigational key events to the tree.
Ref<InputEventKey> key = p_event;
if (key.is_valid()) {
if (key->is_action("ui_up", true) || key->is_action("ui_down", true) || key->is_action("ui_page_up") || key->is_action("ui_page_down")) {
search_options->gui_input(key);
search_box->accept_event();
} else if (key->is_action_pressed("ui_select", true)) {
if (key->is_action_pressed("ui_select", true)) {
TreeItem *ti = search_options->get_selected();
if (ti) {
ti->set_collapsed(!ti->is_collapsed());
@@ -577,7 +579,6 @@ void CreateDialog::_notification(int p_what) {
favorites->add_theme_constant_override("icon_max_width", icon_width);
recent->set_fixed_icon_size(Size2(icon_width, icon_width));
search_box->set_right_icon(get_editor_theme_icon(SNAME("Search")));
favorite->set_button_icon(get_editor_theme_icon(SNAME("Favorites")));
} break;
}
@@ -923,12 +924,10 @@ CreateDialog::CreateDialog() {
vbc->set_v_size_flags(Control::SIZE_EXPAND_FILL);
vsc_right->add_child(vbc);
search_box = memnew(LineEdit);
search_box = memnew(FilterLineEdit);
search_box->set_accessibility_name(TTRC("Search"));
search_box->set_clear_button_enabled(true);
search_box->set_h_size_flags(Control::SIZE_EXPAND_FILL);
search_box->connect(SceneStringName(text_changed), callable_mp(this, &CreateDialog::_text_changed));
search_box->connect(SceneStringName(gui_input), callable_mp(this, &CreateDialog::_sbox_input));
HBoxContainer *search_hb = memnew(HBoxContainer);
search_hb->add_child(search_box);
@@ -941,6 +940,7 @@ CreateDialog::CreateDialog() {
vbc->add_margin_child(TTR("Search:"), search_hb);
search_options = memnew(Tree);
search_box->set_forward_control(search_options);
search_options->set_accessibility_name(TTRC("Matches:"));
search_options->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
search_options->connect("item_activated", callable_mp(this, &CreateDialog::_confirmed));