@ -5208,9 +5208,8 @@ static void ImGui::RenderDimmedBackgrounds() 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Draw dimming background on _other_ viewports than the ones our windows are in
   
			
		
	
		
			
				
					    for  ( int  viewport_n  =  0 ;  viewport_n  < g . Viewports . Size ;  viewport_n + + )   
			
		
	
		
			
				
					    for  ( ImGuiViewportP *  viewport  : g . Viewports )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ viewport_n ] ;   
			
		
	
		
			
				
					        if  ( viewport  = =  viewports_already_dimmed [ 0 ]  | |  viewport  = =  viewports_already_dimmed [ 1 ] )   
			
		
	
		
			
				
					            continue ;   
			
		
	
		
			
				
					        if  ( modal_window  & &  viewport - > Window  & &  IsWindowAbove ( viewport - > Window ,  modal_window ) )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -9860,9 +9859,8 @@ static void ImGui::ErrorCheckNewFrameSanityChecks() 
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Perform simple checks on platform monitor data + compute a total bounding box for quick early outs
   
			
		
	
		
			
				
					        for  ( int  monitor_n  =  0 ;  monitor_n  < g . PlatformIO . Monitors . Size ;  monitor_n + + )   
			
		
	
		
			
				
					        for  ( ImGuiPlatformMonitor &  mon  : g . PlatformIO . Monitors )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            ImGuiPlatformMonitor &  mon  =  g . PlatformIO . Monitors [ monitor_n ] ;   
			
		
	
		
			
				
					            IM_UNUSED ( mon ) ;   
			
		
	
		
			
				
					            IM_ASSERT ( mon . MainSize . x  >  0.0f  & &  mon . MainSize . y  >  0.0f  & &  " Monitor main bounds not setup properly. " ) ;   
			
		
	
		
			
				
					            IM_ASSERT ( ImRect ( mon . MainPos ,  mon . MainPos  +  mon . MainSize ) . Contains ( ImRect ( mon . WorkPos ,  mon . WorkPos  +  mon . WorkSize ) )  & &  " Monitor work bounds not setup properly. If you don't have work area information, just copy MainPos/MainSize into them. " ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -10909,8 +10907,8 @@ bool ImGui::IsPopupOpen(ImGuiID id, ImGuiPopupFlags popup_flags) 
			
		
	
		
			
				
					        if  ( popup_flags  &  ImGuiPopupFlags_AnyPopupLevel )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            // Return true if the popup is open anywhere in the popup stack
   
			
		
	
		
			
				
					            for  ( int  n  =  0 ;  n  < g . OpenPopupStack . Size ;  n + + )   
			
		
	
		
			
				
					                if  ( g . OpenPopupStack [ n ] . PopupId  = =  id )   
			
		
	
		
			
				
					            for  ( ImGuiPopupData &  popup_data  : g . OpenPopupStack )   
			
		
	
		
			
				
					                if  ( popup_data . PopupId  = =  id )   
			
		
	
		
			
				
					                    return  true ;   
			
		
	
		
			
				
					            return  false ;   
			
		
	
		
			
				
					        }   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -13989,18 +13987,18 @@ ImGuiViewport* ImGui::GetMainViewport() 
			
		
	
		
			
				
					ImGuiViewport *  ImGui : : FindViewportByID ( ImGuiID  id )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < g . Viewports . Size ;  n + + )   
			
		
	
		
			
				
					        if  ( g . Viewports [ n ] - > ID  = =  id )   
			
		
	
		
			
				
					            return  g . Viewports [ n ] ;   
			
		
	
		
			
				
					    for  ( ImGuiViewportP *  viewport  : g . Viewports )   
			
		
	
		
			
				
					        if  ( viewport - > ID  = =  id )   
			
		
	
		
			
				
					            return  viewport ;   
			
		
	
		
			
				
					    return  NULL ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					ImGuiViewport *  ImGui : : FindViewportByPlatformHandle ( void *  platform_handle )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    for  ( int  i  =  0 ;  i  ! =  g . Viewports . Size ;  i + + )   
			
		
	
		
			
				
					        if  ( g . Viewports [ i ] - > PlatformHandle  = =  platform_handle )   
			
		
	
		
			
				
					            return  g . Viewports [ i ] ;   
			
		
	
		
			
				
					    for  ( ImGuiViewportP *  viewport  :  g . Viewports )   
			
		
	
		
			
				
					        if  ( viewport - > PlatformHandle  = =  platform_handle )   
			
		
	
		
			
				
					            return  viewport ;   
			
		
	
		
			
				
					    return  NULL ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -14062,9 +14060,8 @@ static bool ImGui::UpdateTryMergeWindowIntoHostViewport(ImGuiWindow* window, ImG 
			
		
	
		
			
				
					        return  false ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // FIXME: Can't use g.WindowsFocusOrder[] for root windows only as we care about Z order. If we maintained a DisplayOrder along with FocusOrder we could..
   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < g . Windows . Size ;  n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window_behind  : g . Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiWindow *  window_behind  =  g . Windows [ n ] ;   
			
		
	
		
			
				
					        if  ( window_behind  = =  window )   
			
		
	
		
			
				
					            break ;   
			
		
	
		
			
				
					        if  ( window_behind - > WasActive  & &  window_behind - > ViewportOwned  & &  ! ( window_behind - > Flags  &  ImGuiWindowFlags_ChildWindow ) )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -14106,9 +14103,9 @@ void ImGui::TranslateWindowsInViewport(ImGuiViewportP* viewport, const ImVec2& o 
			
		
	
		
			
				
					    const  bool  translate_all_windows  =  ( g . ConfigFlagsCurrFrame  &  ImGuiConfigFlags_ViewportsEnable )  ! =  ( g . ConfigFlagsLastFrame  &  ImGuiConfigFlags_ViewportsEnable ) ;   
			
		
	
		
			
				
					    ImRect  test_still_fit_rect ( old_pos ,  old_pos  +  viewport - > Size ) ;   
			
		
	
		
			
				
					    ImVec2  delta_pos  =  new_pos  -  old_pos ;   
			
		
	
		
			
				
					    for  ( int  window_n  =  0 ;  window_n  < g . Windows . Size ;  window_n + + )  // FIXME-OPT
   
			
		
	
		
			
				
					        if  ( translate_all_windows  | |  ( g . Windows [ window_n ]  - > Viewport  = =  viewport  & &  test_still_fit_rect . Contains ( g . Windows [ window_n ]  - > Rect ( ) ) ) )   
			
		
	
		
			
				
					            TranslateWindow ( g . Windows [ window_n ]  ,  delta_pos ) ;   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : g . Windows )  // FIXME-OPT
   
			
		
	
		
			
				
					        if  ( translate_all_windows  | |  ( window - > Viewport  = =  viewport  & &  test_still_fit_rect . Contains ( window - > Rect ( ) ) ) )   
			
		
	
		
			
				
					            TranslateWindow ( window ,  delta_pos ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					// Scale all windows (position, size). Use when e.g. changing DPI. (This is a lossy operation!)
  
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -14121,9 +14118,9 @@ void ImGui::ScaleWindowsInViewport(ImGuiViewportP* viewport, float scale) 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    else   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        for  ( int  i  =  0 ;  i  ! =  g . Windows . Size ;  i + + )   
			
		
	
		
			
				
					            if  ( g . Windows [ i ] - > Viewport  = =  viewport )   
			
		
	
		
			
				
					                ScaleWindow ( g . Windows [ i ] ,  scale ) ;   
			
		
	
		
			
				
					        for  ( ImGuiWindow *  window  :  g . Windows )   
			
		
	
		
			
				
					            if  ( window - > Viewport  = =  viewport )   
			
		
	
		
			
				
					                ScaleWindow ( window ,  scale ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -14134,13 +14131,10 @@ ImGuiViewportP* ImGui::FindHoveredViewportFromPlatformWindowStack(const ImVec2& 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    ImGuiViewportP *  best_candidate  =  NULL ;   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  <  g . Viewports . Size ;  n + + )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
			
		
	
		
			
				
					    for  ( ImGuiViewportP *  viewport  :  g . Viewports )   
			
		
	
		
			
				
					        if  ( ! ( viewport - > Flags  &  ( ImGuiViewportFlags_NoInputs  |  ImGuiViewportFlags_IsMinimized ) )  & &  viewport - > GetMainRect ( ) . Contains ( mouse_platform_pos ) )   
			
		
	
		
			
				
					            if  ( best_candidate  = =  NULL  | |  best_candidate - > LastFocusedStampCount  <  viewport - > LastFocusedStampCount )   
			
		
	
		
			
				
					                best_candidate  =  viewport ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    return  best_candidate ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -14157,9 +14151,8 @@ static void ImGui::UpdateViewportsNewFrame() 
			
		
	
		
			
				
					    if  ( viewports_enabled )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiViewportP *  focused_viewport  =  NULL ;   
			
		
	
		
			
				
					        for  ( int  n  =  0 ;  n  < g . Viewports . Size ;  n + + )   
			
		
	
		
			
				
					        for  ( ImGuiViewportP *  viewport  : g . Viewports )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            ImGuiViewportP *  viewport  =  g . Viewports [ n ] ;   
			
		
	
		
			
				
					            const  bool  platform_funcs_available  =  viewport - > PlatformWindowCreated ;   
			
		
	
		
			
				
					            if  ( g . PlatformIO . Platform_GetWindowMinimized  & &  platform_funcs_available )   
			
		
	
		
			
				
					            {   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -14459,9 +14452,8 @@ static void ImGui::DestroyViewport(ImGuiViewportP* viewport) 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    // Clear references to this viewport in windows (window->ViewportId becomes the master data)
   
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    for  ( int  window_n  =  0 ;  window_n  < g . Windows . Size ;  window_n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : g . Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiWindow *  window  =  g . Windows [ window_n ] ;   
			
		
	
		
			
				
					        if  ( window - > Viewport  ! =  viewport )   
			
		
	
		
			
				
					            continue ;   
			
		
	
		
			
				
					        window - > Viewport  =  NULL ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -14939,8 +14931,8 @@ void ImGui::DestroyPlatformWindows() 
			
		
	
		
			
				
					    // It is expected that the backend can handle calls to Renderer_DestroyWindow/Platform_DestroyWindow without
   
			
		
	
		
			
				
					    // crashing if it doesn't have data stored.
   
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    for  ( int  i  =  0 ;  i  <  g . Viewports . Size ;  i + + )   
			
		
	
		
			
				
					        DestroyPlatformWindow ( g . Viewports [ i ] ) ;   
			
		
	
		
			
				
					    for  ( ImGuiViewportP *  viewport  :  g . Viewports )   
			
		
	
		
			
				
					        DestroyPlatformWindow ( viewport ) ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -15251,13 +15243,12 @@ void ImGui::DockContextNewFrameUpdateUndocking(ImGuiContext* ctx) 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Process Undocking requests (we need to process them _before_ the UpdateMouseMovingWindowNewFrame call in NewFrame)
   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < dc - > Requests . Size ;  n + + )   
			
		
	
		
			
				
					    for  ( ImGuiDockRequest &  req  : dc - > Requests )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiDockRequest *  req  =  & dc - > Requests [ n ] ;   
			
		
	
		
			
				
					        if  ( req - > Type  = =  ImGuiDockRequestType_Undock  & &  req - > UndockTargetWindow )   
			
		
	
		
			
				
					            DockContextProcessUndockWindow ( ctx ,  req - > UndockTargetWindow ) ;   
			
		
	
		
			
				
					        else  if  ( req - > Type  = =  ImGuiDockRequestType_Undock  & &  req - > UndockTargetNode )   
			
		
	
		
			
				
					            DockContextProcessUndockNode ( ctx ,  req - > UndockTargetNode ) ;   
			
		
	
		
			
				
					        if  ( req . Type  = =  ImGuiDockRequestType_Undock  & &  req . UndockTargetWindow )   
			
		
	
		
			
				
					            DockContextProcessUndockWindow ( ctx ,  req . UndockTargetWindow ) ;   
			
		
	
		
			
				
					        else  if  ( req . Type  = =  ImGuiDockRequestType_Undock  & &  req . UndockTargetNode )   
			
		
	
		
			
				
					            DockContextProcessUndockNode ( ctx ,  req . UndockTargetNode ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -15282,9 +15273,9 @@ void ImGui::DockContextNewFrameUpdateDocking(ImGuiContext* ctx) 
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Process Docking requests
   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < dc - > Requests . Size ;  n + + )   
			
		
	
		
			
				
					        if  ( dc - > Requests [ n ] . Type  = =  ImGuiDockRequestType_Dock )   
			
		
	
		
			
				
					            DockContextProcessDock ( ctx ,  & dc - > Requests [ n ] ) ;   
			
		
	
		
			
				
					    for  ( ImGuiDockRequest &  req  : dc - > Requests )   
			
		
	
		
			
				
					        if  ( req . Type  = =  ImGuiDockRequestType_Dock )   
			
		
	
		
			
				
					            DockContextProcessDock ( ctx ,  & req ) ;   
			
		
	
		
			
				
					    dc - > Requests . resize ( 0 ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    // Create windows for each automatic docking nodes
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -15488,9 +15479,8 @@ void ImGui::DockContextBuildAddWindowsToNodes(ImGuiContext* ctx, ImGuiID root_id 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    // Rebind all windows to nodes (they can also lazily rebind but we'll have a visible glitch during the first frame)
   
			
		
	
		
			
				
					    ImGuiContext &  g  =  * ctx ;   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < g . Windows . Size ;  n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : g . Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiWindow *  window  =  g . Windows [ n ] ;   
			
		
	
		
			
				
					        if  ( window - > DockId  = =  0  | |  window - > LastFrameActive  <  g . FrameCount  -  1 )   
			
		
	
		
			
				
					            continue ;   
			
		
	
		
			
				
					        if  ( window - > DockNode  ! =  NULL )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -15549,9 +15539,9 @@ void ImGui::DockContextQueueUndockNode(ImGuiContext* ctx, ImGuiDockNode* node) 
			
		
	
		
			
				
					void  ImGui : : DockContextQueueNotifyRemovedNode ( ImGuiContext *  ctx ,  ImGuiDockNode *  node )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiDockContext *  dc   =  & ctx - > DockContext ;   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < dc - > Requests . Size ;  n + + )   
			
		
	
		
			
				
					        if  ( dc - > Requests [ n ] . DockTargetNode  = =  node )   
			
		
	
		
			
				
					            dc - > Requests [ n ] . Type  =  ImGuiDockRequestType_None ;   
			
		
	
		
			
				
					    for  ( ImGuiDockRequest &  req  : dc - > Requests )   
			
		
	
		
			
				
					        if  ( req . DockTargetNode  = =  node )   
			
		
	
		
			
				
					            req . Type  =  ImGuiDockRequestType_None ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  ImGui : : DockContextProcessDock ( ImGuiContext *  ctx ,  ImGuiDockRequest *  req )  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -15759,9 +15749,8 @@ void ImGui::DockContextProcessUndockNode(ImGuiContext* ctx, ImGuiDockNode* node) 
			
		
	
		
			
				
					        node - > ParentNode - > AuthorityForViewport  =  ImGuiDataAuthority_Window ;  // The node that stays in place keeps the viewport, so our newly dragged out node will create a new viewport
   
			
		
	
		
			
				
					        node - > ParentNode  =  NULL ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < node - > Windows . Size ;  n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : node - > Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiWindow *  window  =  node - > Windows [ n ] ;   
			
		
	
		
			
				
					        window - > Flags  & =  ~ ImGuiWindowFlags_ChildWindow ;   
			
		
	
		
			
				
					        if  ( window - > ParentWindow )   
			
		
	
		
			
				
					            window - > ParentWindow - > DC . ChildWindows . find_erase ( window ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -16046,10 +16035,10 @@ static void ImGui::DockNodeMoveWindows(ImGuiDockNode* dst_node, ImGuiDockNode* s 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					static  void  ImGui : : DockNodeApplyPosSizeToWindows ( ImGuiDockNode *  node )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < node - > Windows . Size ;  n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : node - > Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        SetWindowPos ( node - > Windows [ n ] ,  node - > Pos ,  ImGuiCond_Always ) ;  // We don't assign directly to Pos because it can break the calculation of SizeContents on next frame
   
			
		
	
		
			
				
					        SetWindowSize ( node - > Windows [ n ] ,  node - > Size ,  ImGuiCond_Always ) ;   
			
		
	
		
			
				
					        SetWindowPos ( window ,  node - > Pos ,  ImGuiCond_Always ) ;  // We don't assign directly to Pos because it can break the calculation of SizeContents on next frame
   
			
		
	
		
			
				
					        SetWindowSize ( window ,  node - > Size ,  ImGuiCond_Always ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -16108,9 +16097,9 @@ static void DockNodeFindInfo(ImGuiDockNode* node, ImGuiDockNodeTreeInfo* info) 
			
		
	
		
			
				
					static  ImGuiWindow *  ImGui : : DockNodeFindWindowByID ( ImGuiDockNode *  node ,  ImGuiID  id )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    IM_ASSERT ( id  ! =  0 ) ;   
			
		
	
		
			
				
					    for  ( int  n  =  0 ;  n  < node - > Windows . Size ;  n + + )   
			
		
	
		
			
				
					        if  ( node - > Windows [ n ] - > ID  = =  id )   
			
		
	
		
			
				
					            return  node - > Windows [ n ] ;   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : node - > Windows )   
			
		
	
		
			
				
					        if  ( window - > ID  = =  id )   
			
		
	
		
			
				
					            return  window ;   
			
		
	
		
			
				
					    return  NULL ;   
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -16375,10 +16364,9 @@ static void ImGui::DockNodeUpdate(ImGuiDockNode* node) 
			
		
	
		
			
				
					    // Decide if the node will have a close button and a window menu button
   
			
		
	
		
			
				
					    node - > HasWindowMenuButton  =  ( node - > Windows . Size  >  0 )  & &  ( node_flags  &  ImGuiDockNodeFlags_NoWindowMenuButton )  = =  0 ;   
			
		
	
		
			
				
					    node - > HasCloseButton  =  false ;   
			
		
	
		
			
				
					    for  ( int  window_n  =  0 ;  window_n  < node - > Windows . Size ;  window_n + + )   
			
		
	
		
			
				
					    for  ( ImGuiWindow *  window  : node - > Windows )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        // FIXME-DOCK: Setting DockIsActive here means that for single active window in a leaf node, DockIsActive will be cleared until the next Begin() call.
   
			
		
	
		
			
				
					        ImGuiWindow *  window  =  node - > Windows [ window_n ] ;   
			
		
	
		
			
				
					        node - > HasCloseButton  | =  window - > HasCloseButton ;   
			
		
	
		
			
				
					        window - > DockIsActive  =  ( node - > Windows . Size  >  1 ) ;   
			
		
	
		
			
				
					    }