summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuele Panzeri <samuele.panzeri@gmail.com>2023-05-18 19:22:22 +0200
committerYuri Sizov <yuris@humnom.net>2023-05-18 19:22:22 +0200
commit912b3afb96ab7a4d094a2fee86591ba7376d0aac (patch)
tree2f81e79b9b4f9e2bf2a6d698013a0682d047c05e
parentfd8f38c240bf045ce2ba1891a9a68ff088234215 (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.cpp5
-rw-r--r--editor/editor_inspector.h1
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.cpp13
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.h3
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();