Skip to content

Commit 49c7966

Browse files
committed
Fix unexpected control position change when left/top offsets not match pos_cache
1 parent 6a6a116 commit 49c7966

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

scene/gui/control.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1420,11 +1420,12 @@ void Control::set_position(const Point2 &p_point, bool p_keep_offsets) {
14201420

14211421
real_t edge_pos[4];
14221422
_compute_edge_positions(get_parent_anchorable_rect(), edge_pos);
1423+
Point2 offset_pos = Point2(edge_pos[0], edge_pos[1]) + (p_point - data.pos_cache);
14231424
Size2 offset_size(edge_pos[2] - edge_pos[0], edge_pos[3] - edge_pos[1]);
14241425
if (p_keep_offsets) {
1425-
_compute_anchors(Rect2(p_point, offset_size), data.offset, data.anchor);
1426+
_compute_anchors(Rect2(offset_pos, offset_size), data.offset, data.anchor);
14261427
} else {
1427-
_compute_offsets(Rect2(p_point, offset_size), data.anchor, data.offset);
1428+
_compute_offsets(Rect2(offset_pos, offset_size), data.anchor, data.offset);
14281429
}
14291430
_size_changed();
14301431
}

0 commit comments

Comments
 (0)