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

@ -41,6 +41,7 @@
#include "editor/gui/editor_bottom_panel.h"
#include "editor/gui/editor_file_dialog.h"
#include "editor/gui/editor_spin_slider.h"
#include "editor/gui/filter_line_edit.h"
#include "editor/gui/progress_dialog.h"
#include "editor/inspector/editor_resource_picker.h"
#include "editor/settings/editor_command_palette.h"
@ -2233,17 +2234,6 @@ void ThemeTypeDialog::_add_type_filter_cbk(const String &p_value) {
_update_add_type_options(p_value);
}
void ThemeTypeDialog::_type_filter_input(const Ref<InputEvent> &p_event) {
// Redirect navigational key events to the item list.
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")) {
add_type_options->gui_input(key);
add_type_filter->accept_event();
}
}
}
void ThemeTypeDialog::_add_type_options_cbk(int p_index) {
add_type_filter->set_text(add_type_options->get_item_text(p_index));
add_type_filter->set_caret_column(add_type_filter->get_text().length());
@ -2312,11 +2302,10 @@ ThemeTypeDialog::ThemeTypeDialog() {
add_type_filter_label->set_text(TTR("Filter the list of types or create a new custom type:"));
add_type_vb->add_child(add_type_filter_label);
add_type_filter = memnew(LineEdit);
add_type_filter = memnew(FilterLineEdit);
add_type_vb->add_child(add_type_filter);
add_type_filter->connect(SceneStringName(text_changed), callable_mp(this, &ThemeTypeDialog::_add_type_filter_cbk));
add_type_filter->connect(SceneStringName(text_submitted), callable_mp(this, &ThemeTypeDialog::_add_type_dialog_entered));
add_type_filter->connect(SceneStringName(gui_input), callable_mp(this, &ThemeTypeDialog::_type_filter_input));
Label *add_type_options_label = memnew(Label);
add_type_options_label->set_text(TTR("Available Node-based types:"));
@ -2328,6 +2317,7 @@ ThemeTypeDialog::ThemeTypeDialog() {
add_type_vb->add_child(mc);
add_type_options = memnew(ItemList);
add_type_filter->set_forward_control(add_type_options);
add_type_options->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
add_type_options->set_scroll_hint_mode(ItemList::SCROLL_HINT_MODE_BOTH);
mc->add_child(add_type_options);