mirror of
https://github.com/ocornut/imgui.git
synced 2026-01-11 00:04:24 +00:00
Viewports: store ImGuiViewport* ParentViewport pointer as well. Backends: SDL3, Win32: use this pointer to reduce lookups. (#8948)
This commit is contained in:
parent
e7aa0dec5b
commit
3563f1e270
5 changed files with 27 additions and 16 deletions
11
imgui.cpp
11
imgui.cpp
|
|
@ -17023,11 +17023,22 @@ void ImGui::WindowSyncOwnedViewport(ImGuiWindow* window, ImGuiWindow* parent_win
|
|||
// Update parent viewport ID
|
||||
// (the !IsFallbackWindow test mimic the one done in WindowSelectViewport())
|
||||
if (window->WindowClass.ParentViewportId != (ImGuiID)-1)
|
||||
{
|
||||
ImGuiID old_parent_viewport_id = window->Viewport->ParentViewportId;
|
||||
window->Viewport->ParentViewportId = window->WindowClass.ParentViewportId;
|
||||
if (window->Viewport->ParentViewportId != old_parent_viewport_id)
|
||||
window->Viewport->ParentViewport = FindViewportByID(window->Viewport->ParentViewportId);
|
||||
}
|
||||
else if ((window_flags & (ImGuiWindowFlags_Popup | ImGuiWindowFlags_Tooltip)) && parent_window_in_stack && (!parent_window_in_stack->IsFallbackWindow || parent_window_in_stack->WasActive))
|
||||
{
|
||||
window->Viewport->ParentViewport = parent_window_in_stack->Viewport;
|
||||
window->Viewport->ParentViewportId = parent_window_in_stack->Viewport->ID;
|
||||
}
|
||||
else
|
||||
{
|
||||
window->Viewport->ParentViewport = g.IO.ConfigViewportsNoDefaultParent ? NULL : GetMainViewport();
|
||||
window->Viewport->ParentViewportId = g.IO.ConfigViewportsNoDefaultParent ? 0 : IMGUI_VIEWPORT_DEFAULT_ID;
|
||||
}
|
||||
}
|
||||
|
||||
// Called by user at the end of the main loop, after EndFrame()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue