From ef2c3398e6d3bce159d322df64b4a23c46a9acc1 Mon Sep 17 00:00:00 2001 From: Rindbee Date: Thu, 29 Dec 2022 12:58:58 +0800 Subject: [PATCH] Propagate the keying state in the inspector Toggling the keying state does not significantly change the structure of the inspector. So it's ok to propagate the keying state and then use `queue_redraw()` to update the keying icon. --- editor/editor_inspector.cpp | 5 ++++- editor/editor_properties.cpp | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp index 88a1bbb4a9f..9a3eb75416e 100644 --- a/editor/editor_inspector.cpp +++ b/editor/editor_inspector.cpp @@ -3365,7 +3365,10 @@ void EditorInspector::set_keying(bool p_active) { return; } keying = p_active; - update_tree(); + // Propagate the keying state to its editor properties. + Array args; + args.append(keying); + main_vbox->propagate_call(SNAME("set_keying"), args, true); } void EditorInspector::set_read_only(bool p_read_only) { diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 4c9b18efe7d..8c5db444aba 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -4121,6 +4121,8 @@ void EditorPropertyResource::update_property() { if (use_editor) { // Open editor directly and hide other such editors which are currently open. + // The opened editor is the one that edits the sub-resource, so keying state will be toggled to false. + sub_inspector->set_keying(false); _open_editor_pressed(); if (is_inside_tree()) { get_tree()->call_deferred(SNAME("call_group"), "_editor_resource_properties", "_fold_other_editors", this);