summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scene/main/viewport.cpp16
-rw-r--r--scene/main/viewport.h4
-rw-r--r--scene/main/window.cpp8
-rw-r--r--scene/main/window.h1
4 files changed, 12 insertions, 17 deletions
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 64bfec873a..19d16ae27e 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -1052,7 +1052,7 @@ Camera2D *Viewport::get_camera_2d() const {
}
Transform2D Viewport::get_final_transform() const {
- return _get_input_pre_xform().affine_inverse() * stretch_transform * global_canvas_transform;
+ return stretch_transform * global_canvas_transform;
}
void Viewport::assign_next_enabled_camera_2d(const StringName &p_camera_group) {
@@ -1138,14 +1138,6 @@ Viewport::PositionalShadowAtlasQuadrantSubdiv Viewport::get_positional_shadow_at
return positional_shadow_atlas_quadrant_subdiv[p_quadrant];
}
-Transform2D Viewport::_get_input_pre_xform() const {
- const Window *this_window = Object::cast_to<Window>(this);
- if (this_window) {
- return this_window->window_transform.affine_inverse();
- }
- return Transform2D();
-}
-
Ref<InputEvent> Viewport::_make_input_local(const Ref<InputEvent> &ev) {
if (ev.is_null()) {
return ev; // No transformation defined for null event
@@ -4207,7 +4199,7 @@ Transform2D SubViewport::get_screen_transform() const {
} else {
WARN_PRINT_ONCE("SubViewport is not a child of a SubViewportContainer. get_screen_transform doesn't return the actual screen position.");
}
- return container_transform * Viewport::get_screen_transform();
+ return container_transform * get_final_transform();
}
Transform2D SubViewport::get_popup_base_transform() const {
@@ -4216,13 +4208,13 @@ Transform2D SubViewport::get_popup_base_transform() const {
}
SubViewportContainer *c = Object::cast_to<SubViewportContainer>(get_parent());
if (!c) {
- return Viewport::get_screen_transform();
+ return get_final_transform();
}
Transform2D container_transform;
if (c->is_stretch_enabled()) {
container_transform.scale(Vector2(c->get_stretch_shrink(), c->get_stretch_shrink()));
}
- return c->get_screen_transform() * container_transform * Viewport::get_screen_transform();
+ return c->get_screen_transform() * container_transform * get_final_transform();
}
void SubViewport::_notification(int p_what) {
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 96aee4a34d..2142aaaaef 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -407,8 +407,6 @@ private:
void _perform_drop(Control *p_control = nullptr, Point2 p_pos = Point2());
void _gui_cleanup_internal_state(Ref<InputEvent> p_event);
- _FORCE_INLINE_ Transform2D _get_input_pre_xform() const;
-
Ref<InputEvent> _make_input_local(const Ref<InputEvent> &ev);
friend class Control;
@@ -509,7 +507,7 @@ public:
void set_global_canvas_transform(const Transform2D &p_transform);
Transform2D get_global_canvas_transform() const;
- Transform2D get_final_transform() const;
+ virtual Transform2D get_final_transform() const;
void assign_next_enabled_camera_2d(const StringName &p_camera_group);
void gui_set_root_order_dirty();
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index be2a0dca13..33946246b0 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -2115,13 +2115,17 @@ bool Window::is_auto_translating() const {
return auto_translate;
}
+Transform2D Window::get_final_transform() const {
+ return window_transform * stretch_transform * global_canvas_transform;
+}
+
Transform2D Window::get_screen_transform() const {
Transform2D embedder_transform;
if (_get_embedder()) {
embedder_transform.translate_local(get_position());
embedder_transform = _get_embedder()->get_screen_transform() * embedder_transform;
}
- return embedder_transform * Viewport::get_screen_transform();
+ return embedder_transform * get_final_transform();
}
Transform2D Window::get_popup_base_transform() const {
@@ -2130,7 +2134,7 @@ Transform2D Window::get_popup_base_transform() const {
}
Transform2D popup_base_transform;
popup_base_transform.set_origin(get_position());
- popup_base_transform *= Viewport::get_screen_transform();
+ popup_base_transform *= get_final_transform();
if (_get_embedder()) {
return _get_embedder()->get_popup_base_transform() * popup_base_transform;
}
diff --git a/scene/main/window.h b/scene/main/window.h
index 1730de0b33..9861fefc68 100644
--- a/scene/main/window.h
+++ b/scene/main/window.h
@@ -376,6 +376,7 @@ public:
//
+ virtual Transform2D get_final_transform() const override;
virtual Transform2D get_screen_transform() const override;
virtual Transform2D get_popup_base_transform() const override;