diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 03f5146110d..6ef39c88d8a 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -1735,13 +1735,18 @@ real_t Control::get_stretch_ratio() const { // Input events. void Control::_call_gui_input(const Ref &p_event) { - emit_signal(SceneStringNames::get_singleton()->gui_input, p_event); //signal should be first, so it's possible to override an event (and then accept it) - if (!is_inside_tree() || get_viewport()->is_input_handled()) { - return; //input was handled, abort + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + emit_signal(SceneStringNames::get_singleton()->gui_input, p_event); // Signal should be first, so it's possible to override an event (and then accept it). } - GDVIRTUAL_CALL(_gui_input, p_event); if (!is_inside_tree() || get_viewport()->is_input_handled()) { - return; //input was handled, abort + return; // Input was handled, abort. + } + + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + GDVIRTUAL_CALL(_gui_input, p_event); + } + if (!is_inside_tree() || get_viewport()->is_input_handled()) { + return; // Input was handled, abort. } gui_input(p_event); } diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 20827366539..b947526e968 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2791,7 +2791,9 @@ void Node::request_ready() { } void Node::_call_input(const Ref &p_event) { - GDVIRTUAL_CALL(_input, p_event); + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + GDVIRTUAL_CALL(_input, p_event); + } if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) { return; } @@ -2799,7 +2801,9 @@ void Node::_call_input(const Ref &p_event) { } void Node::_call_shortcut_input(const Ref &p_event) { - GDVIRTUAL_CALL(_shortcut_input, p_event); + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + GDVIRTUAL_CALL(_shortcut_input, p_event); + } if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) { return; } @@ -2807,7 +2811,9 @@ void Node::_call_shortcut_input(const Ref &p_event) { } void Node::_call_unhandled_input(const Ref &p_event) { - GDVIRTUAL_CALL(_unhandled_input, p_event); + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + GDVIRTUAL_CALL(_unhandled_input, p_event); + } if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) { return; } @@ -2815,7 +2821,9 @@ void Node::_call_unhandled_input(const Ref &p_event) { } void Node::_call_unhandled_key_input(const Ref &p_event) { - GDVIRTUAL_CALL(_unhandled_key_input, p_event); + if (p_event->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + GDVIRTUAL_CALL(_unhandled_key_input, p_event); + } if (!is_inside_tree() || !get_viewport() || get_viewport()->is_input_handled()) { return; } diff --git a/scene/main/window.cpp b/scene/main/window.cpp index d16a12fcff3..3d11e6647ee 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -1377,7 +1377,9 @@ void Window::_window_input(const Ref &p_ev) { } } - emit_signal(SceneStringNames::get_singleton()->window_input, p_ev); + if (p_ev->get_device() != InputEvent::DEVICE_ID_INTERNAL) { + emit_signal(SceneStringNames::get_singleton()->window_input, p_ev); + } if (is_inside_tree()) { push_input(p_ev);