mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 15:11:05 +01:00 
			
		
		
		
	Docking: Internals: Renamed members from XxxxID to XxxxxId to be more consistent with rest of the codebase (still some inconsistency left that are harder to fix)
This commit is contained in:
		
							
								
								
									
										124
									
								
								imgui.cpp
									
									
									
									
									
								
							
							
						
						
									
										124
									
								
								imgui.cpp
									
									
									
									
									
								
							@@ -11310,16 +11310,16 @@ struct ImGuiDockPreviewData
 | 
			
		||||
struct ImGuiDockNodeSettings
 | 
			
		||||
{
 | 
			
		||||
    ImGuiID             ID;
 | 
			
		||||
    ImGuiID             ParentNodeID;
 | 
			
		||||
    ImGuiID             ParentWindowID;
 | 
			
		||||
    ImGuiID             SelectedWindowID;
 | 
			
		||||
    ImGuiID             ParentNodeId;
 | 
			
		||||
    ImGuiID             ParentWindowId;
 | 
			
		||||
    ImGuiID             SelectedWindowId;
 | 
			
		||||
    signed char         SplitAxis;
 | 
			
		||||
    char                Depth;
 | 
			
		||||
    ImGuiDockNodeFlags  Flags;                  // NB: We save individual flags one by one in ascii format (ImGuiDockNodeFlags_SavedFlagsMask_)
 | 
			
		||||
    ImVec2ih            Pos;
 | 
			
		||||
    ImVec2ih            Size;
 | 
			
		||||
    ImVec2ih            SizeRef;
 | 
			
		||||
    ImGuiDockNodeSettings() { ID = ParentNodeID = ParentWindowID = SelectedWindowID = 0; SplitAxis = ImGuiAxis_None; Depth = 0; Flags = ImGuiDockNodeFlags_None; }
 | 
			
		||||
    ImGuiDockNodeSettings() { ID = ParentNodeId = ParentWindowId = SelectedWindowId = 0; SplitAxis = ImGuiAxis_None; Depth = 0; Flags = ImGuiDockNodeFlags_None; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct ImGuiDockContext
 | 
			
		||||
@@ -11615,8 +11615,8 @@ static int IMGUI_CDECL DockNodeComparerDepthMostFirst(const void* lhs, const voi
 | 
			
		||||
struct ImGuiDockContextPruneNodeData
 | 
			
		||||
{
 | 
			
		||||
    int         CountWindows, CountChildWindows, CountChildNodes;
 | 
			
		||||
    ImGuiID     RootID;
 | 
			
		||||
    ImGuiDockContextPruneNodeData() { CountWindows = CountChildWindows = CountChildNodes = 0; RootID = 0; }
 | 
			
		||||
    ImGuiID     RootId;
 | 
			
		||||
    ImGuiDockContextPruneNodeData() { CountWindows = CountChildWindows = CountChildNodes = 0; RootId = 0; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Garbage collect unused nodes (run once at init time)
 | 
			
		||||
@@ -11633,10 +11633,10 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
 | 
			
		||||
    for (int settings_n = 0; settings_n < dc->SettingsNodes.Size; settings_n++)
 | 
			
		||||
    {
 | 
			
		||||
        ImGuiDockNodeSettings* settings = &dc->SettingsNodes[settings_n];
 | 
			
		||||
        ImGuiDockContextPruneNodeData* parent_data = settings->ParentNodeID ? pool.GetByKey(settings->ParentNodeID) : 0;
 | 
			
		||||
        pool.GetOrAddByKey(settings->ID)->RootID = parent_data ? parent_data->RootID : settings->ID;
 | 
			
		||||
        if (settings->ParentNodeID)
 | 
			
		||||
            pool.GetOrAddByKey(settings->ParentNodeID)->CountChildNodes++;
 | 
			
		||||
        ImGuiDockContextPruneNodeData* parent_data = settings->ParentNodeId ? pool.GetByKey(settings->ParentNodeId) : 0;
 | 
			
		||||
        pool.GetOrAddByKey(settings->ID)->RootId = parent_data ? parent_data->RootId : settings->ID;
 | 
			
		||||
        if (settings->ParentNodeId)
 | 
			
		||||
            pool.GetOrAddByKey(settings->ParentNodeId)->CountChildNodes++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Count reference to dock ids from dockspaces
 | 
			
		||||
@@ -11644,8 +11644,8 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
 | 
			
		||||
    for (int settings_n = 0; settings_n < dc->SettingsNodes.Size; settings_n++)
 | 
			
		||||
    {
 | 
			
		||||
        ImGuiDockNodeSettings* settings = &dc->SettingsNodes[settings_n];
 | 
			
		||||
        if (settings->ParentWindowID != 0)
 | 
			
		||||
            if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->ParentWindowID))
 | 
			
		||||
        if (settings->ParentWindowId != 0)
 | 
			
		||||
            if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->ParentWindowId))
 | 
			
		||||
                if (window_settings->DockId)
 | 
			
		||||
                    if (ImGuiDockContextPruneNodeData* data = pool.GetByKey(window_settings->DockId))
 | 
			
		||||
                        data->CountChildNodes++;
 | 
			
		||||
@@ -11658,7 +11658,7 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
 | 
			
		||||
            if (ImGuiDockContextPruneNodeData* data = pool.GetByKey(dock_id))
 | 
			
		||||
            {
 | 
			
		||||
                data->CountWindows++;
 | 
			
		||||
                if (ImGuiDockContextPruneNodeData* data_root = (data->RootID == dock_id) ? data : pool.GetByKey(data->RootID))
 | 
			
		||||
                if (ImGuiDockContextPruneNodeData* data_root = (data->RootId == dock_id) ? data : pool.GetByKey(data->RootId))
 | 
			
		||||
                    data_root->CountChildWindows++;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -11669,11 +11669,11 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
 | 
			
		||||
        ImGuiDockContextPruneNodeData* data = pool.GetByKey(settings->ID);
 | 
			
		||||
        if (data->CountWindows > 1)
 | 
			
		||||
            continue;
 | 
			
		||||
        ImGuiDockContextPruneNodeData* data_root = (data->RootID == settings->ID) ? data : pool.GetByKey(data->RootID);
 | 
			
		||||
        ImGuiDockContextPruneNodeData* data_root = (data->RootId == settings->ID) ? data : pool.GetByKey(data->RootId);
 | 
			
		||||
 | 
			
		||||
        bool remove = false;
 | 
			
		||||
        remove |= (data->CountWindows == 1 && settings->ParentNodeID == 0 && data->CountChildNodes == 0 && !(settings->Flags & ImGuiDockNodeFlags_CentralNode));  // Floating root node with only 1 window
 | 
			
		||||
        remove |= (data->CountWindows == 0 && settings->ParentNodeID == 0 && data->CountChildNodes == 0); // Leaf nodes with 0 window
 | 
			
		||||
        remove |= (data->CountWindows == 1 && settings->ParentNodeId == 0 && data->CountChildNodes == 0 && !(settings->Flags & ImGuiDockNodeFlags_CentralNode));  // Floating root node with only 1 window
 | 
			
		||||
        remove |= (data->CountWindows == 0 && settings->ParentNodeId == 0 && data->CountChildNodes == 0); // Leaf nodes with 0 window
 | 
			
		||||
        remove |= (data_root->CountChildWindows == 0);
 | 
			
		||||
        if (remove)
 | 
			
		||||
        {
 | 
			
		||||
@@ -11693,7 +11693,7 @@ static void ImGui::DockContextBuildNodesFromSettings(ImGuiContext* ctx, ImGuiDoc
 | 
			
		||||
        if (settings->ID == 0)
 | 
			
		||||
            continue;
 | 
			
		||||
        ImGuiDockNode* node = DockContextAddNode(ctx, settings->ID);
 | 
			
		||||
        node->ParentNode = settings->ParentNodeID ? DockContextFindNodeByID(ctx, settings->ParentNodeID) : NULL;
 | 
			
		||||
        node->ParentNode = settings->ParentNodeId ? DockContextFindNodeByID(ctx, settings->ParentNodeId) : NULL;
 | 
			
		||||
        node->Pos = ImVec2(settings->Pos.x, settings->Pos.y);
 | 
			
		||||
        node->Size = ImVec2(settings->Size.x, settings->Size.y);
 | 
			
		||||
        node->SizeRef = ImVec2(settings->SizeRef.x, settings->SizeRef.y);
 | 
			
		||||
@@ -11702,7 +11702,7 @@ static void ImGui::DockContextBuildNodesFromSettings(ImGuiContext* ctx, ImGuiDoc
 | 
			
		||||
            node->ParentNode->ChildNodes[0] = node;
 | 
			
		||||
        else if (node->ParentNode && node->ParentNode->ChildNodes[1] == NULL)
 | 
			
		||||
            node->ParentNode->ChildNodes[1] = node;
 | 
			
		||||
        node->SelectedTabID = settings->SelectedWindowID;
 | 
			
		||||
        node->SelectedTabId = settings->SelectedWindowId;
 | 
			
		||||
        node->SplitAxis = settings->SplitAxis;
 | 
			
		||||
        node->LocalFlags |= (settings->Flags & ImGuiDockNodeFlags_SavedFlagsMask_);
 | 
			
		||||
 | 
			
		||||
@@ -11880,7 +11880,7 @@ void ImGui::DockContextProcessDock(ImGuiContext* ctx, ImGuiDockRequest* req)
 | 
			
		||||
                {
 | 
			
		||||
                    // Central node property needs to be moved to a leaf node, pick the last focused one.
 | 
			
		||||
                    // FIXME-DOCK: If we had to transfer other flags here, what would the policy be?
 | 
			
		||||
                    ImGuiDockNode* last_focused_node = DockContextFindNodeByID(ctx, payload_node->LastFocusedNodeID);
 | 
			
		||||
                    ImGuiDockNode* last_focused_node = DockContextFindNodeByID(ctx, payload_node->LastFocusedNodeId);
 | 
			
		||||
                    IM_ASSERT(last_focused_node != NULL);
 | 
			
		||||
                    ImGuiDockNode* last_focused_root_node = DockNodeGetRootNode(last_focused_node);
 | 
			
		||||
                    IM_ASSERT(last_focused_root_node == DockNodeGetRootNode(payload_node));
 | 
			
		||||
@@ -12026,9 +12026,9 @@ ImGuiDockNode::ImGuiDockNode(ImGuiID id)
 | 
			
		||||
    HostWindow = VisibleWindow = NULL;
 | 
			
		||||
    CentralNode = OnlyNodeWithWindows = NULL;
 | 
			
		||||
    LastFrameAlive = LastFrameActive = LastFrameFocused = -1;
 | 
			
		||||
    LastFocusedNodeID = 0;
 | 
			
		||||
    SelectedTabID = 0;
 | 
			
		||||
    WantCloseTabID = 0;
 | 
			
		||||
    LastFocusedNodeId = 0;
 | 
			
		||||
    SelectedTabId = 0;
 | 
			
		||||
    WantCloseTabId = 0;
 | 
			
		||||
    AuthorityForPos = AuthorityForSize = ImGuiDataAuthority_DockNode;
 | 
			
		||||
    AuthorityForViewport = ImGuiDataAuthority_Auto;
 | 
			
		||||
    IsVisible = true;
 | 
			
		||||
@@ -12098,7 +12098,7 @@ static void ImGui::DockNodeAddWindow(ImGuiDockNode* node, ImGuiWindow* window, b
 | 
			
		||||
        if (node->TabBar == NULL)
 | 
			
		||||
        {
 | 
			
		||||
            DockNodeAddTabBar(node);
 | 
			
		||||
            node->TabBar->SelectedTabId = node->TabBar->NextSelectedTabId = node->SelectedTabID;
 | 
			
		||||
            node->TabBar->SelectedTabId = node->TabBar->NextSelectedTabId = node->SelectedTabId;
 | 
			
		||||
 | 
			
		||||
            // Add existing windows
 | 
			
		||||
            for (int n = 0; n < node->Windows.Size - 1; n++)
 | 
			
		||||
@@ -12321,7 +12321,7 @@ static void ImGui::DockNodeUpdateVisibleFlagAndInactiveChilds(ImGuiDockNode* nod
 | 
			
		||||
        bool node_was_active = (node->LastFrameActive + 1 == g.FrameCount);
 | 
			
		||||
        bool remove = false;
 | 
			
		||||
        remove |= node_was_active && (window->LastFrameActive + 1 < g.FrameCount);
 | 
			
		||||
        remove |= node_was_active && (node->WantCloseAll || node->WantCloseTabID == window->ID) && window->HasCloseButton && !(window->Flags & ImGuiWindowFlags_UnsavedDocument);  // Submit all _expected_ closure from last frame
 | 
			
		||||
        remove |= node_was_active && (node->WantCloseAll || node->WantCloseTabId == window->ID) && window->HasCloseButton && !(window->Flags & ImGuiWindowFlags_UnsavedDocument);  // Submit all _expected_ closure from last frame
 | 
			
		||||
        remove |= (window->DockTabWantClose);
 | 
			
		||||
        if (remove)
 | 
			
		||||
        {
 | 
			
		||||
@@ -12387,8 +12387,8 @@ static void ImGui::DockNodeUpdateForRootNode(ImGuiDockNode* node)
 | 
			
		||||
    DockNodeFindInfo(node, &results);
 | 
			
		||||
    node->CentralNode = results.CentralNode;
 | 
			
		||||
    node->OnlyNodeWithWindows = (results.CountNodesWithWindows == 1) ? results.FirstNodeWithWindows : NULL;
 | 
			
		||||
    if (node->LastFocusedNodeID == 0 && results.FirstNodeWithWindows != NULL)
 | 
			
		||||
        node->LastFocusedNodeID = results.FirstNodeWithWindows->ID;
 | 
			
		||||
    if (node->LastFocusedNodeId == 0 && results.FirstNodeWithWindows != NULL)
 | 
			
		||||
        node->LastFocusedNodeId = results.FirstNodeWithWindows->ID;
 | 
			
		||||
 | 
			
		||||
    // Copy the window class from of our first window so it can be used for proper dock filtering.
 | 
			
		||||
    // When node has mixed windows, prioritize the class with the most constraint (DockingAllowUnclassed = false) as the reference to copy.
 | 
			
		||||
@@ -12453,7 +12453,7 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node)
 | 
			
		||||
        DockNodeHideHostWindow(node);
 | 
			
		||||
        node->State = ImGuiDockNodeState_HostWindowHiddenBecauseSingleWindow;
 | 
			
		||||
        node->WantCloseAll = false;
 | 
			
		||||
        node->WantCloseTabID = 0;
 | 
			
		||||
        node->WantCloseTabId = 0;
 | 
			
		||||
        node->HasCloseButton = node->HasWindowMenuButton = node->EnableCloseButton = false;
 | 
			
		||||
        node->LastFrameActive = g.FrameCount;
 | 
			
		||||
 | 
			
		||||
@@ -12476,8 +12476,8 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node)
 | 
			
		||||
    {
 | 
			
		||||
        IM_ASSERT(node->Windows.Size > 0);
 | 
			
		||||
        ImGuiWindow* ref_window = NULL;
 | 
			
		||||
        if (node->SelectedTabID != 0) // Note that we prune single-window-node settings on .ini loading, so this is generally 0 for them!
 | 
			
		||||
            ref_window = DockNodeFindWindowByID(node, node->SelectedTabID);
 | 
			
		||||
        if (node->SelectedTabId != 0) // Note that we prune single-window-node settings on .ini loading, so this is generally 0 for them!
 | 
			
		||||
            ref_window = DockNodeFindWindowByID(node, node->SelectedTabId);
 | 
			
		||||
        if (ref_window == NULL)
 | 
			
		||||
            ref_window = node->Windows[0];
 | 
			
		||||
        if (ref_window->AutoFitFramesX > 0 || ref_window->AutoFitFramesY > 0)
 | 
			
		||||
@@ -12585,7 +12585,7 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node)
 | 
			
		||||
        IM_ASSERT(node->TabBar == NULL);
 | 
			
		||||
    if (node->IsRootNode())
 | 
			
		||||
        if (g.NavWindow && g.NavWindow->RootWindowDockStop->DockNode && g.NavWindow->RootWindowDockStop->ParentWindow == host_window)
 | 
			
		||||
            node->LastFocusedNodeID = g.NavWindow->RootWindowDockStop->DockNode->ID;
 | 
			
		||||
            node->LastFocusedNodeId = g.NavWindow->RootWindowDockStop->DockNode->ID;
 | 
			
		||||
 | 
			
		||||
    // We need to draw a background at the root level if requested by ImGuiDockNodeFlags_PassthruCentralNode, but we will only know the correct pos/size after
 | 
			
		||||
    // processing the resizing splitters. So we are using the DrawList channel splitting facility to submit drawing primitives out of order!
 | 
			
		||||
@@ -12647,13 +12647,13 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node)
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        node->WantCloseAll = false;
 | 
			
		||||
        node->WantCloseTabID = 0;
 | 
			
		||||
        node->WantCloseTabId = 0;
 | 
			
		||||
        node->IsFocused = false;
 | 
			
		||||
    }
 | 
			
		||||
    if (node->TabBar && node->TabBar->SelectedTabId)
 | 
			
		||||
        node->SelectedTabID = node->TabBar->SelectedTabId;
 | 
			
		||||
        node->SelectedTabId = node->TabBar->SelectedTabId;
 | 
			
		||||
    else if (node->Windows.Size > 0)
 | 
			
		||||
        node->SelectedTabID = node->Windows[0]->ID;
 | 
			
		||||
        node->SelectedTabId = node->Windows[0]->ID;
 | 
			
		||||
 | 
			
		||||
    // Draw payload drop target
 | 
			
		||||
    if (host_window && node->IsVisible)
 | 
			
		||||
@@ -12733,16 +12733,16 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
 | 
			
		||||
 | 
			
		||||
    const bool node_was_active = (node->LastFrameActive + 1 == g.FrameCount);
 | 
			
		||||
    const bool closed_all = node->WantCloseAll && node_was_active;
 | 
			
		||||
    const ImGuiID closed_one = node->WantCloseTabID && node_was_active;
 | 
			
		||||
    const ImGuiID closed_one = node->WantCloseTabId && node_was_active;
 | 
			
		||||
    node->WantCloseAll = false;
 | 
			
		||||
    node->WantCloseTabID = 0;
 | 
			
		||||
    node->WantCloseTabId = 0;
 | 
			
		||||
 | 
			
		||||
    // Decide if we should use a focused title bar color
 | 
			
		||||
    bool is_focused = false;
 | 
			
		||||
    ImGuiDockNode* root_node = DockNodeGetRootNode(node);
 | 
			
		||||
    if (g.NavWindowingTarget)
 | 
			
		||||
        is_focused = (g.NavWindowingTarget->DockNode == node);
 | 
			
		||||
    else if (g.NavWindow && g.NavWindow->RootWindowForTitleBarHighlight == host_window->RootWindow && root_node->LastFocusedNodeID == node->ID)
 | 
			
		||||
    else if (g.NavWindow && g.NavWindow->RootWindowForTitleBarHighlight == host_window->RootWindow && root_node->LastFocusedNodeId == node->ID)
 | 
			
		||||
        is_focused = true;
 | 
			
		||||
 | 
			
		||||
    // Hidden tab bar will show a triangle on the upper-left (in Begin)
 | 
			
		||||
@@ -12849,8 +12849,8 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Selected newly added tabs, or persistent tab ID if the tab bar was just recreated
 | 
			
		||||
    if (tab_bar_is_recreated && TabBarFindTabByID(tab_bar, node->SelectedTabID) != NULL)
 | 
			
		||||
        tab_bar->SelectedTabId = tab_bar->NextSelectedTabId = node->SelectedTabID;
 | 
			
		||||
    if (tab_bar_is_recreated && TabBarFindTabByID(tab_bar, node->SelectedTabId) != NULL)
 | 
			
		||||
        tab_bar->SelectedTabId = tab_bar->NextSelectedTabId = node->SelectedTabId;
 | 
			
		||||
    else if (tab_bar->Tabs.Size > tabs_count_old)
 | 
			
		||||
        tab_bar->SelectedTabId = tab_bar->NextSelectedTabId = tab_bar->Tabs.back().Window->ID;
 | 
			
		||||
 | 
			
		||||
@@ -12880,7 +12880,7 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
 | 
			
		||||
            bool tab_open = true;
 | 
			
		||||
            TabItemEx(tab_bar, window->Name, window->HasCloseButton ? &tab_open : NULL, tab_item_flags, window);
 | 
			
		||||
            if (!tab_open)
 | 
			
		||||
                node->WantCloseTabID = window->ID;
 | 
			
		||||
                node->WantCloseTabId = window->ID;
 | 
			
		||||
            if (tab_bar->VisibleTabId == window->ID)
 | 
			
		||||
                node->VisibleWindow = window;
 | 
			
		||||
 | 
			
		||||
@@ -12912,7 +12912,7 @@ static void ImGui::DockNodeUpdateTabBar(ImGuiDockNode* node, ImGuiWindow* host_w
 | 
			
		||||
        if (CloseButton(host_window->GetID("#CLOSE"), title_bar_rect.GetTR() + ImVec2(-style.FramePadding.x * 2.0f - button_sz, 0.0f)))
 | 
			
		||||
            if (ImGuiTabItem* tab = TabBarFindTabByID(tab_bar, tab_bar->VisibleTabId))
 | 
			
		||||
            {
 | 
			
		||||
                node->WantCloseTabID = tab->ID;
 | 
			
		||||
                node->WantCloseTabId = tab->ID;
 | 
			
		||||
                TabBarCloseTab(tab_bar, tab);
 | 
			
		||||
            }
 | 
			
		||||
        //if (IsItemActive())
 | 
			
		||||
@@ -13697,7 +13697,7 @@ void ImGui::SetWindowDock(ImGuiWindow* window, ImGuiID dock_id, ImGuiCond cond)
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                dock_id = new_node->LastFocusedNodeID;
 | 
			
		||||
                dock_id = new_node->LastFocusedNodeId;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -14416,7 +14416,7 @@ void ImGui::BeginDocked(ImGuiWindow* window, bool* p_open)
 | 
			
		||||
    if (node->TabBar && node->TabBar->CurrFrameVisible != -1)
 | 
			
		||||
        window->DockOrder = (short)DockNodeGetTabOrder(window);
 | 
			
		||||
 | 
			
		||||
    if ((node->WantCloseAll || node->WantCloseTabID == window->ID) && p_open != NULL)
 | 
			
		||||
    if ((node->WantCloseAll || node->WantCloseTabId == window->ID) && p_open != NULL)
 | 
			
		||||
        *p_open = false;
 | 
			
		||||
 | 
			
		||||
    // Update ChildId to allow returning from Child to Parent with Escape
 | 
			
		||||
@@ -14588,9 +14588,9 @@ static void ImGui::DockSettingsHandler_ReadLine(ImGuiContext* ctx, ImGuiSettings
 | 
			
		||||
    else if (strncmp(line, "DockSpace", 9) == 0) { line = ImStrSkipBlank(line + strlen("DockSpace")); node.Flags |= ImGuiDockNodeFlags_DockSpace; }
 | 
			
		||||
    else return;
 | 
			
		||||
    if (sscanf(line, "ID=0x%08X%n",      &node.ID, &r) == 1)            { line += r; } else return;
 | 
			
		||||
    if (sscanf(line, " Parent=0x%08X%n", &node.ParentNodeID, &r) == 1)  { line += r; if (node.ParentNodeID == 0) return; }
 | 
			
		||||
    if (sscanf(line, " Window=0x%08X%n", &node.ParentWindowID, &r) ==1) { line += r; if (node.ParentWindowID == 0) return; }
 | 
			
		||||
    if (node.ParentNodeID == 0)
 | 
			
		||||
    if (sscanf(line, " Parent=0x%08X%n", &node.ParentNodeId, &r) == 1)  { line += r; if (node.ParentNodeId == 0) return; }
 | 
			
		||||
    if (sscanf(line, " Window=0x%08X%n", &node.ParentWindowId, &r) ==1) { line += r; if (node.ParentWindowId == 0) return; }
 | 
			
		||||
    if (node.ParentNodeId == 0)
 | 
			
		||||
    {
 | 
			
		||||
        if (sscanf(line, " Pos=%i,%i%n",  &x, &y, &r) == 2)         { line += r; node.Pos = ImVec2ih((short)x, (short)y); } else return;
 | 
			
		||||
        if (sscanf(line, " Size=%i,%i%n", &x, &y, &r) == 2)         { line += r; node.Size = ImVec2ih((short)x, (short)y); } else return;
 | 
			
		||||
@@ -14606,10 +14606,10 @@ static void ImGui::DockSettingsHandler_ReadLine(ImGuiContext* ctx, ImGuiSettings
 | 
			
		||||
    if (sscanf(line, " HiddenTabBar=%d%n", &x, &r) == 1)            { line += r; if (x != 0) node.Flags |= ImGuiDockNodeFlags_HiddenTabBar; }
 | 
			
		||||
    if (sscanf(line, " NoWindowMenuButton=%d%n", &x, &r) == 1)      { line += r; if (x != 0) node.Flags |= ImGuiDockNodeFlags_NoWindowMenuButton; }
 | 
			
		||||
    if (sscanf(line, " NoCloseButton=%d%n", &x, &r) == 1)           { line += r; if (x != 0) node.Flags |= ImGuiDockNodeFlags_NoCloseButton; }
 | 
			
		||||
    if (sscanf(line, " Selected=0x%08X%n", &node.SelectedWindowID,&r) == 1) { line += r; }
 | 
			
		||||
    if (sscanf(line, " Selected=0x%08X%n", &node.SelectedWindowId,&r) == 1) { line += r; }
 | 
			
		||||
    ImGuiDockContext* dc = ctx->DockContext;
 | 
			
		||||
    if (node.ParentNodeID != 0)
 | 
			
		||||
        if (ImGuiDockNodeSettings* parent_settings = DockSettingsFindNodeSettings(ctx, node.ParentNodeID))
 | 
			
		||||
    if (node.ParentNodeId != 0)
 | 
			
		||||
        if (ImGuiDockNodeSettings* parent_settings = DockSettingsFindNodeSettings(ctx, node.ParentNodeId))
 | 
			
		||||
            node.Depth = parent_settings->Depth + 1;
 | 
			
		||||
    dc->SettingsNodes.push_back(node);
 | 
			
		||||
}
 | 
			
		||||
@@ -14619,9 +14619,9 @@ static void DockSettingsHandler_DockNodeToSettings(ImGuiDockContext* dc, ImGuiDo
 | 
			
		||||
    ImGuiDockNodeSettings node_settings;
 | 
			
		||||
    IM_ASSERT(depth < (1 << (sizeof(node_settings.Depth) << 3)));
 | 
			
		||||
    node_settings.ID = node->ID;
 | 
			
		||||
    node_settings.ParentNodeID = node->ParentNode ? node->ParentNode->ID : 0;
 | 
			
		||||
    node_settings.ParentWindowID = (node->IsDockSpace() && node->HostWindow && node->HostWindow->ParentWindow) ? node->HostWindow->ParentWindow->ID : 0;
 | 
			
		||||
    node_settings.SelectedWindowID = node->SelectedTabID;
 | 
			
		||||
    node_settings.ParentNodeId = node->ParentNode ? node->ParentNode->ID : 0;
 | 
			
		||||
    node_settings.ParentWindowId = (node->IsDockSpace() && node->HostWindow && node->HostWindow->ParentWindow) ? node->HostWindow->ParentWindow->ID : 0;
 | 
			
		||||
    node_settings.SelectedWindowId = node->SelectedTabId;
 | 
			
		||||
    node_settings.SplitAxis = node->IsSplitNode() ? (char)node->SplitAxis : ImGuiAxis_None;
 | 
			
		||||
    node_settings.Depth = (char)depth;
 | 
			
		||||
    node_settings.Flags = (node->LocalFlags & ImGuiDockNodeFlags_SavedFlagsMask_);
 | 
			
		||||
@@ -14663,14 +14663,14 @@ static void ImGui::DockSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettings
 | 
			
		||||
        const ImGuiDockNodeSettings* node_settings = &dc->SettingsNodes[node_n];
 | 
			
		||||
        buf->appendf("%*s%s%*s", node_settings->Depth * 2, "", (node_settings->Flags & ImGuiDockNodeFlags_DockSpace) ? "DockSpace" : "DockNode ", (max_depth - node_settings->Depth) * 2, "");  // Text align nodes to facilitate looking at .ini file
 | 
			
		||||
        buf->appendf(" ID=0x%08X", node_settings->ID);
 | 
			
		||||
        if (node_settings->ParentNodeID)
 | 
			
		||||
        if (node_settings->ParentNodeId)
 | 
			
		||||
        {
 | 
			
		||||
            buf->appendf(" Parent=0x%08X SizeRef=%d,%d", node_settings->ParentNodeID, node_settings->SizeRef.x, node_settings->SizeRef.y);
 | 
			
		||||
            buf->appendf(" Parent=0x%08X SizeRef=%d,%d", node_settings->ParentNodeId, node_settings->SizeRef.x, node_settings->SizeRef.y);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            if (node_settings->ParentWindowID)
 | 
			
		||||
                buf->appendf(" Window=0x%08X", node_settings->ParentWindowID);
 | 
			
		||||
            if (node_settings->ParentWindowId)
 | 
			
		||||
                buf->appendf(" Window=0x%08X", node_settings->ParentWindowId);
 | 
			
		||||
            buf->appendf(" Pos=%d,%d Size=%d,%d", node_settings->Pos.x, node_settings->Pos.y, node_settings->Size.x, node_settings->Size.y);
 | 
			
		||||
        }
 | 
			
		||||
        if (node_settings->SplitAxis != ImGuiAxis_None)
 | 
			
		||||
@@ -14687,8 +14687,8 @@ static void ImGui::DockSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettings
 | 
			
		||||
            buf->appendf(" NoWindowMenuButton=1");
 | 
			
		||||
        if (node_settings->Flags & ImGuiDockNodeFlags_NoCloseButton)
 | 
			
		||||
            buf->appendf(" NoCloseButton=1");
 | 
			
		||||
        if (node_settings->SelectedWindowID)
 | 
			
		||||
            buf->appendf(" Selected=0x%08X", node_settings->SelectedWindowID);
 | 
			
		||||
        if (node_settings->SelectedWindowId)
 | 
			
		||||
            buf->appendf(" Selected=0x%08X", node_settings->SelectedWindowId);
 | 
			
		||||
 | 
			
		||||
#if IMGUI_DEBUG_INI_SETTINGS
 | 
			
		||||
        // [DEBUG] Include comments in the .ini file to ease debugging
 | 
			
		||||
@@ -15211,7 +15211,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
                    node->Pos.x, node->Pos.y, node->Size.x, node->Size.y, node->SizeRef.x, node->SizeRef.y);
 | 
			
		||||
                NodeWindow(node->HostWindow, "HostWindow");
 | 
			
		||||
                NodeWindow(node->VisibleWindow, "VisibleWindow");
 | 
			
		||||
                ImGui::BulletText("SelectedTabID: 0x%08X, LastFocusedNodeID: 0x%08X", node->SelectedTabID, node->LastFocusedNodeID);
 | 
			
		||||
                ImGui::BulletText("SelectedTabID: 0x%08X, LastFocusedNodeID: 0x%08X", node->SelectedTabId, node->LastFocusedNodeId);
 | 
			
		||||
                ImGui::BulletText("Misc:%s%s%s%s", node->IsDockSpace() ? " IsDockSpace" : "", node->IsCentralNode() ? " IsCentralNode" : "", (g.FrameCount - node->LastFrameAlive < 2) ? " IsAlive" : "", (g.FrameCount - node->LastFrameActive < 2) ? " IsActive" : "");
 | 
			
		||||
                if (ImGui::TreeNode("flags", "LocalFlags: 0x%04X SharedFlags: 0x%04X", node->LocalFlags, node->SharedFlags))
 | 
			
		||||
                {
 | 
			
		||||
@@ -15372,14 +15372,14 @@ void ImGui::ShowMetricsWindow(bool* p_open)
 | 
			
		||||
            {
 | 
			
		||||
                ImGuiDockNodeSettings* settings = &dc->SettingsNodes[n];
 | 
			
		||||
                const char* selected_tab_name = NULL;
 | 
			
		||||
                if (settings->SelectedWindowID)
 | 
			
		||||
                if (settings->SelectedWindowId)
 | 
			
		||||
                {
 | 
			
		||||
                    if (ImGuiWindow* window = FindWindowByID(settings->SelectedWindowID))
 | 
			
		||||
                    if (ImGuiWindow* window = FindWindowByID(settings->SelectedWindowId))
 | 
			
		||||
                        selected_tab_name = window->Name;
 | 
			
		||||
                    else if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->SelectedWindowID))
 | 
			
		||||
                    else if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->SelectedWindowId))
 | 
			
		||||
                        selected_tab_name = window_settings->GetName();
 | 
			
		||||
                }
 | 
			
		||||
                ImGui::BulletText("Node %08X, Parent %08X, SelectedTab %08X ('%s')", settings->ID, settings->ParentNodeID, settings->SelectedWindowID, selected_tab_name ? selected_tab_name : settings->SelectedWindowID ? "N/A" : "");
 | 
			
		||||
                ImGui::BulletText("Node %08X, Parent %08X, SelectedTab %08X ('%s')", settings->ID, settings->ParentNodeId, settings->SelectedWindowId, selected_tab_name ? selected_tab_name : settings->SelectedWindowId ? "N/A" : "");
 | 
			
		||||
            }
 | 
			
		||||
            ImGui::TreePop();
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user