mirror of
https://github.com/ocornut/imgui.git
synced 2024-12-04 22:39:05 +08:00
Docking: Made spacing between dock nodes not a dropping gap.
This commit is contained in:
parent
f87e891f18
commit
5370b46c4e
@ -262,6 +262,8 @@ Docking+Viewports Branch:
|
||||
- Docking: Fixed regression introduced in v1.87 when docked window content not rendered
|
||||
while switching between with CTRL+Tab. [@rokups]
|
||||
- Docking: Fixed amending into an existing tab bar from rendering invisible items. (#5515)
|
||||
- Docking: Made spacing between dock nodes not a dropping gap. When hovering it only
|
||||
outer-docking drop markers are visible.
|
||||
- Docking+Viewports: Fixed undocking window node causing parent viewports to become unresponsive
|
||||
in certain situation (e.g. hidden tab bar). (#5503) [@rokups]
|
||||
- Backends: SDL: Fixed building backend under non-OSX Apple targets (e.g. iPhone). (#5665)
|
||||
|
11
imgui.cpp
11
imgui.cpp
@ -16600,7 +16600,8 @@ ImGuiDockNode* ImGui::DockNodeTreeFindVisibleNodeByPos(ImGuiDockNode* node, ImVe
|
||||
if (ImGuiDockNode* hovered_node = DockNodeTreeFindVisibleNodeByPos(node->ChildNodes[1], pos))
|
||||
return hovered_node;
|
||||
|
||||
return NULL;
|
||||
// This means we are hovering over the splitter/spacing of a parent node
|
||||
return node;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -17469,17 +17470,19 @@ void ImGui::BeginDockableDragDropTarget(ImGuiWindow* window)
|
||||
const bool do_preview = payload->IsPreview() || payload->IsDelivery();
|
||||
if (do_preview && (node != NULL || dock_into_floating_window))
|
||||
{
|
||||
// If we have a non-leaf node it means we are hovering the border of a parent node, in which case only outer markers will appear.
|
||||
ImGuiDockPreviewData split_inner;
|
||||
ImGuiDockPreviewData split_outer;
|
||||
ImGuiDockPreviewData* split_data = &split_inner;
|
||||
if (node && (node->ParentNode || node->IsCentralNode()))
|
||||
if (node && (node->ParentNode || node->IsCentralNode() || !node->IsLeafNode()))
|
||||
if (ImGuiDockNode* root_node = DockNodeGetRootNode(node))
|
||||
{
|
||||
DockNodePreviewDockSetup(window, root_node, payload_window, NULL, &split_outer, is_explicit_target, true);
|
||||
if (split_outer.IsSplitDirExplicit)
|
||||
split_data = &split_outer;
|
||||
}
|
||||
DockNodePreviewDockSetup(window, node, payload_window, NULL, &split_inner, is_explicit_target, false);
|
||||
if (!node || node->IsLeafNode())
|
||||
DockNodePreviewDockSetup(window, node, payload_window, NULL, &split_inner, is_explicit_target, false);
|
||||
if (split_data == &split_outer)
|
||||
split_inner.IsDropAllowed = false;
|
||||
|
||||
@ -18614,7 +18617,7 @@ void ImGui::DebugNodeDockNode(ImGuiDockNode* node, const char* label)
|
||||
if (node->Windows.Size > 0)
|
||||
open = TreeNodeEx((void*)(intptr_t)node->ID, tree_node_flags, "%s 0x%04X%s: %d windows (vis: '%s')", label, node->ID, node->IsVisible ? "" : " (hidden)", node->Windows.Size, node->VisibleWindow ? node->VisibleWindow->Name : "NULL");
|
||||
else
|
||||
open = TreeNodeEx((void*)(intptr_t)node->ID, tree_node_flags, "%s 0x%04X%s: %s split (vis: '%s')", label, node->ID, node->IsVisible ? "" : " (hidden)", (node->SplitAxis == ImGuiAxis_X) ? "horizontal" : (node->SplitAxis == ImGuiAxis_Y) ? "vertical" : "n/a", node->VisibleWindow ? node->VisibleWindow->Name : "NULL");
|
||||
open = TreeNodeEx((void*)(intptr_t)node->ID, tree_node_flags, "%s 0x%04X%s: %s (vis: '%s')", label, node->ID, node->IsVisible ? "" : " (hidden)", (node->SplitAxis == ImGuiAxis_X) ? "horizontal split" : (node->SplitAxis == ImGuiAxis_Y) ? "vertical split" : "empty", node->VisibleWindow ? node->VisibleWindow->Name : "NULL");
|
||||
if (!is_alive) { PopStyleColor(); }
|
||||
if (is_active && IsItemHovered())
|
||||
if (ImGuiWindow* window = node->HostWindow ? node->HostWindow : node->VisibleWindow)
|
||||
|
Loading…
Reference in New Issue
Block a user