@@ -998,10 +998,10 @@ void Viewport::update_canvas_items() {
998998 _update_canvas_items (this );
999999}
10001000
1001- bool Viewport::_set_size (const Size2i &p_size, const Size2i &p_size_2d_override, bool p_allocated) {
1001+ bool Viewport::_set_size (const Size2i &p_size, const Size2 &p_size_2d_override, bool p_allocated) {
10021002 Transform2D stretch_transform_new = Transform2D ();
10031003 if (is_size_2d_override_stretch_enabled () && p_size_2d_override.width > 0 && p_size_2d_override.height > 0 ) {
1004- Size2 scale = Size2 (p_size) / Size2 ( p_size_2d_override) ;
1004+ Size2 scale = Size2 (p_size) / p_size_2d_override;
10051005 stretch_transform_new.scale (scale);
10061006 }
10071007
@@ -1070,7 +1070,7 @@ Size2i Viewport::_get_size() const {
10701070 return size;
10711071}
10721072
1073- Size2i Viewport::_get_size_2d_override () const {
1073+ Size2 Viewport::_get_size_2d_override () const {
10741074 return size_2d_override;
10751075}
10761076
@@ -1088,7 +1088,7 @@ Rect2 Viewport::get_visible_rect() const {
10881088 r = Rect2 (Point2 (), size);
10891089 }
10901090
1091- if (size_2d_override != Size2i ()) {
1091+ if (size_2d_override != Size2 ()) {
10921092 r.size = size_2d_override;
10931093 }
10941094
@@ -5219,7 +5219,10 @@ void SubViewport::set_size_2d_override(const Size2i &p_size) {
52195219
52205220Size2i SubViewport::get_size_2d_override () const {
52215221 ERR_READ_THREAD_GUARD_V (Size2i ());
5222- return _get_size_2d_override ();
5222+ // Rounding will cause offset issues with the
5223+ // exact positioning of subwindows, but changing the
5224+ // type of size_2d_override would break compatibility.
5225+ return Size2i ((_get_size_2d_override () + Size2 (0.5 , 0.5 )).floor ());
52235226}
52245227
52255228void SubViewport::set_size_2d_override_stretch (bool p_enable) {
0 commit comments