Skip to content

Commit c5f1a77

Browse files
committed
- Add dockBuilderGetNode, dockBuilderGetCentralNode
- Backport ocornut/imgui@a63220e
1 parent 21dcc28 commit c5f1a77

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

libs/imgui/imgui.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19572,6 +19572,8 @@ ImGuiID ImGui::DockSpaceOverViewport(ImGuiID dockspace_id, const ImGuiViewport*
1957219572
host_window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
1957319573
if (dockspace_flags & ImGuiDockNodeFlags_PassthruCentralNode)
1957419574
host_window_flags |= ImGuiWindowFlags_NoBackground;
19575+
if (dockspace_flags & ImGuiDockNodeFlags_KeepAliveOnly)
19576+
host_window_flags |= ImGuiWindowFlags_NoMouseInputs;
1957519577

1957619578
// FIXME-OPT: When using ImGuiDockNodeFlags_KeepAliveOnly with DockSpaceOverViewport() we might be able to spare submitting the window,
1957719579
// since DockSpace() with that flag doesn't need a window. We'd only need to compute the default ID accordingly.

src/gui.zig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,9 +975,17 @@ pub const DockSpaceOverViewport = zguiDockSpaceOverViewport;
975975
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
976976
//
977977
//--------------------------------------------------------------------------------------------------
978+
const DockNode = anyopaque;
979+
pub fn dockNodeRect(node: *const DockNode, out_rect: *[4]f32) void {
980+
return zguiDockNodeRect(node, out_rect);
981+
}
982+
extern fn zguiDockNodeRect(node: *const DockNode, out_rect: *[4]f32) void;
983+
978984
pub fn dockBuilderDockWindow(window_name: [:0]const u8, node_id: Ident) void {
979985
zguiDockBuilderDockWindow(window_name.ptr, node_id);
980986
}
987+
pub const dockBuilderGetNode = zguiDockBuilderGetNode;
988+
pub const dockBuilderGetCentralNode = zguiDockBuilderGetCentralNode;
981989
pub const dockBuilderAddNode = zguiDockBuilderAddNode;
982990
pub const dockBuilderRemoveNode = zguiDockBuilderRemoveNode;
983991
pub fn dockBuilderSetNodePos(node_id: Ident, pos: [2]f32) void {
@@ -990,6 +998,8 @@ pub const dockBuilderSplitNode = zguiDockBuilderSplitNode;
990998
pub const dockBuilderFinish = zguiDockBuilderFinish;
991999

9921000
extern fn zguiDockBuilderDockWindow(window_name: [*:0]const u8, node_id: Ident) void;
1001+
extern fn zguiDockBuilderGetNode(node_id: Ident) ?*DockNode;
1002+
extern fn zguiDockBuilderGetCentralNode(node_id: Ident) ?*DockNode;
9931003
extern fn zguiDockBuilderAddNode(node_id: Ident, flags: DockNodeFlags) Ident;
9941004
extern fn zguiDockBuilderRemoveNode(node_id: Ident) void;
9951005
extern fn zguiDockBuilderSetNodePos(node_id: Ident, pos: *const [2]f32) void;

src/zgui.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2784,11 +2784,26 @@ extern "C"
27842784
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
27852785
//
27862786
//--------------------------------------------------------------------------------------------------
2787+
ZGUI_API void zguiDockNodeRect(const ImGuiDockNode* node, ImRect* out_rect)
2788+
{
2789+
*out_rect = node->Rect();
2790+
}
2791+
27872792
ZGUI_API void zguiDockBuilderDockWindow(const char *window_name, ImGuiID node_id)
27882793
{
27892794
ImGui::DockBuilderDockWindow(window_name, node_id);
27902795
}
27912796

2797+
ZGUI_API ImGuiDockNode* zguiDockBuilderGetNode(ImGuiID node_id)
2798+
{
2799+
return ImGui::DockBuilderGetNode(node_id);
2800+
}
2801+
2802+
ZGUI_API ImGuiDockNode* zguiDockBuilderGetCentralNode(ImGuiID node_id)
2803+
{
2804+
return ImGui::DockBuilderGetCentralNode(node_id);
2805+
}
2806+
27922807
ZGUI_API ImGuiID zguiDockBuilderAddNode(ImGuiID node_id, ImGuiDockNodeFlags flags)
27932808
{
27942809
return ImGui::DockBuilderAddNode(node_id, flags);

0 commit comments

Comments
 (0)