mirror of
https://github.com/ocornut/imgui.git
synced 2025-01-31 12:03:49 +01:00
Docking: made "ImGuiDockNodeFlags_NoDocking" a combination of all others ImGuiDockNodeFlags_NoDockingXXX flags. (#2999, #6823, #6780, #3492)
This commit is contained in:
parent
7e246a7bb9
commit
f693c3d806
10
imgui.cpp
10
imgui.cpp
@ -17186,25 +17186,23 @@ static void ImGui::DockNodePreviewDockSetup(ImGuiWindow* host_window, ImGuiDockN
|
|||||||
data->IsCenterAvailable = true;
|
data->IsCenterAvailable = true;
|
||||||
if (is_outer_docking)
|
if (is_outer_docking)
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
else if (dst_node_flags & ImGuiDockNodeFlags_NoDocking)
|
else if (dst_node_flags & ImGuiDockNodeFlags_NoDockingOverMe)
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
else if (host_node && (dst_node_flags & ImGuiDockNodeFlags_NoDockingInCentralNode) && host_node->IsCentralNode())
|
else if (host_node && (dst_node_flags & ImGuiDockNodeFlags_NoDockingInCentralNode) && host_node->IsCentralNode())
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
else if ((!host_node || !host_node->IsEmpty()) && payload_node && payload_node->IsSplitNode() && (payload_node->OnlyNodeWithWindows == NULL)) // Is _visibly_ split?
|
else if ((!host_node || !host_node->IsEmpty()) && payload_node && payload_node->IsSplitNode() && (payload_node->OnlyNodeWithWindows == NULL)) // Is _visibly_ split?
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
else if (dst_node_flags & ImGuiDockNodeFlags_NoDockingOverMe)
|
|
||||||
data->IsCenterAvailable = false;
|
|
||||||
else if ((src_node_flags & ImGuiDockNodeFlags_NoDockingOverOther) && (!host_node || !host_node->IsEmpty()))
|
else if ((src_node_flags & ImGuiDockNodeFlags_NoDockingOverOther) && (!host_node || !host_node->IsEmpty()))
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
else if ((src_node_flags & ImGuiDockNodeFlags_NoDockingOverEmpty) && host_node && host_node->IsEmpty())
|
else if ((src_node_flags & ImGuiDockNodeFlags_NoDockingOverEmpty) && host_node && host_node->IsEmpty())
|
||||||
data->IsCenterAvailable = false;
|
data->IsCenterAvailable = false;
|
||||||
|
|
||||||
data->IsSidesAvailable = true;
|
data->IsSidesAvailable = true;
|
||||||
if ((dst_node_flags & ImGuiDockNodeFlags_NoSplit) || g.IO.ConfigDockingNoSplit)
|
if ((dst_node_flags & ImGuiDockNodeFlags_NoSplit) /*|| (dst_node_flags & ImGuiDockNodeFlags_NoDockingSplitMe)*/ || g.IO.ConfigDockingNoSplit)
|
||||||
data->IsSidesAvailable = false;
|
data->IsSidesAvailable = false;
|
||||||
else if (!is_outer_docking && host_node && host_node->ParentNode == NULL && host_node->IsCentralNode())
|
else if (!is_outer_docking && host_node && host_node->ParentNode == NULL && host_node->IsCentralNode())
|
||||||
data->IsSidesAvailable = false;
|
data->IsSidesAvailable = false;
|
||||||
else if ((dst_node_flags & ImGuiDockNodeFlags_NoDockingSplitMe) || (src_node_flags & ImGuiDockNodeFlags_NoDockingSplitOther))
|
else if (src_node_flags & ImGuiDockNodeFlags_NoDockingSplitOther)
|
||||||
data->IsSidesAvailable = false;
|
data->IsSidesAvailable = false;
|
||||||
|
|
||||||
// Build a tentative future node (reuse same structure because it is practical. Shape will be readjusted when previewing a split)
|
// Build a tentative future node (reuse same structure because it is practical. Shape will be readjusted when previewing a split)
|
||||||
@ -19916,7 +19914,7 @@ static void DebugNodeDockNodeFlags(ImGuiDockNodeFlags* p_flags, const char* labe
|
|||||||
CheckboxFlags("HiddenTabBar", p_flags, ImGuiDockNodeFlags_HiddenTabBar);
|
CheckboxFlags("HiddenTabBar", p_flags, ImGuiDockNodeFlags_HiddenTabBar);
|
||||||
CheckboxFlags("NoWindowMenuButton", p_flags, ImGuiDockNodeFlags_NoWindowMenuButton);
|
CheckboxFlags("NoWindowMenuButton", p_flags, ImGuiDockNodeFlags_NoWindowMenuButton);
|
||||||
CheckboxFlags("NoCloseButton", p_flags, ImGuiDockNodeFlags_NoCloseButton);
|
CheckboxFlags("NoCloseButton", p_flags, ImGuiDockNodeFlags_NoCloseButton);
|
||||||
CheckboxFlags("NoDocking", p_flags, ImGuiDockNodeFlags_NoDocking);
|
CheckboxFlags("NoDocking", p_flags, ImGuiDockNodeFlags_NoDocking); // Multiple flags
|
||||||
CheckboxFlags("NoDockingSplitMe", p_flags, ImGuiDockNodeFlags_NoDockingSplitMe);
|
CheckboxFlags("NoDockingSplitMe", p_flags, ImGuiDockNodeFlags_NoDockingSplitMe);
|
||||||
CheckboxFlags("NoDockingSplitOther", p_flags, ImGuiDockNodeFlags_NoDockingSplitOther);
|
CheckboxFlags("NoDockingSplitOther", p_flags, ImGuiDockNodeFlags_NoDockingSplitOther);
|
||||||
CheckboxFlags("NoDockingOverMe", p_flags, ImGuiDockNodeFlags_NoDockingOverMe);
|
CheckboxFlags("NoDockingOverMe", p_flags, ImGuiDockNodeFlags_NoDockingOverMe);
|
||||||
|
@ -1699,19 +1699,21 @@ enum ImGuiDockNodeFlagsPrivate_
|
|||||||
ImGuiDockNodeFlags_HiddenTabBar = 1 << 13, // Saved // Tab bar is hidden, with a triangle in the corner to show it again (NB: actual tab-bar instance may be destroyed as this is only used for single-window tab bar)
|
ImGuiDockNodeFlags_HiddenTabBar = 1 << 13, // Saved // Tab bar is hidden, with a triangle in the corner to show it again (NB: actual tab-bar instance may be destroyed as this is only used for single-window tab bar)
|
||||||
ImGuiDockNodeFlags_NoWindowMenuButton = 1 << 14, // Saved // Disable window/docking menu (that one that appears instead of the collapse button)
|
ImGuiDockNodeFlags_NoWindowMenuButton = 1 << 14, // Saved // Disable window/docking menu (that one that appears instead of the collapse button)
|
||||||
ImGuiDockNodeFlags_NoCloseButton = 1 << 15, // Saved // Disable close button
|
ImGuiDockNodeFlags_NoCloseButton = 1 << 15, // Saved // Disable close button
|
||||||
ImGuiDockNodeFlags_NoDocking = 1 << 16, // // Disable any form of docking in this dockspace or individual node. (On a whole dockspace, this pretty much defeat the purpose of using a dockspace at all). Note: when turned on, existing docked nodes will be preserved.
|
// Disable docking/undocking actions in this dockspace or individual node (existing docked nodes will be preserved)
|
||||||
ImGuiDockNodeFlags_NoDockingSplitMe = 1 << 17, // // [EXPERIMENTAL] Prevent another window/node from splitting this node.
|
ImGuiDockNodeFlags_NoUndocking = 1 << 16, // // Disable undocking this node.
|
||||||
ImGuiDockNodeFlags_NoDockingSplitOther = 1 << 18, // // [EXPERIMENTAL] Prevent this node from splitting another window/node.
|
ImGuiDockNodeFlags_NoDockingSplitMe = 1 << 17, // // Disable other windows/nodes from splitting this node.
|
||||||
ImGuiDockNodeFlags_NoDockingOverMe = 1 << 19, // // [EXPERIMENTAL] Prevent another window/node to be docked over this node.
|
ImGuiDockNodeFlags_NoDockingSplitOther = 1 << 18, // // Disable this node from splitting other windows/nodes.
|
||||||
ImGuiDockNodeFlags_NoDockingOverOther = 1 << 20, // // [EXPERIMENTAL] Prevent this node to be docked over another window or non-empty node.
|
ImGuiDockNodeFlags_NoDockingOverMe = 1 << 19, // // Disable other windows/nodes from being docked over this node.
|
||||||
ImGuiDockNodeFlags_NoDockingOverEmpty = 1 << 21, // // [EXPERIMENTAL] Prevent this node to be docked over an empty node (e.g. DockSpace with no other windows)
|
ImGuiDockNodeFlags_NoDockingOverOther = 1 << 20, // // Disable this node from being docked over another window or non-empty node.
|
||||||
ImGuiDockNodeFlags_NoUndocking = 1 << 22, // // Disable undocking from this node.
|
ImGuiDockNodeFlags_NoDockingOverEmpty = 1 << 21, // // Disable this node from being docked over an empty node (e.g. DockSpace with no other windows)
|
||||||
ImGuiDockNodeFlags_NoResizeX = 1 << 23, // // [EXPERIMENTAL]
|
ImGuiDockNodeFlags_NoDocking = ImGuiDockNodeFlags_NoDockingOverMe | ImGuiDockNodeFlags_NoDockingOverOther | ImGuiDockNodeFlags_NoDockingOverEmpty | ImGuiDockNodeFlags_NoDockingSplitMe | ImGuiDockNodeFlags_NoDockingSplitOther,
|
||||||
ImGuiDockNodeFlags_NoResizeY = 1 << 24, // // [EXPERIMENTAL]
|
ImGuiDockNodeFlags_NoResizeX = 1 << 22, // //
|
||||||
|
ImGuiDockNodeFlags_NoResizeY = 1 << 23, // //
|
||||||
|
// Masks
|
||||||
ImGuiDockNodeFlags_SharedFlagsInheritMask_ = ~0,
|
ImGuiDockNodeFlags_SharedFlagsInheritMask_ = ~0,
|
||||||
ImGuiDockNodeFlags_NoResizeFlagsMask_ = ImGuiDockNodeFlags_NoResize | ImGuiDockNodeFlags_NoResizeX | ImGuiDockNodeFlags_NoResizeY,
|
ImGuiDockNodeFlags_NoResizeFlagsMask_ = ImGuiDockNodeFlags_NoResize | ImGuiDockNodeFlags_NoResizeX | ImGuiDockNodeFlags_NoResizeY,
|
||||||
// When splitting those flags are moved to the inheriting child, never duplicated
|
// When splitting, those local flags are moved to the inheriting child, never duplicated
|
||||||
ImGuiDockNodeFlags_LocalFlagsTransferMask_ = ImGuiDockNodeFlags_NoSplit | ImGuiDockNodeFlags_NoResizeFlagsMask_ | ImGuiDockNodeFlags_AutoHideTabBar | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton | ImGuiDockNodeFlags_NoDocking,
|
ImGuiDockNodeFlags_LocalFlagsTransferMask_ = ImGuiDockNodeFlags_NoSplit | ImGuiDockNodeFlags_NoResizeFlagsMask_ | ImGuiDockNodeFlags_AutoHideTabBar | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton,
|
||||||
ImGuiDockNodeFlags_SavedFlagsMask_ = ImGuiDockNodeFlags_NoResizeFlagsMask_ | ImGuiDockNodeFlags_DockSpace | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton,
|
ImGuiDockNodeFlags_SavedFlagsMask_ = ImGuiDockNodeFlags_NoResizeFlagsMask_ | ImGuiDockNodeFlags_DockSpace | ImGuiDockNodeFlags_CentralNode | ImGuiDockNodeFlags_NoTabBar | ImGuiDockNodeFlags_HiddenTabBar | ImGuiDockNodeFlags_NoWindowMenuButton | ImGuiDockNodeFlags_NoCloseButton,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user