diff --git a/editor/docks/editor_dock_manager.cpp b/editor/docks/editor_dock_manager.cpp index 15ff136f02e..1c7d256d9aa 100644 --- a/editor/docks/editor_dock_manager.cpp +++ b/editor/docks/editor_dock_manager.cpp @@ -600,6 +600,13 @@ void EditorDockManager::save_docks_to_config(Ref p_layout, const Str } } + // Clear the special dock slot for docks without default slots (index -1 = dock_0). + // This prevents closed docks from being infinitely appended to the config on each save. + const String no_slot_config_key = "dock_0"; + if (p_layout->has_section_key(p_section, no_slot_config_key)) { + p_layout->erase_section_key(p_section, no_slot_config_key); + } + // Save docks in windows. Dictionary floating_docks_dump; for (WindowWrapper *wrapper : dock_windows) {