mirror of
https://github.com/godotengine/godot.git
synced 2025-12-08 06:09:55 +00:00
Use multiple children for dock SplitContainers
This commit is contained in:
parent
78d91947f6
commit
8dfcae15fd
5 changed files with 39 additions and 59 deletions
|
|
@ -8235,16 +8235,15 @@ EditorNode::EditorNode() {
|
|||
main_vbox->add_child(title_bar);
|
||||
#endif
|
||||
|
||||
left_l_hsplit = memnew(DockSplitContainer);
|
||||
left_l_hsplit->set_name("DockHSplitLeftL");
|
||||
main_vbox->add_child(left_l_hsplit);
|
||||
|
||||
left_l_hsplit->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
main_hsplit = memnew(DockSplitContainer);
|
||||
main_hsplit->set_name("DockHSplitMain");
|
||||
main_hsplit->set_v_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
main_vbox->add_child(main_hsplit);
|
||||
|
||||
left_l_vsplit = memnew(DockSplitContainer);
|
||||
left_l_vsplit->set_name("DockVSplitLeftL");
|
||||
left_l_vsplit->set_vertical(true);
|
||||
left_l_hsplit->add_child(left_l_vsplit);
|
||||
main_hsplit->add_child(left_l_vsplit);
|
||||
|
||||
TabContainer *dock_slot[DockConstants::DOCK_SLOT_MAX];
|
||||
dock_slot[DockConstants::DOCK_SLOT_LEFT_UL] = memnew(TabContainer);
|
||||
|
|
@ -8254,13 +8253,10 @@ EditorNode::EditorNode() {
|
|||
dock_slot[DockConstants::DOCK_SLOT_LEFT_BL]->set_name("DockSlotLeftBL");
|
||||
left_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_BL]);
|
||||
|
||||
left_r_hsplit = memnew(DockSplitContainer);
|
||||
left_r_hsplit->set_name("DockHSplitLeftR");
|
||||
left_l_hsplit->add_child(left_r_hsplit);
|
||||
left_r_vsplit = memnew(DockSplitContainer);
|
||||
left_r_vsplit->set_name("DockVSplitLeftR");
|
||||
left_r_vsplit->set_vertical(true);
|
||||
left_r_hsplit->add_child(left_r_vsplit);
|
||||
main_hsplit->add_child(left_r_vsplit);
|
||||
dock_slot[DockConstants::DOCK_SLOT_LEFT_UR] = memnew(TabContainer);
|
||||
dock_slot[DockConstants::DOCK_SLOT_LEFT_UR]->set_name("DockSlotLeftUR");
|
||||
left_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_UR]);
|
||||
|
|
@ -8268,13 +8264,9 @@ EditorNode::EditorNode() {
|
|||
dock_slot[DockConstants::DOCK_SLOT_LEFT_BR]->set_name("DockSlotLeftBR");
|
||||
left_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_LEFT_BR]);
|
||||
|
||||
main_hsplit = memnew(DockSplitContainer);
|
||||
main_hsplit->set_name("DockHSplitMain");
|
||||
left_r_hsplit->add_child(main_hsplit);
|
||||
VBoxContainer *center_vb = memnew(VBoxContainer);
|
||||
main_hsplit->add_child(center_vb);
|
||||
|
||||
center_vb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
|
||||
main_hsplit->add_child(center_vb);
|
||||
|
||||
center_split = memnew(DockSplitContainer);
|
||||
center_split->set_name("DockVSplitCenter");
|
||||
|
|
@ -8284,14 +8276,10 @@ EditorNode::EditorNode() {
|
|||
center_vb->add_child(center_split);
|
||||
center_split->connect("drag_ended", callable_mp(this, &EditorNode::_bottom_panel_resized));
|
||||
|
||||
right_hsplit = memnew(DockSplitContainer);
|
||||
right_hsplit->set_name("DockHSplitRight");
|
||||
main_hsplit->add_child(right_hsplit);
|
||||
|
||||
right_l_vsplit = memnew(DockSplitContainer);
|
||||
right_l_vsplit->set_name("DockVSplitRightL");
|
||||
right_l_vsplit->set_vertical(true);
|
||||
right_hsplit->add_child(right_l_vsplit);
|
||||
main_hsplit->add_child(right_l_vsplit);
|
||||
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL] = memnew(TabContainer);
|
||||
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL]->set_name("DockSlotRightUL");
|
||||
right_l_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_UL]);
|
||||
|
|
@ -8302,7 +8290,7 @@ EditorNode::EditorNode() {
|
|||
right_r_vsplit = memnew(DockSplitContainer);
|
||||
right_r_vsplit->set_name("DockVSplitRightR");
|
||||
right_r_vsplit->set_vertical(true);
|
||||
right_hsplit->add_child(right_r_vsplit);
|
||||
main_hsplit->add_child(right_r_vsplit);
|
||||
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR] = memnew(TabContainer);
|
||||
dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR]->set_name("DockSlotRightUR");
|
||||
right_r_vsplit->add_child(dock_slot[DockConstants::DOCK_SLOT_RIGHT_UR]);
|
||||
|
|
@ -8318,10 +8306,7 @@ EditorNode::EditorNode() {
|
|||
editor_dock_manager->add_vsplit(right_l_vsplit);
|
||||
editor_dock_manager->add_vsplit(right_r_vsplit);
|
||||
|
||||
editor_dock_manager->add_hsplit(left_l_hsplit);
|
||||
editor_dock_manager->add_hsplit(left_r_hsplit);
|
||||
editor_dock_manager->add_hsplit(main_hsplit);
|
||||
editor_dock_manager->add_hsplit(right_hsplit);
|
||||
editor_dock_manager->set_hsplit(main_hsplit);
|
||||
|
||||
for (int i = 0; i < DockConstants::DOCK_SLOT_BOTTOM; i++) {
|
||||
editor_dock_manager->register_dock_slot((DockConstants::DockSlot)i, dock_slot[i], DockConstants::DOCK_LAYOUT_VERTICAL);
|
||||
|
|
@ -8781,9 +8766,11 @@ EditorNode::EditorNode() {
|
|||
history_dock = memnew(HistoryDock);
|
||||
editor_dock_manager->add_dock(history_dock);
|
||||
|
||||
// Add some offsets to left_r and main hsplits to make LEFT_R and RIGHT_L docks wider than minsize.
|
||||
left_r_hsplit->set_split_offset(280 * EDSCALE);
|
||||
main_hsplit->set_split_offset(-280 * EDSCALE);
|
||||
// Add some offsets to make LEFT_R and RIGHT_L docks wider than minsize.
|
||||
const int dock_hsize = 280;
|
||||
// By default there is only 3 visible, so set 2 split offsets for them.
|
||||
const int dock_hsize_scaled = dock_hsize * EDSCALE;
|
||||
main_hsplit->set_split_offsets({ dock_hsize_scaled, -dock_hsize_scaled });
|
||||
|
||||
// Define corresponding default layout.
|
||||
|
||||
|
|
@ -8794,9 +8781,8 @@ EditorNode::EditorNode() {
|
|||
default_layout->set_value(docks_section, "dock_4", "FileSystem,History");
|
||||
default_layout->set_value(docks_section, "dock_5", "Inspector,Signals,Groups");
|
||||
|
||||
int hsplits[] = { 0, 280, -280, 0 };
|
||||
DEV_ASSERT((int)std_size(hsplits) == editor_dock_manager->get_hsplit_count());
|
||||
for (int i = 0; i < editor_dock_manager->get_hsplit_count(); i++) {
|
||||
int hsplits[] = { 0, dock_hsize, -dock_hsize, 0 };
|
||||
for (int i = 0; i < (int)std_size(hsplits); i++) {
|
||||
default_layout->set_value(docks_section, "dock_hsplit_" + itos(i + 1), hsplits[i]);
|
||||
}
|
||||
for (int i = 0; i < editor_dock_manager->get_vsplit_count(); i++) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue