Merge pull request #67383 from EricEzaM/67211-focus-input-box
Focus EventListener when InputEventConfigurationDialog is opened.
This commit is contained in:
commit
9aabdb5aad
@ -59,8 +59,9 @@ void EventListenerLineEdit::gui_input(const Ref<InputEvent> &p_event) {
|
|||||||
// First event will be an event which is used to focus this control - i.e. a mouse click, or a tab press.
|
// First event will be an event which is used to focus this control - i.e. a mouse click, or a tab press.
|
||||||
// Ignore the first one so that clicking into the LineEdit does not override the current event.
|
// Ignore the first one so that clicking into the LineEdit does not override the current event.
|
||||||
// Ignore is reset to true when the control is unfocused.
|
// Ignore is reset to true when the control is unfocused.
|
||||||
if (ignore) {
|
// This class also specially handles grab_focus() calls.
|
||||||
ignore = false;
|
if (ignore_next_event) {
|
||||||
|
ignore_next_event = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +86,7 @@ void EventListenerLineEdit::_on_focus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EventListenerLineEdit::_on_unfocus() {
|
void EventListenerLineEdit::_on_unfocus() {
|
||||||
ignore = true;
|
ignore_next_event = true;
|
||||||
set_placeholder(TTR("Filter by event..."));
|
set_placeholder(TTR("Filter by event..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +110,12 @@ int EventListenerLineEdit::get_allowed_input_types() const {
|
|||||||
return allowed_input_types;
|
return allowed_input_types;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void EventListenerLineEdit::grab_focus() {
|
||||||
|
// If we grab focus through code, we don't need to ignore the first event!
|
||||||
|
ignore_next_event = false;
|
||||||
|
Control::grab_focus();
|
||||||
|
}
|
||||||
|
|
||||||
void EventListenerLineEdit::_notification(int p_what) {
|
void EventListenerLineEdit::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
case NOTIFICATION_ENTER_TREE: {
|
case NOTIFICATION_ENTER_TREE: {
|
||||||
|
@ -44,7 +44,7 @@ class EventListenerLineEdit : public LineEdit {
|
|||||||
GDCLASS(EventListenerLineEdit, LineEdit)
|
GDCLASS(EventListenerLineEdit, LineEdit)
|
||||||
|
|
||||||
int allowed_input_types = INPUT_KEY | INPUT_MOUSE_BUTTON | INPUT_JOY_BUTTON | INPUT_JOY_MOTION;
|
int allowed_input_types = INPUT_KEY | INPUT_MOUSE_BUTTON | INPUT_JOY_BUTTON | INPUT_JOY_MOTION;
|
||||||
bool ignore = true;
|
bool ignore_next_event = true;
|
||||||
bool share_keycodes = false;
|
bool share_keycodes = false;
|
||||||
Ref<InputEvent> event;
|
Ref<InputEvent> event;
|
||||||
|
|
||||||
@ -67,6 +67,8 @@ public:
|
|||||||
void set_allowed_input_types(int input_types);
|
void set_allowed_input_types(int input_types);
|
||||||
int get_allowed_input_types() const;
|
int get_allowed_input_types() const;
|
||||||
|
|
||||||
|
void grab_focus();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
EventListenerLineEdit();
|
EventListenerLineEdit();
|
||||||
};
|
};
|
||||||
|
@ -533,6 +533,10 @@ String InputEventConfigurationDialog::_get_device_string(int p_device) const {
|
|||||||
|
|
||||||
void InputEventConfigurationDialog::_notification(int p_what) {
|
void InputEventConfigurationDialog::_notification(int p_what) {
|
||||||
switch (p_what) {
|
switch (p_what) {
|
||||||
|
case NOTIFICATION_VISIBILITY_CHANGED: {
|
||||||
|
event_listener->grab_focus();
|
||||||
|
} break;
|
||||||
|
|
||||||
case NOTIFICATION_ENTER_TREE:
|
case NOTIFICATION_ENTER_TREE:
|
||||||
case NOTIFICATION_THEME_CHANGED: {
|
case NOTIFICATION_THEME_CHANGED: {
|
||||||
input_list_search->set_right_icon(input_list_search->get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
|
input_list_search->set_right_icon(input_list_search->get_theme_icon(SNAME("Search"), SNAME("EditorIcons")));
|
||||||
|
Loading…
Reference in New Issue
Block a user