Skip to content

Commit

Permalink
Merge pull request #91804 from RedMser/wrong-size-no-more
Browse files Browse the repository at this point in the history
Fix Control resizing wrongly after "change type" in editor
  • Loading branch information
akien-mga committed May 15, 2024
2 parents 86b72d9 + 5e79e02 commit 80b9f5b
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 179 deletions.
7 changes: 2 additions & 5 deletions core/core_string_names.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,8 @@ CoreStringNames::CoreStringNames() :
_iter_get(StaticCString::create("_iter_get")),
get_rid(StaticCString::create("get_rid")),
_to_string(StaticCString::create("_to_string")),
#ifdef TOOLS_ENABLED
_sections_unfolded(StaticCString::create("_sections_unfolded")),
#endif
_custom_features(StaticCString::create("_custom_features")),

x(StaticCString::create("x")),
y(StaticCString::create("y")),
z(StaticCString::create("z")),
Expand All @@ -68,11 +66,10 @@ CoreStringNames::CoreStringNames() :
g8(StaticCString::create("g8")),
b8(StaticCString::create("b8")),
a8(StaticCString::create("a8")),

call(StaticCString::create("call")),
call_deferred(StaticCString::create("call_deferred")),
bind(StaticCString::create("bind")),
unbind(StaticCString::create("unbind")),
emit(StaticCString::create("emit")),
notification(StaticCString::create("notification")),
property_list_changed(StaticCString::create("property_list_changed")) {
}
5 changes: 0 additions & 5 deletions core/core_string_names.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ class CoreStringNames {
StringName _iter_get;
StringName get_rid;
StringName _to_string;
#ifdef TOOLS_ENABLED
StringName _sections_unfolded;
#endif
StringName _custom_features;

StringName x;
Expand Down Expand Up @@ -90,8 +87,6 @@ class CoreStringNames {
StringName call;
StringName call_deferred;
StringName bind;
StringName unbind;
StringName emit;
StringName notification;
StringName property_list_changed;
};
Expand Down
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
8 changes: 4 additions & 4 deletions scene/3d/node_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ void Node3D::_notification(int p_what) {
ERR_FAIL_NULL(data.viewport);

if (get_script_instance()) {
get_script_instance()->call(SceneStringName(_enter_world));
get_script_instance()->call(SNAME("_enter_world"));
}

#ifdef TOOLS_ENABLED
Expand All @@ -210,7 +210,7 @@ void Node3D::_notification(int p_what) {
#endif

if (get_script_instance()) {
get_script_instance()->call(SceneStringName(_exit_world));
get_script_instance()->call(SNAME("_exit_world"));
}

data.viewport = nullptr;
Expand Down Expand Up @@ -582,7 +582,7 @@ void Node3D::set_subgizmo_selection(Ref<Node3DGizmo> p_gizmo, int p_id, Transfor
}

if (is_part_of_edited_scene()) {
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringName(_spatial_editor_group), SceneStringName(_set_subgizmo_selection), this, p_gizmo, p_id, p_transform);
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringName(_spatial_editor_group), SNAME("_set_subgizmo_selection"), this, p_gizmo, p_id, p_transform);
}
#endif
}
Expand All @@ -599,7 +599,7 @@ void Node3D::clear_subgizmo_selection() {
}

if (is_part_of_edited_scene()) {
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringName(_spatial_editor_group), SceneStringName(_clear_subgizmo_selection), this);
get_tree()->call_group_flags(SceneTree::GROUP_CALL_DEFERRED, SceneStringName(_spatial_editor_group), SNAME("_clear_subgizmo_selection"), this);
}
#endif
}
Expand Down
4 changes: 2 additions & 2 deletions scene/3d/visual_instance_3d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,12 +276,12 @@ bool GeometryInstance3D::_set(const StringName &p_name, const Variant &p_value)
return true;
}
#ifndef DISABLE_DEPRECATED
if (p_name == SceneStringName(use_in_baked_light) && bool(p_value)) {
if (p_name == SNAME("use_in_baked_light") && bool(p_value)) {
set_gi_mode(GI_MODE_STATIC);
return true;
}

if (p_name == SceneStringName(use_dynamic_gi) && bool(p_value)) {
if (p_name == SNAME("use_dynamic_gi") && bool(p_value)) {
set_gi_mode(GI_MODE_DYNAMIC);
return true;
}
Expand Down
6 changes: 2 additions & 4 deletions scene/main/node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1736,12 +1736,10 @@ Node *Node::get_node_or_null(const NodePath &p_path) const {
StringName name = p_path.get_name(i);
Node *next = nullptr;

if (name == SceneStringName(dot)) { // .

if (name == SNAME(".")) {
next = current;

} else if (name == SceneStringName(doubledot)) { // ..

} else if (name == SNAME("..")) {
if (current == nullptr || !current->data.parent) {
return nullptr;
}
Expand Down
82 changes: 0 additions & 82 deletions scene/scene_string_names.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,20 +33,12 @@
SceneStringNames *SceneStringNames::singleton = nullptr;

SceneStringNames::SceneStringNames() {
_estimate_cost = StaticCString::create("_estimate_cost");
_compute_cost = StaticCString::create("_compute_cost");

resized = StaticCString::create("resized");
dot = StaticCString::create(".");
doubledot = StaticCString::create("..");
draw = StaticCString::create("draw");
_draw = StaticCString::create("_draw");
hidden = StaticCString::create("hidden");
visibility_changed = StaticCString::create("visibility_changed");
input_event = StaticCString::create("input_event");
shader = StaticCString::create("shader");
shader_unshaded = StaticCString::create("shader/unshaded");
shading_mode = StaticCString::create("shader/shading_mode");
tree_entered = StaticCString::create("tree_entered");
tree_exiting = StaticCString::create("tree_exiting");
tree_exited = StaticCString::create("tree_exited");
Expand Down Expand Up @@ -86,98 +78,33 @@ SceneStringNames::SceneStringNames() {
area_shape_entered = StaticCString::create("area_shape_entered");
area_shape_exited = StaticCString::create("area_shape_exited");

_body_inout = StaticCString::create("_body_inout");
_area_inout = StaticCString::create("_area_inout");

idle = StaticCString::create("idle");
iteration = StaticCString::create("iteration");
update = StaticCString::create("update");
updated = StaticCString::create("updated");

_physics_process = StaticCString::create("_physics_process");
_process = StaticCString::create("_process");

_enter_tree = StaticCString::create("_enter_tree");
_exit_tree = StaticCString::create("_exit_tree");
_enter_world = StaticCString::create("_enter_world");
_exit_world = StaticCString::create("_exit_world");
_ready = StaticCString::create("_ready");

_update_scroll = StaticCString::create("_update_scroll");
_update_xform = StaticCString::create("_update_xform");

_structured_text_parser = StaticCString::create("_structured_text_parser");

_proxgroup_add = StaticCString::create("_proxgroup_add");
_proxgroup_remove = StaticCString::create("_proxgroup_remove");

grouped = StaticCString::create("grouped");
ungrouped = StaticCString::create("ungrouped");

screen_entered = StaticCString::create("screen_entered");
screen_exited = StaticCString::create("screen_exited");

viewport_entered = StaticCString::create("viewport_entered");
viewport_exited = StaticCString::create("viewport_exited");

camera_entered = StaticCString::create("camera_entered");
camera_exited = StaticCString::create("camera_exited");

_input = StaticCString::create("_input");
_input_event = StaticCString::create("_input_event");

gui_input = StaticCString::create("gui_input");
_gui_input = StaticCString::create("_gui_input");

_unhandled_input = StaticCString::create("_unhandled_input");
_unhandled_key_input = StaticCString::create("_unhandled_key_input");

_shader_changed = StaticCString::create("_shader_changed");

_spatial_editor_group = StaticCString::create("_spatial_editor_group");
_request_gizmo = StaticCString::create("_request_gizmo");
_set_subgizmo_selection = StaticCString::create("_set_subgizmo_selection");
_clear_subgizmo_selection = StaticCString::create("_clear_subgizmo_selection");

offset = StaticCString::create("offset");
unit_offset = StaticCString::create("unit_offset");
rotation_mode = StaticCString::create("rotation_mode");
rotate = StaticCString::create("rotate");
h_offset = StaticCString::create("h_offset");
v_offset = StaticCString::create("v_offset");

_update_remote = StaticCString::create("_update_remote");
_update_pairs = StaticCString::create("_update_pairs");

_get_minimum_size = StaticCString::create("_get_minimum_size");

area_entered = StaticCString::create("area_entered");
area_exited = StaticCString::create("area_exited");

_has_point = StaticCString::create("_has_point");

line_separation = StaticCString::create("line_separation");

_get_drag_data = StaticCString::create("_get_drag_data");
_drop_data = StaticCString::create("_drop_data");
_can_drop_data = StaticCString::create("_can_drop_data");

baked_light_changed = StaticCString::create("baked_light_changed");
_baked_light_changed = StaticCString::create("_baked_light_changed");

_mouse_enter = StaticCString::create("_mouse_enter");
_mouse_exit = StaticCString::create("_mouse_exit");
_mouse_shape_enter = StaticCString::create("_mouse_shape_enter");
_mouse_shape_exit = StaticCString::create("_mouse_shape_exit");

_pressed = StaticCString::create("_pressed");
_toggled = StaticCString::create("_toggled");

frame_changed = StaticCString::create("frame_changed");
texture_changed = StaticCString::create("texture_changed");

playback_speed = StaticCString::create("playback/speed");
playback_active = StaticCString::create("playback/active");
autoplay = StaticCString::create("autoplay");
blend_times = StaticCString::create("blend_times");
speed = StaticCString::create("speed");
Expand All @@ -193,11 +120,7 @@ SceneStringNames::SceneStringNames() {

default_ = StaticCString::create("default");

_window_group = StaticCString::create("_window_group");
_window_input = StaticCString::create("_window_input");
window_input = StaticCString::create("window_input");
_window_unhandled_input = StaticCString::create("_window_unhandled_input");
_get_contents_minimum_size = StaticCString::create("_get_contents_minimum_size");

theme_changed = StaticCString::create("theme_changed");
parameters_base_path = "parameters/";
Expand All @@ -206,9 +129,4 @@ SceneStringNames::SceneStringNames() {
shader_overrides_group_active = StaticCString::create("_shader_overrides_group_active_");

pressed = StaticCString::create("pressed");

#ifndef DISABLE_DEPRECATED
use_in_baked_light = StaticCString::create("use_in_baked_light");
use_dynamic_gi = StaticCString::create("use_dynamic_gi");
#endif
}
Loading

0 comments on commit 80b9f5b

Please sign in to comment.