Skip to content

Commit 139288c

Browse files
committed
Fix first time of Toggle Last Opened Bottom Panel opens Output panel
1 parent f3af22b commit 139288c

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

editor/editor_dock_manager.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

294294
void 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

900906
void 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

editor/editor_dock_manager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class EditorDockManager : public Object {
121121
void _open_dock_in_window(Control *p_dock, bool p_show_window = true, bool p_reset_size = false);
122122
void _restore_dock_to_saved_window(Control *p_dock, const Dictionary &p_window_dump);
123123

124-
void _dock_move_to_bottom(Control *p_dock);
124+
void _dock_move_to_bottom(Control *p_dock, bool p_visible);
125125
void _dock_remove_from_bottom(Control *p_dock);
126126
bool _is_dock_at_bottom(Control *p_dock);
127127

editor/gui/editor_bottom_panel.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,11 @@ Button *EditorBottomPanel::add_item(String p_text, Control *p_item, const Ref<Sh
178178
bpi.button = tb;
179179
bpi.control = p_item;
180180
bpi.name = p_text;
181-
items.push_back(bpi);
181+
if (p_at_front) {
182+
items.insert(0, bpi);
183+
} else {
184+
items.push_back(bpi);
185+
}
182186

183187
return tb;
184188
}

0 commit comments

Comments
 (0)