summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/classes/Viewport.xml4
-rw-r--r--editor/editor_command_palette.cpp4
-rw-r--r--scene/gui/subviewport_container.cpp28
-rw-r--r--scene/gui/subviewport_container.h1
-rw-r--r--scene/main/viewport.cpp4
-rw-r--r--scene/main/window.cpp4
6 files changed, 10 insertions, 35 deletions
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index b7d41f41e4..7538dba201 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -158,7 +158,11 @@
Calling this method will propagate calls to child nodes for following methods in the given order:
- [method Node._input]
- [method Control._gui_input] for [Control] nodes
+ - [method Node._shortcut_input]
+ - [method Node._unhandled_input]
+ - [method Node._unhandled_key_input]
If an earlier method marks the input as handled via [method set_input_as_handled], any later method in this list will not be called.
+ If none of the methods handle the event and [member physics_object_picking] is [code]true[/code], the event is used for physics object picking.
</description>
</method>
<method name="push_text_input">
diff --git a/editor/editor_command_palette.cpp b/editor/editor_command_palette.cpp
index 1c598277dd..77ae3e026c 100644
--- a/editor/editor_command_palette.cpp
+++ b/editor/editor_command_palette.cpp
@@ -256,7 +256,7 @@ void EditorCommandPalette::register_shortcuts_as_command() {
ev.instantiate();
ev->set_shortcut(shortcut);
String shortcut_text = String(shortcut->get_as_text());
- add_command(command_name, E.key, callable_mp(EditorNode::get_singleton()->get_viewport(), &Viewport::push_unhandled_input), varray(ev, false), shortcut_text);
+ add_command(command_name, E.key, callable_mp(EditorNode::get_singleton()->get_viewport(), &Viewport::push_input), varray(ev, false), shortcut_text);
}
unregistered_shortcuts.clear();
@@ -277,7 +277,7 @@ Ref<Shortcut> EditorCommandPalette::add_shortcut_command(const String &p_command
ev.instantiate();
ev->set_shortcut(p_shortcut);
String shortcut_text = String(p_shortcut->get_as_text());
- add_command(p_command, p_key, callable_mp(EditorNode::get_singleton()->get_viewport(), &Viewport::push_unhandled_input), varray(ev, false), shortcut_text);
+ add_command(p_command, p_key, callable_mp(EditorNode::get_singleton()->get_viewport(), &Viewport::push_input), varray(ev, false), shortcut_text);
} else {
const String key_name = String(p_key);
const String command_name = String(p_command);
diff --git a/scene/gui/subviewport_container.cpp b/scene/gui/subviewport_container.cpp
index f9e96a44ed..9105837486 100644
--- a/scene/gui/subviewport_container.cpp
+++ b/scene/gui/subviewport_container.cpp
@@ -221,33 +221,6 @@ bool SubViewportContainer::_is_propagated_in_gui_input(const Ref<InputEvent> &p_
return false;
}
-void SubViewportContainer::unhandled_input(const Ref<InputEvent> &p_event) {
- ERR_FAIL_COND(p_event.is_null());
-
- if (Engine::get_singleton()->is_editor_hint()) {
- return;
- }
-
- Transform2D xform = get_global_transform_with_canvas();
-
- if (stretch) {
- Transform2D scale_xf;
- scale_xf.scale(Vector2(shrink, shrink));
- xform *= scale_xf;
- }
-
- Ref<InputEvent> ev = p_event->xformed_by(xform.affine_inverse());
-
- for (int i = 0; i < get_child_count(); i++) {
- SubViewport *c = Object::cast_to<SubViewport>(get_child(i));
- if (!c || c->is_input_disabled()) {
- continue;
- }
-
- c->push_unhandled_input(ev);
- }
-}
-
void SubViewportContainer::add_child_notify(Node *p_child) {
if (Object::cast_to<SubViewport>(p_child)) {
queue_redraw();
@@ -290,5 +263,4 @@ void SubViewportContainer::_bind_methods() {
SubViewportContainer::SubViewportContainer() {
set_process_input(true);
- set_process_unhandled_input(true);
}
diff --git a/scene/gui/subviewport_container.h b/scene/gui/subviewport_container.h
index c1a74e5b98..8e5f5d157d 100644
--- a/scene/gui/subviewport_container.h
+++ b/scene/gui/subviewport_container.h
@@ -55,7 +55,6 @@ public:
virtual void input(const Ref<InputEvent> &p_event) override;
virtual void gui_input(const Ref<InputEvent> &p_event) override;
- virtual void unhandled_input(const Ref<InputEvent> &p_event) override;
void set_stretch_shrink(int p_shrink);
int get_stretch_shrink() const;
void recalc_force_viewport_sizes();
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 8cd57536bf..d0dc53edc2 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -2837,6 +2837,10 @@ void Viewport::push_input(const Ref<InputEvent> &p_event, bool p_local_coords) {
_gui_cleanup_internal_state(ev);
}
+ if (!is_input_handled()) {
+ push_unhandled_input(ev, true);
+ }
+
event_count++;
}
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index 5d3173a2a5..8137592e99 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -1368,10 +1368,6 @@ void Window::_window_input(const Ref<InputEvent> &p_ev) {
if (is_inside_tree()) {
push_input(p_ev);
}
-
- if (!is_input_handled() && is_inside_tree()) {
- push_unhandled_input(p_ev);
- }
}
void Window::_window_input_text(const String &p_text) {