mirror of
https://github.com/Drezil/imgui.git
synced 2025-04-21 02:24:02 +00:00
Begin: WIP consistent Begin/End behavior, docking bits
This commit is contained in:
parent
1848480798
commit
698743c849
19
imgui.cpp
19
imgui.cpp
@ -13270,8 +13270,10 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node)
|
|||||||
window_flags |= ImGuiWindowFlags_NoTitleBar;
|
window_flags |= ImGuiWindowFlags_NoTitleBar;
|
||||||
|
|
||||||
PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
|
||||||
Begin(window_label, NULL, window_flags);
|
bool ret = Begin(window_label, NULL, window_flags);
|
||||||
PopStyleVar();
|
PopStyleVar();
|
||||||
|
IM_UNUSED(ret);
|
||||||
|
IM_ASSERT(ret); // FIXME-NEWBEGIN
|
||||||
beginned_into_host_window = true;
|
beginned_into_host_window = true;
|
||||||
|
|
||||||
node->HostWindow = host_window = g.CurrentWindow;
|
node->HostWindow = host_window = g.CurrentWindow;
|
||||||
@ -13454,7 +13456,8 @@ bool ImGui::DockNodeBeginAmendTabBar(ImGuiDockNode* node)
|
|||||||
return false;
|
return false;
|
||||||
if (node->SharedFlags & ImGuiDockNodeFlags_KeepAliveOnly)
|
if (node->SharedFlags & ImGuiDockNodeFlags_KeepAliveOnly)
|
||||||
return false;
|
return false;
|
||||||
Begin(node->HostWindow->Name);
|
if (!Begin(node->HostWindow->Name))
|
||||||
|
return false;
|
||||||
PushOverrideID(node->ID);
|
PushOverrideID(node->ID);
|
||||||
bool ret = BeginTabBarEx(node->TabBar, node->TabBar->BarRect, node->TabBar->Flags, node);
|
bool ret = BeginTabBarEx(node->TabBar, node->TabBar->BarRect, node->TabBar->Flags, node);
|
||||||
IM_ASSERT(ret);
|
IM_ASSERT(ret);
|
||||||
@ -14541,10 +14544,12 @@ void ImGui::DockSpace(ImGuiID id, const ImVec2& size_arg, ImGuiDockNodeFlags fla
|
|||||||
if (node->Windows.Size > 0 || node->IsSplitNode())
|
if (node->Windows.Size > 0 || node->IsSplitNode())
|
||||||
PushStyleColor(ImGuiCol_ChildBg, IM_COL32(0, 0, 0, 0));
|
PushStyleColor(ImGuiCol_ChildBg, IM_COL32(0, 0, 0, 0));
|
||||||
PushStyleVar(ImGuiStyleVar_ChildBorderSize, 0.0f);
|
PushStyleVar(ImGuiStyleVar_ChildBorderSize, 0.0f);
|
||||||
Begin(title, NULL, window_flags);
|
bool ret = Begin(title, NULL, window_flags);
|
||||||
PopStyleVar();
|
PopStyleVar();
|
||||||
if (node->Windows.Size > 0 || node->IsSplitNode())
|
if (node->Windows.Size > 0 || node->IsSplitNode())
|
||||||
PopStyleColor();
|
PopStyleColor();
|
||||||
|
if (!ret)
|
||||||
|
return; // FIXME-NEWBEGIN
|
||||||
|
|
||||||
ImGuiWindow* host_window = g.CurrentWindow;
|
ImGuiWindow* host_window = g.CurrentWindow;
|
||||||
host_window->DockNodeAsHost = node;
|
host_window->DockNodeAsHost = node;
|
||||||
@ -14595,12 +14600,16 @@ ImGuiID ImGui::DockSpaceOverViewport(ImGuiViewport* viewport, ImGuiDockNodeFlags
|
|||||||
PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
|
||||||
PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
|
PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
|
||||||
PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
|
PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
|
||||||
Begin(label, NULL, host_window_flags);
|
bool ret = Begin(label, NULL, host_window_flags);
|
||||||
PopStyleVar(3);
|
PopStyleVar(3);
|
||||||
|
|
||||||
ImGuiID dockspace_id = GetID("DockSpace");
|
ImGuiID dockspace_id = GetID("DockSpace");
|
||||||
|
|
||||||
|
// FIXME-NEWBEGIN: KeepAlive if not visible?
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), dockspace_flags, window_class);
|
DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), dockspace_flags, window_class);
|
||||||
End();
|
End();
|
||||||
|
}
|
||||||
|
|
||||||
return dockspace_id;
|
return dockspace_id;
|
||||||
}
|
}
|
||||||
|
@ -7227,12 +7227,14 @@ void ShowExampleAppDockSpace(bool* p_open)
|
|||||||
// any change of dockspace/settings would lead to windows being stuck in limbo and never being visible.
|
// any change of dockspace/settings would lead to windows being stuck in limbo and never being visible.
|
||||||
if (!opt_padding)
|
if (!opt_padding)
|
||||||
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
|
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
|
||||||
ImGui::Begin("DockSpace Demo", p_open, window_flags);
|
bool ret = ImGui::Begin("DockSpace Demo", p_open, window_flags);
|
||||||
|
|
||||||
if (!opt_padding)
|
if (!opt_padding)
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
|
|
||||||
if (opt_fullscreen)
|
if (opt_fullscreen)
|
||||||
ImGui::PopStyleVar(2);
|
ImGui::PopStyleVar(2);
|
||||||
|
if (!ret)
|
||||||
|
return; // FIXME-NEWBEGIN: KeepAlive?
|
||||||
|
|
||||||
// DockSpace
|
// DockSpace
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user