diff options
Diffstat (limited to 'scene/gui/control.cpp')
-rw-r--r-- | scene/gui/control.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 71a0f50240..af3b37bec2 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -85,9 +85,14 @@ Size2 Control::edit_get_minimum_size() const { void Control::edit_set_rect(const Rect2& p_edit_rect) { - Rect2 new_rect=get_rect(); + Matrix32 postxf; + postxf.set_rotation_and_scale(data.rotation,data.scale); + Vector2 new_pos = postxf.xform(p_edit_rect.pos); + + Vector2 pos = get_pos()+new_pos; - new_rect.pos+=p_edit_rect.pos.snapped(Vector2(1,1)); + Rect2 new_rect=get_rect(); + new_rect.pos=pos.snapped(Vector2(1,1)); new_rect.size=p_edit_rect.size.snapped(Vector2(1,1)); set_pos(new_rect.pos); @@ -1597,7 +1602,9 @@ bool Control::has_focus() const { void Control::grab_focus() { - ERR_FAIL_COND(!is_inside_tree()); + if (!is_inside_tree()){ + ERR_FAIL_COND(!is_inside_tree()); + } if (data.focus_mode==FOCUS_NONE) return; |