@@ -277,7 +277,7 @@ void EditorDockManager::_restore_dock_to_saved_window(Control *p_dock, const Dic
277277 p_window_dump.get (" window_screen_rect" , Rect2i ()));
278278}
279279
280- void EditorDockManager::_dock_move_to_bottom (Control *p_dock) {
280+ void EditorDockManager::_dock_move_to_bottom (Control *p_dock, bool p_visible ) {
281281 _move_dock (p_dock, nullptr );
282282
283283 all_docks[p_dock].at_bottom = true ;
@@ -288,7 +288,7 @@ void EditorDockManager::_dock_move_to_bottom(Control *p_dock) {
288288 // Force docks moved to the bottom to appear first in the list, and give them their associated shortcut to toggle their bottom panel.
289289 Button *bottom_button = EditorNode::get_bottom_panel ()->add_item (all_docks[p_dock].title , p_dock, all_docks[p_dock].shortcut , true );
290290 bottom_button->connect (SceneStringName (gui_input), callable_mp (this , &EditorDockManager::_bottom_dock_button_gui_input).bind (bottom_button).bind (p_dock));
291- EditorNode::get_bottom_panel ()->make_item_visible (p_dock);
291+ EditorNode::get_bottom_panel ()->make_item_visible (p_dock, p_visible );
292292}
293293
294294void EditorDockManager::_dock_remove_from_bottom (Control *p_dock) {
@@ -548,11 +548,13 @@ void EditorDockManager::load_docks_from_config(Ref<ConfigFile> p_layout, const S
548548 // Don't open disabled docks.
549549 continue ;
550550 }
551+ bool at_bottom = false ;
551552 if (restore_window_on_load && floating_docks_dump.has (name)) {
552553 all_docks[dock].previous_at_bottom = dock_bottom.has (name);
553554 _restore_dock_to_saved_window (dock, floating_docks_dump[name]);
554555 } else if (dock_bottom.has (name)) {
555- _dock_move_to_bottom (dock);
556+ _dock_move_to_bottom (dock, false );
557+ at_bottom = true ;
556558 } else if (i >= 0 ) {
557559 _move_dock (dock, dock_slot[i], 0 );
558560 }
@@ -564,7 +566,11 @@ void EditorDockManager::load_docks_from_config(Ref<ConfigFile> p_layout, const S
564566 } else {
565567 // Make sure it is open.
566568 all_docks[dock].open = true ;
567- dock->show ();
569+ // It's important to not update the visibility of bottom panels.
570+ // Visibility of bottom panels are managed in EditorBottomPanel.
571+ if (!at_bottom) {
572+ dock->show ();
573+ }
568574 }
569575
570576 all_docks[dock].dock_slot_index = i;
@@ -668,7 +674,7 @@ void EditorDockManager::open_dock(Control *p_dock, bool p_set_current) {
668674
669675 // Open dock to its previous location.
670676 if (all_docks[p_dock].previous_at_bottom ) {
671- _dock_move_to_bottom (p_dock);
677+ _dock_move_to_bottom (p_dock, true );
672678 } else if (all_docks[p_dock].dock_slot_index != DOCK_SLOT_NONE) {
673679 TabContainer *slot = dock_slot[all_docks[p_dock].dock_slot_index ];
674680 int tab_index = all_docks[p_dock].previous_tab_index ;
@@ -899,7 +905,7 @@ void DockContextPopup::_float_dock() {
899905
900906void DockContextPopup::_move_dock_to_bottom () {
901907 hide ();
902- dock_manager->_dock_move_to_bottom (context_dock);
908+ dock_manager->_dock_move_to_bottom (context_dock, true );
903909 dock_manager->_update_layout ();
904910}
905911
0 commit comments