diff options
author | Samuele Panzeri <samuele.panzeri@gmail.com> | 2023-05-18 19:22:22 +0200 |
---|---|---|
committer | Yuri Sizov <yuris@humnom.net> | 2023-05-18 19:22:22 +0200 |
commit | 912b3afb96ab7a4d094a2fee86591ba7376d0aac (patch) | |
tree | 2f81e79b9b4f9e2bf2a6d698013a0682d047c05e | |
parent | fd8f38c240bf045ce2ba1891a9a68ff088234215 (diff) |
Fix skeleton 3d editor crash in RC3
Control notifies a theme changed before the editor has entered the tree
(cherry picked from commit a103cd76bbabbaac05c1024b0fcc73745199cbfb)
-rw-r--r-- | editor/editor_inspector.cpp | 5 | ||||
-rw-r--r-- | editor/editor_inspector.h | 1 | ||||
-rw-r--r-- | editor/plugins/skeleton_3d_editor_plugin.cpp | 13 | ||||
-rw-r--r-- | editor/plugins/skeleton_3d_editor_plugin.h | 3 |
4 files changed, 13 insertions, 9 deletions
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 8498ddecd6..8118e202fe 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -1516,6 +1516,11 @@ void EditorInspectorSection::fold() { queue_redraw(); } +void EditorInspectorSection::set_bg_color(const Color &p_bg_color) { + bg_color = p_bg_color; + queue_redraw(); +} + bool EditorInspectorSection::has_revertable_properties() const { return !revertable_properties.is_empty(); } diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h index 76fe929ce4..51a1164350 100644 --- a/editor/editor_inspector.h +++ b/editor/editor_inspector.h @@ -297,6 +297,7 @@ public: VBoxContainer *get_vbox(); void unfold(); void fold(); + void set_bg_color(const Color &p_bg_color); bool has_revertable_properties() const; void property_can_revert_changed(const String &p_path, bool p_can_revert); diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp index 285d2e77b2..3d442d24e4 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.cpp +++ b/editor/plugins/skeleton_3d_editor_plugin.cpp @@ -695,9 +695,6 @@ void Skeleton3DEditor::update_joint_tree() { } } -void Skeleton3DEditor::update_editors() { -} - void Skeleton3DEditor::create_editors() { set_h_size_flags(SIZE_EXPAND_FILL); set_focus_mode(FOCUS_ALL); @@ -797,10 +794,8 @@ void Skeleton3DEditor::create_editors() { animation_hb->add_child(key_insert_all_button); // Bone tree. - const Color section_color = get_theme_color(SNAME("prop_subsection"), SNAME("Editor")); - - EditorInspectorSection *bones_section = memnew(EditorInspectorSection); - bones_section->setup("bones", "Bones", skeleton, section_color, true); + bones_section = memnew(EditorInspectorSection); + bones_section->setup("bones", "Bones", skeleton, Color(0.0f, 0.0, 0.0f), true); add_child(bones_section); bones_section->unfold(); @@ -831,7 +826,6 @@ void Skeleton3DEditor::create_editors() { void Skeleton3DEditor::_notification(int p_what) { switch (p_what) { case NOTIFICATION_ENTER_TREE: { - create_editors(); update_joint_tree(); joint_tree->connect("item_selected", callable_mp(this, &Skeleton3DEditor::_joint_tree_selection_changed)); @@ -857,6 +851,7 @@ void Skeleton3DEditor::_notification(int p_what) { key_scale_button->set_icon(get_theme_icon(SNAME("KeyScale"), SNAME("EditorIcons"))); key_insert_button->set_icon(get_theme_icon(SNAME("Key"), SNAME("EditorIcons"))); key_insert_all_button->set_icon(get_theme_icon(SNAME("NewKey"), SNAME("EditorIcons"))); + bones_section->set_bg_color(get_theme_color(SNAME("prop_subsection"), SNAME("Editor"))); update_joint_tree(); } break; @@ -945,6 +940,8 @@ void fragment() { handles_mesh_instance->set_cast_shadows_setting(GeometryInstance3D::SHADOW_CASTING_SETTING_OFF); handles_mesh.instantiate(); handles_mesh_instance->set_mesh(handles_mesh); + + create_editors(); } void Skeleton3DEditor::update_bone_original() { diff --git a/editor/plugins/skeleton_3d_editor_plugin.h b/editor/plugins/skeleton_3d_editor_plugin.h index 3eb840cfa9..f5184976a4 100644 --- a/editor/plugins/skeleton_3d_editor_plugin.h +++ b/editor/plugins/skeleton_3d_editor_plugin.h @@ -132,6 +132,8 @@ class Skeleton3DEditor : public VBoxContainer { Button *key_insert_button = nullptr; Button *key_insert_all_button = nullptr; + EditorInspectorSection *bones_section = nullptr; + EditorFileDialog *file_dialog = nullptr; bool keyable = false; @@ -146,7 +148,6 @@ class Skeleton3DEditor : public VBoxContainer { EditorFileDialog *file_export_lib = nullptr; void update_joint_tree(); - void update_editors(); void create_editors(); |