You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
Merge pull request #106141 from L2750558108/fix-control-position
Fix unexpected control position change when left/top offsets not match `pos_cache`
This commit is contained in:
@@ -1420,11 +1420,12 @@ void Control::set_position(const Point2 &p_point, bool p_keep_offsets) {
|
|||||||
|
|
||||||
real_t edge_pos[4];
|
real_t edge_pos[4];
|
||||||
_compute_edge_positions(get_parent_anchorable_rect(), edge_pos);
|
_compute_edge_positions(get_parent_anchorable_rect(), edge_pos);
|
||||||
|
Point2 offset_pos = Point2(edge_pos[0], edge_pos[1]) + (p_point - data.pos_cache);
|
||||||
Size2 offset_size(edge_pos[2] - edge_pos[0], edge_pos[3] - edge_pos[1]);
|
Size2 offset_size(edge_pos[2] - edge_pos[0], edge_pos[3] - edge_pos[1]);
|
||||||
if (p_keep_offsets) {
|
if (p_keep_offsets) {
|
||||||
_compute_anchors(Rect2(p_point, offset_size), data.offset, data.anchor);
|
_compute_anchors(Rect2(offset_pos, offset_size), data.offset, data.anchor);
|
||||||
} else {
|
} else {
|
||||||
_compute_offsets(Rect2(p_point, offset_size), data.anchor, data.offset);
|
_compute_offsets(Rect2(offset_pos, offset_size), data.anchor, data.offset);
|
||||||
}
|
}
|
||||||
_size_changed();
|
_size_changed();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user