summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilc 'Tokage' Renew <tokage.it.lab@gmail.com>2022-03-08 19:00:33 +0900
committerSilc 'Tokage' Renew <tokage.it.lab@gmail.com>2022-03-08 19:26:27 +0900
commit40f2eefe7821daf6b38edc3153bfb0c23b405590 (patch)
treee82ba503b8956c499e42e720e2553251935c781e
parent86b0faf2ec3b76a09e898fcaa7dbfdd56189bed8 (diff)
fix deselect behavior for Skeleton gizmo
-rw-r--r--editor/plugins/skeleton_3d_editor_plugin.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/editor/plugins/skeleton_3d_editor_plugin.cpp b/editor/plugins/skeleton_3d_editor_plugin.cpp
index aec1a09e48..aadc7a2e66 100644
--- a/editor/plugins/skeleton_3d_editor_plugin.cpp
+++ b/editor/plugins/skeleton_3d_editor_plugin.cpp
@@ -528,22 +528,25 @@ void Skeleton3DEditor::move_skeleton_bone(NodePath p_skeleton_path, int32_t p_se
void Skeleton3DEditor::_joint_tree_selection_changed() {
TreeItem *selected = joint_tree->get_selected();
- if (!selected) {
- return;
- }
- const String path = selected->get_metadata(0);
- if (!path.begins_with("bones/")) {
- return;
+ if (selected) {
+ const String path = selected->get_metadata(0);
+ if (!path.begins_with("bones/")) {
+ return;
+ }
+ const int b_idx = path.get_slicec('/', 1).to_int();
+ selected_bone = b_idx;
+ if (pose_editor) {
+ const String bone_path = "bones/" + itos(b_idx) + "/";
+ pose_editor->set_target(bone_path);
+ pose_editor->set_keyable(keyable);
+ }
}
- const int b_idx = path.get_slicec('/', 1).to_int();
- selected_bone = b_idx;
- if (pose_editor) {
- const String bone_path = "bones/" + itos(b_idx) + "/";
- pose_editor->set_target(bone_path);
- pose_editor->set_keyable(keyable);
+
+ if (pose_editor && pose_editor->is_inside_tree()) {
pose_editor->set_visible(selected);
}
set_bone_options_enabled(selected);
+
_update_properties();
_update_gizmo_visible();
}