mirror of
https://github.com/ocornut/imgui.git
synced 2025-12-22 14:19:04 +00:00
Docking: added io.ConfigDockingNoDockingOver to prevent merging windows into a same tab-bar.
This commit is contained in:
@@ -164,6 +164,8 @@ Docking+Viewports Branch:
|
||||
by docked windows. (#8983, #9064)
|
||||
- Docking: fixed crash loading certain form of invalid .ini settings (e.g. nodes
|
||||
referring to a missing parent, duplicate nodes id). (#9070)
|
||||
- Docking: added io.ConfigDockingNoDockingOver helper config flag to prevent
|
||||
merging windows into a same tab-bar.
|
||||
- Examples:
|
||||
- SDL2+DX11, SDL3+DX11, Win32+DX10, Win32+DX11: fixed one resource leak
|
||||
from the use of MakeWindowAssociation() in 1.92.4. (#9010, #4350) [@o-3-o]
|
||||
|
||||
@@ -1590,6 +1590,7 @@ ImGuiIO::ImGuiIO()
|
||||
|
||||
// Docking options (when ImGuiConfigFlags_DockingEnable is set)
|
||||
ConfigDockingNoSplit = false;
|
||||
ConfigDockingNoDockingOver = false;
|
||||
ConfigDockingWithShift = false;
|
||||
ConfigDockingAlwaysTabBar = false;
|
||||
ConfigDockingTransparentPayload = false;
|
||||
@@ -19653,6 +19654,8 @@ static void ImGui::DockNodePreviewDockSetup(ImGuiWindow* host_window, ImGuiDockN
|
||||
data->IsCenterAvailable = true;
|
||||
if (is_outer_docking)
|
||||
data->IsCenterAvailable = false;
|
||||
else if (g.IO.ConfigDockingNoDockingOver)
|
||||
data->IsCenterAvailable = false;
|
||||
else if (dst_node_flags & ImGuiDockNodeFlags_NoDockingOverMe)
|
||||
data->IsCenterAvailable = false;
|
||||
else if (host_node && (dst_node_flags & ImGuiDockNodeFlags_NoDockingOverCentralNode) && host_node->IsCentralNode())
|
||||
|
||||
1
imgui.h
1
imgui.h
@@ -2493,6 +2493,7 @@ struct ImGuiIO
|
||||
|
||||
// Docking options (when ImGuiConfigFlags_DockingEnable is set)
|
||||
bool ConfigDockingNoSplit; // = false // Simplified docking mode: disable window splitting, so docking is limited to merging multiple windows together into tab-bars.
|
||||
bool ConfigDockingNoDockingOver; // = false // Simplified docking mode: disable window merging into a same tab-bar, so docking is limited to splitting windows.
|
||||
bool ConfigDockingWithShift; // = false // Enable docking with holding Shift key (reduce visual noise, allows dropping in wider space)
|
||||
bool ConfigDockingAlwaysTabBar; // = false // [BETA] [FIXME: This currently creates regression with auto-sizing and general overhead] Make every single floating window display within a docking node.
|
||||
bool ConfigDockingTransparentPayload;// = false // [BETA] Make window or viewport transparent when docking and only display docking boxes on the target viewport. Useful if rendering of multiple viewport cannot be synced. Best used with ConfigViewportsNoAutoMerge.
|
||||
|
||||
@@ -533,6 +533,8 @@ void ImGui::ShowDemoWindow(bool* p_open)
|
||||
ImGui::Indent();
|
||||
ImGui::Checkbox("io.ConfigDockingNoSplit", &io.ConfigDockingNoSplit);
|
||||
ImGui::SameLine(); HelpMarker("Simplified docking mode: disable window splitting, so docking is limited to merging multiple windows together into tab-bars.");
|
||||
ImGui::Checkbox("io.ConfigDockingNoDockingOver", &io.ConfigDockingNoDockingOver);
|
||||
ImGui::SameLine(); HelpMarker("Simplified docking mode: disable window merging into a same tab-bar, so docking is limited to splitting windows.");
|
||||
ImGui::Checkbox("io.ConfigDockingWithShift", &io.ConfigDockingWithShift);
|
||||
ImGui::SameLine(); HelpMarker("Enable docking when holding Shift only (allow to drop in wider space, reduce visual noise)");
|
||||
ImGui::Checkbox("io.ConfigDockingAlwaysTabBar", &io.ConfigDockingAlwaysTabBar);
|
||||
@@ -8313,6 +8315,7 @@ void ImGui::ShowAboutWindow(bool* p_open)
|
||||
if (io.ConfigViewportsNoDecoration) ImGui::Text("io.ConfigViewportsNoDecoration");
|
||||
if (io.ConfigViewportsNoDefaultParent) ImGui::Text("io.ConfigViewportsNoDefaultParent");
|
||||
if (io.ConfigDockingNoSplit) ImGui::Text("io.ConfigDockingNoSplit");
|
||||
if (io.ConfigDockingNoDockingOver) ImGui::Text("io.ConfigDockingNoDockingOver");
|
||||
if (io.ConfigDockingWithShift) ImGui::Text("io.ConfigDockingWithShift");
|
||||
if (io.ConfigDockingAlwaysTabBar) ImGui::Text("io.ConfigDockingAlwaysTabBar");
|
||||
if (io.ConfigDockingTransparentPayload) ImGui::Text("io.ConfigDockingTransparentPayload");
|
||||
|
||||
Reference in New Issue
Block a user