Skip to content

Docking: saving layout #8033

Open
Open
@Zaryob

Description

@Zaryob

Version/Branch of Dear ImGui:

Branch: docking, Commit: 7937732

Back-ends:

imgui_impl_opengl3.cpp + imgui_impl_XXX.cpp

Compiler, OS:

macOS + Clang 12, GCC, Windows + MSVC

Full config/build information:

No response

Details:

I'm trying to crate a docking area with following code:


    // Get the available space under the buttons
    ImVec2 availableSpaceForDocking = ImGui::GetContentRegionAvail();

    // Create a child region with a dockspace in the remaining space
    ImGui::BeginChild("DockingRegion", availableSpaceForDocking, false, ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize);

    ImGuiID dockspace_id = ImGui::GetID("DockSpace");
    ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), DOCKSPACE_FLAGS);

    if (firstMenuRender) {
        ImGui::DockBuilderRemoveNode(dockspace_id);
        ImGui::DockBuilderAddNode(dockspace_id, DOCKSPACE_FLAGS);
        ImGui::DockBuilderSetNodeSize(dockspace_id, availableSpaceForDocking);

        ImGuiID dockspace_left = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Left, 0.2f, nullptr, &dockspace_id);
        ImGui::DockBuilderDockWindow("Waterfall", dockspace_id);
        ImGui::DockBuilderFinish(dockspace_id);

        ImGuiID dockspace_left_down = ImGui::DockBuilderSplitNode(dockspace_left, ImGuiDir_Down, 0.2f, nullptr, &dockspace_left);

        ImGui::DockBuilderDockWindow("Menu", dockspace_left);
        ImGui::DockBuilderDockWindow("Debug", dockspace_left_down);
        ImGui::DockBuilderFinish(dockspace_left);

    }
    ImGui::EndChild();

After that I'm filling "Menu", "Debug" and "Waterfall" windows. But If I want to save this layout to ini file all of my layout corrupts.

Inside of my ini file is that:

[Window][Waterfall]
Pos=308,87
Size=1196,753
Collapsed=0
DockId=0x00000002,0

[Window][Menu]
Pos=8,87
Size=298,600
Collapsed=0
DockId=0x00000003,0

[Window][Debug]
Pos=8,689
Size=298,151
Collapsed=0
DockId=0x00000004,0

[Window][Main]
Pos=0,0
Size=1512,848
Collapsed=0

[Window][Debug##Default]
Pos=60,60
Size=400,400
Collapsed=0

[Window][Credits]
Pos=450,305
Size=612,238
Collapsed=0

[Docking][Data]
DockSpace     ID=0x1E887784 Window=0xE8252DDA Pos=8,87 Size=1496,753 Split=X
  DockNode    ID=0x00000001 Parent=0x1E887784 SizeRef=298,753 Split=Y
    DockNode  ID=0x00000003 Parent=0x00000001 SizeRef=298,600 Selected=0xA57AB2C6
    DockNode  ID=0x00000004 Parent=0x00000001 SizeRef=298,151 Selected=0x392A5ADD
  DockNode    ID=0x00000002 Parent=0x1E887784 SizeRef=1196,753 Selected=0xDF29319E

Original layout:
Screenshot 2024-10-01 at 20 56 40

After ini file loaded:
Screenshot 2024-10-01 at 20 58 22

It seems all windows goes 0,0 point.

How does it possible? Is there any solution?

Edit:

When I save this layout it seems configuration on ini file is corrupted:

[Window][Waterfall]
Pos=8,87
Size=1360,687
Collapsed=0

[Window][Menu]
Pos=8,87
Size=300,547
Collapsed=0

[Window][Debug]
Pos=0,0
Size=213,268
Collapsed=0

[Window][Main]
Pos=0,0
Size=1512,782
Collapsed=0

[Window][Debug##Default]
Pos=60,60
Size=400,400
Collapsed=0

[Window][Credits]
Pos=450,305
Size=612,238
Collapsed=0

[Docking][Data]
DockSpace ID=0x1E887784 Window=0xE8252DDA Pos=8,87 Size=1496,687 CentralNode=1

Screenshots/Video:

No response

Minimal, Complete and Verifiable Example code:

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions