@ -4519,9 +4519,9 @@ void ImGui::Render()
if ( g . FrameCountEnded ! = g . FrameCount )
EndFrame ( ) ;
g . FrameCountRendered = g . FrameCount ;
// Gather ImDrawList to render (for each active window)
g . IO . MetricsRenderVertices = g . IO . MetricsRenderIndices = g . IO . MetricsRenderWindows = 0 ;
// Add background ImDrawList (for each active viewport)
for ( int n = 0 ; n ! = g . Viewports . Size ; n + + )
{
ImGuiViewportP * viewport = g . Viewports [ n ] ;
@ -4530,9 +4530,10 @@ void ImGui::Render()
AddDrawListToDrawData ( & viewport - > DrawDataBuilder . Layers [ 0 ] , GetBackgroundDrawList ( viewport ) ) ;
}
// Add ImDrawList to render (for each active window)
ImGuiWindow * windows_to_render_top_most [ 2 ] ;
windows_to_render_top_most [ 0 ] = ( g . NavWindowingTarget & & ! ( g . NavWindowingTarget - > Flags & ImGuiWindowFlags_NoBringToFrontOnFocus ) ) ? g . NavWindowingTarget - > RootWindow : NULL ;
windows_to_render_top_most [ 1 ] = g . NavWindowingTarget ? g . NavWindowingList : NULL ;
windows_to_render_top_most [ 1 ] = ( g . NavWindowingTarget ? g . NavWindowingList : NULL ) ;
for ( int n = 0 ; n ! = g . Windows . Size ; n + + )
{
ImGuiWindow * window = g . Windows [ n ] ;
@ -4553,8 +4554,11 @@ void ImGui::Render()
{
ImGuiViewportP * viewport = g . Viewports [ n ] ;
viewport - > DrawDataBuilder . FlattenIntoSingleLayer ( ) ;
// Add foreground ImDrawList (for each active viewport)
if ( viewport - > DrawLists [ 1 ] ! = NULL )
AddDrawListToDrawData ( & viewport - > DrawDataBuilder . Layers [ 0 ] , GetForegroundDrawList ( viewport ) ) ;
SetupViewportDrawData ( viewport , & viewport - > DrawDataBuilder . Layers [ 0 ] ) ;
g . IO . MetricsRenderVertices + = viewport - > DrawData - > TotalVtxCount ;
g . IO . MetricsRenderIndices + = viewport - > DrawData - > TotalIdxCount ;
@ -8298,7 +8302,10 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags fla
// Center modal windows by default
// FIXME: Should test for (PosCond & window->SetWindowPosAllowFlags) with the upcoming window.
if ( ( g . NextWindowData . Flags & ImGuiNextWindowDataFlags_HasPos ) = = 0 )
SetNextWindowPos ( window - > Viewport - > GetCenter ( ) , ImGuiCond_Appearing , ImVec2 ( 0.5f , 0.5f ) ) ;
{
ImGuiViewportP * viewport = window - > WasActive ? window - > Viewport : ( ImGuiViewportP * ) GetMainViewport ( ) ; // FIXME-VIEWPORT: What may be our reference viewport?
SetNextWindowPos ( viewport - > GetCenter ( ) , ImGuiCond_Appearing , ImVec2 ( 0.5f , 0.5f ) ) ;
}
flags | = ImGuiWindowFlags_Popup | ImGuiWindowFlags_Modal | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoSavedSettings | ImGuiWindowFlags_NoDocking ;
const bool is_open = Begin ( name , p_open , flags ) ;
@ -10342,7 +10349,8 @@ static bool ImGui::GetWindowAlwaysWantOwnViewport(ImGuiWindow* window)
if ( g . IO . ConfigViewportsNoAutoMerge | | ( window - > WindowClass . ViewportFlagsOverrideSet & ImGuiViewportFlags_NoAutoMerge ) )
if ( g . ConfigFlagsCurrFrame & ImGuiConfigFlags_ViewportsEnable )
if ( ! window - > DockIsActive )
if ( ( window - > Flags & ( ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_ChildMenu | ImGuiWindowFlags_Tooltip | ImGuiWindowFlags_Popup ) ) = = 0 )
if ( ( window - > Flags & ( ImGuiWindowFlags_ChildWindow | ImGuiWindowFlags_ChildMenu | ImGuiWindowFlags_Tooltip ) ) = = 0 )
if ( ( window - > Flags & ImGuiWindowFlags_Popup ) = = 0 | | ( window - > Flags & ImGuiWindowFlags_Modal ) ! = 0 )
return true ;
return false ;
}
@ -10715,7 +10723,7 @@ static void ImGui::UpdateSelectWindowViewport(ImGuiWindow* window)
if ( ( g . NextWindowData . Flags & ImGuiNextWindowDataFlags_HasViewport ) = = 0 )
{
// By default inherit from parent window
if ( window - > Viewport = = NULL & & window - > ParentWindow )
if ( window - > Viewport = = NULL & & window - > ParentWindow & & ! window - > ParentWindow - > FallbackWindow )
window - > Viewport = window - > ParentWindow - > Viewport ;
// Attempt to restore saved viewport id (= window that hasn't been activated yet), try to restore the viewport based on saved 'window->ViewportPos' restored from .ini file