1
0
mirror of https://github.com/ocornut/imgui.git synced 2024-11-24 15:50:25 +01:00

Fix for using tooltips within popup #126 - will need to rewrite the sorting/layering system shortly.

This commit is contained in:
ocornut 2015-03-26 18:17:55 +00:00
parent a3086f40fe
commit 93c9777165

View File

@ -2174,6 +2174,7 @@ void ImGui::Render()
} }
// Gather windows to render // Gather windows to render
// FIXME-OPT: Rework this in a more performance conscious way.
g.RenderDrawLists.resize(0); g.RenderDrawLists.resize(0);
for (size_t i = 0; i != g.Windows.size(); i++) for (size_t i = 0; i != g.Windows.size(); i++)
{ {
@ -2184,7 +2185,13 @@ void ImGui::Render()
for (size_t i = 0; i != g.Windows.size(); i++) for (size_t i = 0; i != g.Windows.size(); i++)
{ {
ImGuiWindow* window = g.Windows[i]; ImGuiWindow* window = g.Windows[i];
if (window->Visible && (window->Flags & (ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup))) if (window->Visible && (window->Flags & ImGuiWindowFlags_Popup) != 0)
AddWindowToRenderList(window);
}
for (size_t i = 0; i != g.Windows.size(); i++)
{
ImGuiWindow* window = g.Windows[i];
if (window->Visible && (window->Flags & ImGuiWindowFlags_Tooltip) != 0)
AddWindowToRenderList(window); AddWindowToRenderList(window);
} }
@ -2992,7 +2999,8 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_
window->Visible = true; window->Visible = true;
// New windows appears in front // New windows appears in front
if (!(flags & ImGuiWindowFlags_ChildWindow)) if (!(flags & ImGuiWindowFlags_ChildWindow) && !(flags & ImGuiWindowFlags_Tooltip))
{
if (window->LastFrameDrawn < current_frame - 1) if (window->LastFrameDrawn < current_frame - 1)
{ {
FocusWindow(window); FocusWindow(window);
@ -3004,6 +3012,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_
window->PosFloat = g.IO.MousePos; window->PosFloat = g.IO.MousePos;
} }
} }
}
window->LastFrameDrawn = current_frame; window->LastFrameDrawn = current_frame;
window->ClipRectStack.resize(0); window->ClipRectStack.resize(0);
@ -9461,11 +9470,13 @@ void ImGui::ShowTestWindow(bool* opened)
{ {
ImGui::BeginPopup(&popup_open); ImGui::BeginPopup(&popup_open);
for (size_t i = 0; i < IM_ARRAYSIZE(fishes); i++) for (size_t i = 0; i < IM_ARRAYSIZE(fishes); i++)
{
if (ImGui::Selectable(fishes[i], false)) if (ImGui::Selectable(fishes[i], false))
{ {
selected_fish = i; selected_fish = i;
popup_open = false; popup_open = false;
} }
}
ImGui::EndPopup(); ImGui::EndPopup();
} }
ImGui::TreePop(); ImGui::TreePop();