mirror of
https://github.com/Drezil/imgui.git
synced 2024-12-23 16:16:36 +00:00
Docking: Renaming, comments.
This commit is contained in:
parent
949a9fa2cb
commit
cb2de62bb1
50
imgui.cpp
50
imgui.cpp
@ -11073,15 +11073,15 @@ struct ImGuiDockPreviewData
|
|||||||
struct ImGuiDockNodeSettings
|
struct ImGuiDockNodeSettings
|
||||||
{
|
{
|
||||||
ImGuiID ID;
|
ImGuiID ID;
|
||||||
ImGuiID ParentID;
|
ImGuiID ParentNodeID;
|
||||||
ImGuiID SelectedTabID;
|
ImGuiID SelectedWindowID;
|
||||||
signed char SplitAxis;
|
signed char SplitAxis;
|
||||||
char Depth;
|
char Depth;
|
||||||
ImGuiDockNodeFlags Flags; // NB: We save individual flags one by one in ascii format (ImGuiDockNodeFlags_SavedFlagsMask_)
|
ImGuiDockNodeFlags Flags; // NB: We save individual flags one by one in ascii format (ImGuiDockNodeFlags_SavedFlagsMask_)
|
||||||
ImVec2ih Pos;
|
ImVec2ih Pos;
|
||||||
ImVec2ih Size;
|
ImVec2ih Size;
|
||||||
ImVec2ih SizeRef;
|
ImVec2ih SizeRef;
|
||||||
ImGuiDockNodeSettings() { ID = ParentID = SelectedTabID = 0; SplitAxis = ImGuiAxis_None; Depth = 0; Flags = ImGuiDockNodeFlags_None; }
|
ImGuiDockNodeSettings() { ID = ParentNodeID = SelectedWindowID = 0; SplitAxis = ImGuiAxis_None; Depth = 0; Flags = ImGuiDockNodeFlags_None; }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ImGuiDockContext
|
struct ImGuiDockContext
|
||||||
@ -11374,10 +11374,10 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
|
|||||||
for (int settings_n = 0; settings_n < dc->SettingsNodes.Size; settings_n++)
|
for (int settings_n = 0; settings_n < dc->SettingsNodes.Size; settings_n++)
|
||||||
{
|
{
|
||||||
ImGuiDockNodeSettings* settings = &dc->SettingsNodes[settings_n];
|
ImGuiDockNodeSettings* settings = &dc->SettingsNodes[settings_n];
|
||||||
ImGuiDockContextPruneNodeData* parent_data = settings->ParentID ? pool.GetByKey(settings->ParentID) : 0;
|
ImGuiDockContextPruneNodeData* parent_data = settings->ParentNodeID ? pool.GetByKey(settings->ParentNodeID) : 0;
|
||||||
pool.GetOrAddByKey(settings->ID)->RootID = parent_data ? parent_data->RootID : settings->ID;
|
pool.GetOrAddByKey(settings->ID)->RootID = parent_data ? parent_data->RootID : settings->ID;
|
||||||
if (settings->ParentID)
|
if (settings->ParentNodeID)
|
||||||
pool.GetOrAddByKey(settings->ParentID)->CountChildNodes++;
|
pool.GetOrAddByKey(settings->ParentNodeID)->CountChildNodes++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count reference to dock ids from window settings
|
// Count reference to dock ids from window settings
|
||||||
@ -11400,8 +11400,8 @@ static void ImGui::DockContextPruneUnusedSettingsNodes(ImGuiContext* ctx)
|
|||||||
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;
|
bool remove = false;
|
||||||
remove |= (data->CountWindows == 1 && settings->ParentID == 0 && data->CountChildNodes == 0 && !(settings->Flags & ImGuiDockNodeFlags_CentralNode)); // Floating root node with only 1 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->ParentID == 0 && data->CountChildNodes == 0); // Leaf nodes with 0 window
|
remove |= (data->CountWindows == 0 && settings->ParentNodeID == 0 && data->CountChildNodes == 0); // Leaf nodes with 0 window
|
||||||
remove |= (data_root->CountChildWindows == 0);
|
remove |= (data_root->CountChildWindows == 0);
|
||||||
if (remove)
|
if (remove)
|
||||||
{
|
{
|
||||||
@ -11421,7 +11421,7 @@ static void ImGui::DockContextBuildNodesFromSettings(ImGuiContext* ctx, ImGuiDoc
|
|||||||
if (settings->ID == 0)
|
if (settings->ID == 0)
|
||||||
continue;
|
continue;
|
||||||
ImGuiDockNode* node = DockContextAddNode(ctx, settings->ID);
|
ImGuiDockNode* node = DockContextAddNode(ctx, settings->ID);
|
||||||
node->ParentNode = settings->ParentID ? DockContextFindNodeByID(ctx, settings->ParentID) : NULL;
|
node->ParentNode = settings->ParentNodeID ? DockContextFindNodeByID(ctx, settings->ParentNodeID) : NULL;
|
||||||
node->Pos = ImVec2(settings->Pos.x, settings->Pos.y);
|
node->Pos = ImVec2(settings->Pos.x, settings->Pos.y);
|
||||||
node->Size = ImVec2(settings->Size.x, settings->Size.y);
|
node->Size = ImVec2(settings->Size.x, settings->Size.y);
|
||||||
node->SizeRef = ImVec2(settings->SizeRef.x, settings->SizeRef.y);
|
node->SizeRef = ImVec2(settings->SizeRef.x, settings->SizeRef.y);
|
||||||
@ -11430,7 +11430,7 @@ static void ImGui::DockContextBuildNodesFromSettings(ImGuiContext* ctx, ImGuiDoc
|
|||||||
node->ParentNode->ChildNodes[0] = node;
|
node->ParentNode->ChildNodes[0] = node;
|
||||||
else if (node->ParentNode && node->ParentNode->ChildNodes[1] == NULL)
|
else if (node->ParentNode && node->ParentNode->ChildNodes[1] == NULL)
|
||||||
node->ParentNode->ChildNodes[1] = node;
|
node->ParentNode->ChildNodes[1] = node;
|
||||||
node->SelectedTabID = settings->SelectedTabID;
|
node->SelectedTabID = settings->SelectedWindowID;
|
||||||
node->SplitAxis = settings->SplitAxis;
|
node->SplitAxis = settings->SplitAxis;
|
||||||
node->LocalFlags |= (settings->Flags & ImGuiDockNodeFlags_SavedFlagsMask_);
|
node->LocalFlags |= (settings->Flags & ImGuiDockNodeFlags_SavedFlagsMask_);
|
||||||
|
|
||||||
@ -14165,8 +14165,8 @@ 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 if (strncmp(line, "DockSpace", 9) == 0) { line = ImStrSkipBlank(line + strlen("DockSpace")); node.Flags |= ImGuiDockNodeFlags_DockSpace; }
|
||||||
else return;
|
else return;
|
||||||
if (sscanf(line, "ID=0x%08X%n", &node.ID, &r) == 1) { line += r; } 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.ParentID, &r) == 1) { line += r; if (node.ParentID == 0) return; }
|
if (sscanf(line, " Parent=0x%08X%n", &node.ParentNodeID, &r) == 1) { line += r; if (node.ParentNodeID == 0) return; }
|
||||||
if (node.ParentID == 0)
|
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, " 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;
|
if (sscanf(line, " Size=%i,%i%n", &x, &y, &r) == 2) { line += r; node.Size = ImVec2ih((short)x, (short)y); } else return;
|
||||||
@ -14182,10 +14182,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, " 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, " 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, " NoCloseButton=%d%n", &x, &r) == 1) { line += r; if (x != 0) node.Flags |= ImGuiDockNodeFlags_NoCloseButton; }
|
||||||
if (sscanf(line, " SelectedTab=0x%08X%n", &node.SelectedTabID,&r) == 1) { line += r; }
|
if (sscanf(line, " Selected=0x%08X%n", &node.SelectedWindowID,&r) == 1) { line += r; }
|
||||||
ImGuiDockContext* dc = ctx->DockContext;
|
ImGuiDockContext* dc = ctx->DockContext;
|
||||||
if (node.ParentID != 0)
|
if (node.ParentNodeID != 0)
|
||||||
if (ImGuiDockNodeSettings* parent_settings = DockSettingsFindNodeSettings(ctx, node.ParentID))
|
if (ImGuiDockNodeSettings* parent_settings = DockSettingsFindNodeSettings(ctx, node.ParentNodeID))
|
||||||
node.Depth = parent_settings->Depth + 1;
|
node.Depth = parent_settings->Depth + 1;
|
||||||
dc->SettingsNodes.push_back(node);
|
dc->SettingsNodes.push_back(node);
|
||||||
}
|
}
|
||||||
@ -14195,8 +14195,8 @@ static void DockSettingsHandler_DockNodeToSettings(ImGuiDockContext* dc, ImGuiDo
|
|||||||
ImGuiDockNodeSettings node_settings;
|
ImGuiDockNodeSettings node_settings;
|
||||||
IM_ASSERT(depth < (1 << (sizeof(node_settings.Depth) << 3)));
|
IM_ASSERT(depth < (1 << (sizeof(node_settings.Depth) << 3)));
|
||||||
node_settings.ID = node->ID;
|
node_settings.ID = node->ID;
|
||||||
node_settings.ParentID = node->ParentNode ? node->ParentNode->ID : 0;
|
node_settings.ParentNodeID = node->ParentNode ? node->ParentNode->ID : 0;
|
||||||
node_settings.SelectedTabID = node->SelectedTabID;
|
node_settings.SelectedWindowID = node->SelectedTabID;
|
||||||
node_settings.SplitAxis = node->IsSplitNode() ? (char)node->SplitAxis : ImGuiAxis_None;
|
node_settings.SplitAxis = node->IsSplitNode() ? (char)node->SplitAxis : ImGuiAxis_None;
|
||||||
node_settings.Depth = (char)depth;
|
node_settings.Depth = (char)depth;
|
||||||
node_settings.Flags = (node->LocalFlags & ImGuiDockNodeFlags_SavedFlagsMask_);
|
node_settings.Flags = (node->LocalFlags & ImGuiDockNodeFlags_SavedFlagsMask_);
|
||||||
@ -14238,8 +14238,8 @@ static void ImGui::DockSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettings
|
|||||||
const ImGuiDockNodeSettings* node_settings = &dc->SettingsNodes[node_n];
|
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("%*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);
|
buf->appendf(" ID=0x%08X", node_settings->ID);
|
||||||
if (node_settings->ParentID)
|
if (node_settings->ParentNodeID)
|
||||||
buf->appendf(" Parent=0x%08X SizeRef=%d,%d", node_settings->ParentID, 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
|
else
|
||||||
buf->appendf(" Pos=%d,%d Size=%d,%d", node_settings->Pos.x, node_settings->Pos.y, node_settings->Size.x, node_settings->Size.y);
|
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)
|
if (node_settings->SplitAxis != ImGuiAxis_None)
|
||||||
@ -14256,8 +14256,8 @@ static void ImGui::DockSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettings
|
|||||||
buf->appendf(" NoWindowMenuButton=1");
|
buf->appendf(" NoWindowMenuButton=1");
|
||||||
if (node_settings->Flags & ImGuiDockNodeFlags_NoCloseButton)
|
if (node_settings->Flags & ImGuiDockNodeFlags_NoCloseButton)
|
||||||
buf->appendf(" NoCloseButton=1");
|
buf->appendf(" NoCloseButton=1");
|
||||||
if (node_settings->SelectedTabID)
|
if (node_settings->SelectedWindowID)
|
||||||
buf->appendf(" SelectedTab=0x%08X", node_settings->SelectedTabID);
|
buf->appendf(" Selected=0x%08X", node_settings->SelectedWindowID);
|
||||||
|
|
||||||
#if IMGUI_DEBUG_INI_SETTINGS
|
#if IMGUI_DEBUG_INI_SETTINGS
|
||||||
// [DEBUG] Include comments in the .ini file to ease debugging
|
// [DEBUG] Include comments in the .ini file to ease debugging
|
||||||
@ -14844,14 +14844,14 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|||||||
{
|
{
|
||||||
ImGuiDockNodeSettings* settings = &dc->SettingsNodes[n];
|
ImGuiDockNodeSettings* settings = &dc->SettingsNodes[n];
|
||||||
const char* selected_tab_name = NULL;
|
const char* selected_tab_name = NULL;
|
||||||
if (settings->SelectedTabID)
|
if (settings->SelectedWindowID)
|
||||||
{
|
{
|
||||||
if (ImGuiWindow* window = FindWindowByID(settings->SelectedTabID))
|
if (ImGuiWindow* window = FindWindowByID(settings->SelectedWindowID))
|
||||||
selected_tab_name = window->Name;
|
selected_tab_name = window->Name;
|
||||||
else if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->SelectedTabID))
|
else if (ImGuiWindowSettings* window_settings = FindWindowSettings(settings->SelectedWindowID))
|
||||||
selected_tab_name = window_settings->Name;
|
selected_tab_name = window_settings->Name;
|
||||||
}
|
}
|
||||||
ImGui::BulletText("Node %08X, Parent %08X, SelectedTab %08X ('%s')", settings->ID, settings->ParentID, settings->SelectedTabID, selected_tab_name ? selected_tab_name : settings->SelectedTabID ? "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();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
|
@ -950,8 +950,8 @@ struct ImGuiDockNode
|
|||||||
int LastFrameActive; // Last frame number the node was updated.
|
int LastFrameActive; // Last frame number the node was updated.
|
||||||
int LastFrameFocused; // Last frame number the node was focused.
|
int LastFrameFocused; // Last frame number the node was focused.
|
||||||
ImGuiID LastFocusedNodeID; // [Root node only] Which of our child docking node (any ancestor in the hierarchy) was last focused.
|
ImGuiID LastFocusedNodeID; // [Root node only] Which of our child docking node (any ancestor in the hierarchy) was last focused.
|
||||||
ImGuiID SelectedTabID; // [Tab node only] Which of our tab is selected.
|
ImGuiID SelectedTabID; // [Leaf node only] Which of our tab/window is selected.
|
||||||
ImGuiID WantCloseTabID; // [Tab node only] Set when closing a specific tab.
|
ImGuiID WantCloseTabID; // [Leaf node only] Set when closing a specific tab/window.
|
||||||
ImGuiDataAuthority AuthorityForPos :3;
|
ImGuiDataAuthority AuthorityForPos :3;
|
||||||
ImGuiDataAuthority AuthorityForSize :3;
|
ImGuiDataAuthority AuthorityForSize :3;
|
||||||
ImGuiDataAuthority AuthorityForViewport :3;
|
ImGuiDataAuthority AuthorityForViewport :3;
|
||||||
|
Loading…
Reference in New Issue
Block a user