Skip to content

Commit

Permalink
Fix Control resizing wrongly after "change type" in editor
Browse files Browse the repository at this point in the history
  • Loading branch information
RedMser committed May 14, 2024
1 parent 1d47561 commit 5e79e02
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions editor/scene_tree_dock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2907,6 +2907,13 @@ void SceneTreeDock::_replace_node(Node *p_node, Node *p_by_node, bool p_keep_pro
}
}

// HACK: Remember size of anchored control.
Control *old_control = Object::cast_to<Control>(oldnode);
Size2 size;
if (old_control) {
size = old_control->get_size();
}

String newname = oldnode->get_name();

List<Node *> to_erase;
Expand All @@ -2917,6 +2924,12 @@ void SceneTreeDock::_replace_node(Node *p_node, Node *p_by_node, bool p_keep_pro
}
oldnode->replace_by(newnode, true);

// Re-apply size of anchored control.
Control *new_control = Object::cast_to<Control>(newnode);
if (old_control && new_control) {
new_control->set_size(size);
}

//small hack to make collisionshapes and other kind of nodes to work
for (int i = 0; i < newnode->get_child_count(); i++) {
Node *c = newnode->get_child(i);
Expand Down

0 comments on commit 5e79e02

Please sign in to comment.