MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / DockContextRemoveNode

Method DockContextRemoveNode

extern/imgui/imgui.cpp:14751–14780  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14749}
14750
14751static void ImGui::DockContextRemoveNode(ImGuiContext* ctx, ImGuiDockNode* node, bool merge_sibling_into_parent_node)
14752{
14753 ImGuiContext& g = *ctx;
14754 ImGuiDockContext* dc = &ctx->DockContext;
14755
14756 IMGUI_DEBUG_LOG_DOCKING("[docking] DockContextRemoveNode 0x%08X\n", node->ID);
14757 IM_ASSERT(DockContextFindNodeByID(ctx, node->ID) == node);
14758 IM_ASSERT(node->ChildNodes[0] == NULL && node->ChildNodes[1] == NULL);
14759 IM_ASSERT(node->Windows.Size == 0);
14760
14761 if (node->HostWindow)
14762 node->HostWindow->DockNodeAsHost = NULL;
14763
14764 ImGuiDockNode* parent_node = node->ParentNode;
14765 const bool merge = (merge_sibling_into_parent_node && parent_node != NULL);
14766 if (merge)
14767 {
14768 IM_ASSERT(parent_node->ChildNodes[0] == node || parent_node->ChildNodes[1] == node);
14769 ImGuiDockNode* sibling_node = (parent_node->ChildNodes[0] == node ? parent_node->ChildNodes[1] : parent_node->ChildNodes[0]);
14770 DockNodeTreeMerge(&g, parent_node, sibling_node);
14771 }
14772 else
14773 {
14774 for (int n = 0; parent_node && n < IM_ARRAYSIZE(parent_node->ChildNodes); n++)
14775 if (parent_node->ChildNodes[n] == node)
14776 node->ParentNode->ChildNodes[n] = NULL;
14777 dc->Nodes.SetVoidPtr(node->ID, NULL);
14778 IM_DELETE(node);
14779 }
14780}
14781
14782static int IMGUI_CDECL DockNodeComparerDepthMostFirst(const void* lhs, const void* rhs)
14783{

Callers

nothing calls this directly

Calls 2

IM_DELETEFunction · 0.85
SetVoidPtrMethod · 0.80

Tested by

no test coverage detected