diff --git a/scene/main/window.cpp b/scene/main/window.cpp index e7a575f40a6..675be9db297 100644 --- a/scene/main/window.cpp +++ b/scene/main/window.cpp @@ -434,8 +434,12 @@ void Window::set_visible(bool p_visible) { //update transient exclusive if (transient_parent) { if (exclusive && visible) { - ERR_FAIL_COND_MSG(transient_parent->exclusive_child && transient_parent->exclusive_child != this, "Transient parent has another exclusive child."); - transient_parent->exclusive_child = this; +#ifdef TOOLS_ENABLED + if (!(Engine::get_singleton()->is_editor_hint() && get_tree()->get_edited_scene_root() && get_tree()->get_edited_scene_root()->is_ancestor_of(this))) { +#endif + ERR_FAIL_COND_MSG(transient_parent->exclusive_child && transient_parent->exclusive_child != this, "Transient parent has another exclusive child."); + transient_parent->exclusive_child = this; + } } else { if (transient_parent->exclusive_child == this) { transient_parent->exclusive_child = nullptr;