#ImGui center docking

14 messages · Page 1 of 1 (latest)

tame trout
#

Hey! I'm trying to have a window docked to the center of the screen, but I cannot figure out how to do it properly. I'd like for the "Center" window to take up all the remaining space. I cannot even resize it manually by dragging the window corners, it refuses to go beyond that point. The gap marked with red should be taken up by the "Center" window.

split basaltBOT
#

When your question is answered use !solved to mark the question as resolved.

Remember to ask specific questions, provide necessary details, and reduce your question to its simplest form. For tips on how to ask a good question use !howto ask.

tame trout
#
void DockspaceBuild( ImGuiID dockspaceID, bool& bDockspaceBuilt )
{
    bDockspaceBuilt = true;
    ImGuiViewport* pViewport = ImGui::GetMainViewport();

    ImGui::DockBuilderRemoveNode( dockspaceID );
    ImGui::DockBuilderAddNode( dockspaceID, ImGuiDockNodeFlags_DockSpace );
    ImGui::DockBuilderSetNodeSize( dockspaceID, pViewport->Size );

    ImGuiID dock_id_main = dockspaceID;
    ImGuiID dock_id_top = ImGui::DockBuilderSplitNode( dockspaceID, ImGuiDir_Up, 0.15f, NULL, &dock_id_main );
    ImGuiID dock_id_left = ImGui::DockBuilderSplitNode( dock_id_main, ImGuiDir_Left, 0.15f, NULL, &dock_id_main );
    ImGuiID dock_id_right = ImGui::DockBuilderSplitNode( dock_id_main, ImGuiDir_Right, 0.25f, NULL, &dock_id_main );
    ImGuiID dock_id_rightBottom = ImGui::DockBuilderSplitNode( dock_id_right, ImGuiDir_Down, 0.20f, NULL, &dock_id_right );
    ImGuiID dock_id_bottom = ImGui::DockBuilderSplitNode( dock_id_main, ImGuiDir_Down, 0.25f, NULL, &dock_id_main );
    ImGuiID dock_id_bottomC = ImGui::DockBuilderSplitNode( dock_id_bottom, ImGuiDir_Down, 0.45f, NULL, &dock_id_bottom );
    ImGuiID dock_id_center = ImGui::DockBuilderSplitNode( dock_id_main, ImGuiDir_Down, 1.0f, NULL, &dock_id_main );

    ImGui::DockBuilderDockWindow( "Top", dock_id_top );
    ImGui::DockBuilderDockWindow( "Left", dock_id_left );
    ImGui::DockBuilderDockWindow( "Right", dock_id_right );
    ImGui::DockBuilderDockWindow( "Bottom Right", dock_id_rightBottom );
    ImGui::DockBuilderDockWindow( "Bottom", dock_id_bottom );
    ImGui::DockBuilderDockWindow( "Console", dock_id_bottomC );
    ImGui::DockBuilderDockWindow( "Center", dock_id_center );

    ImGui::DockBuilderFinish( dockspaceID );
}
#
void DockspaceDraw()
{
    static ImGuiID dockspaceID = 0;
    static bool bDockSpaceBuilt = false;
    ImGuiWindowFlags windowFlags = 0;
    windowFlags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove;
    windowFlags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus | ImGuiWindowFlags_NoResize;

    dockspaceID = ImGui::GetID( "MyDockspace" );
    ImGuiViewport* pViewport = ImGui::GetMainViewport();
    ImGui::SetNextWindowPos( pViewport->Pos );
    ImGui::SetNextWindowSize( pViewport->Size );
    ImGui::SetNextWindowViewport( pViewport->ID );

    if ( !bDockSpaceBuilt ) {
        DockspaceBuild( dockspaceID, bDockSpaceBuilt );
    }

    ImGui::Begin( "Dockspace", nullptr, windowFlags );
    ImGui::DockSpace( dockspaceID, ImVec2( 0, 0 ), ImGuiDockNodeFlags_None );
    ImGui::End();
}

....

DockspaceDraw();
ImGui::Begin( "Center", nullptr );
ImGui::End();
ImGui::Begin( "Left", nullptr );
ImGui::End();
ImGui::Begin( "Right", nullptr );
ImGui::End();
ImGui::Begin( "Top", nullptr );
ImGui::End();
ImGui::Begin( "Bottom Right", nullptr );
ImGui::End();
ImGui::Begin( "Bottom", nullptr );
ImGui::End();
ImGui::Begin( "Console", nullptr );
ImGui::End();
paper apex
#

I think you just split one time too many

#

that last split is splitting the center area into center and the red bit becomes main

#

(also idk what splitting with a ratio of 1.0 is meant to do :P)

tame trout
#

oh, I see what you mean!

#

so it should be just

ImGui::DockBuilderDockWindow( "Center", dock_main_id );

without splitting

paper apex
#

after the 6th split, main is that whole center area

#

yeah

tame trout
#

sweet, thank you mate :)

#

happy holidays!

#

!solved