summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2023-01-29 02:22:41 +0100
committerGitHub <noreply@github.com>2023-01-29 02:22:41 +0100
commit70a7313fbe8da6e57b447a503dcb570da42b65bb (patch)
tree922244dd22d9021bc80fae1fa690eec2a645cdfc
parent4011a0915efd90854247a609651d7e31b412b1da (diff)
parent3f17bfad8d5a83087dd03b8f22feaaf5cbf97519 (diff)
Merge pull request #72272 from KoBeWi/regressiuum_mobile
Fix editors potentially being used twice
-rw-r--r--editor/editor_node.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 0d5c820a3c..8b28319a1d 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -2096,14 +2096,25 @@ void EditorNode::edit_item(Object *p_object, Object *p_editing_owner) {
if (!item_plugins.is_empty()) {
ObjectID owner_id = p_editing_owner->get_instance_id();
+ List<EditorPlugin *> to_remove;
for (EditorPlugin *plugin : active_plugins[owner_id]) {
if (!item_plugins.has(plugin)) {
+ // Remove plugins no longer used by this editing owner.
+ to_remove.push_back(plugin);
plugin->make_visible(false);
plugin->edit(nullptr);
}
}
+ for (EditorPlugin *plugin : to_remove) {
+ active_plugins[owner_id].erase(plugin);
+ }
+
for (EditorPlugin *plugin : item_plugins) {
+ if (active_plugins[owner_id].has(plugin)) {
+ continue;
+ }
+
for (KeyValue<ObjectID, HashSet<EditorPlugin *>> &kv : active_plugins) {
if (kv.key != owner_id) {
EditorPropertyResource *epres = Object::cast_to<EditorPropertyResource>(ObjectDB::get_instance(kv.key));