@ -5307,6 +5307,40 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
			
				
					        else   
			
		
	
		
			
				
					            window - > ItemWidthDefault  =  ( float ) ( int ) ( g . FontSize  *  16.0f ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Store a backup of SizeFull which we will use next frame to decide if we need scrollbars.
   
			
		
	
		
			
				
					        window - > SizeFullAtLastBegin  =  window - > SizeFull ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // UPDATE RECTANGLES
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Update various regions. Variables they depends on are set above in this function.
   
			
		
	
		
			
				
					        // FIXME: window->ContentsRegionRect.Max is currently very misleading / partly faulty, but some BeginChild() patterns relies on it.
   
			
		
	
		
			
				
					        // NB: WindowBorderSize is included in WindowPadding _and_ ScrollbarSizes so we need to cancel one out.
   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Min . x  =  window - > Pos . x  -  window - > Scroll . x  +  window - > WindowPadding . x ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Min . y  =  window - > Pos . y  -  window - > Scroll . y  +  window - > WindowPadding . y  +  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Max . x  =  window - > Pos . x  -  window - > Scroll . x  -  window - > WindowPadding . x  +  ( window - > SizeContentsExplicit . x  ! =  0.0f  ?  window - > SizeContentsExplicit . x  :  ( window - > Size . x  -  window - > ScrollbarSizes . x  +  ImMin ( window - > ScrollbarSizes . x ,  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Max . y  =  window - > Pos . y  -  window - > Scroll . y  -  window - > WindowPadding . y  +  ( window - > SizeContentsExplicit . y  ! =  0.0f  ?  window - > SizeContentsExplicit . y  :  ( window - > Size . y  -  window - > ScrollbarSizes . y  +  ImMin ( window - > ScrollbarSizes . y ,  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Save clipped aabb so we can access it in constant-time in FindHoveredWindow()
   
			
		
	
		
			
				
					        window - > OuterRectClipped  =  window - > Rect ( ) ;   
			
		
	
		
			
				
					        window - > OuterRectClipped . ClipWith ( window - > ClipRect ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Inner rectangle
   
			
		
	
		
			
				
					        // We set this up after processing the resize grip so that our clip rectangle doesn't lag by a frame
   
			
		
	
		
			
				
					        // Note that if our window is collapsed we will end up with an inverted (~null) clipping rectangle which is the correct behavior.
   
			
		
	
		
			
				
					        const  ImRect  title_bar_rect  =  window - > TitleBarRect ( ) ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Min . x  =  title_bar_rect . Min . x  +  window - > WindowBorderSize ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Min . y  =  title_bar_rect . Max . y  +  window - > MenuBarHeight ( )  +  ( ( ( flags  &  ImGuiWindowFlags_MenuBar )  | |  ! ( flags  &  ImGuiWindowFlags_NoTitleBar ) )  ?  style . FrameBorderSize  :  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Max . x  =  window - > Pos . x  +  window - > Size . x  -  ImMax ( window - > ScrollbarSizes . x ,  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Max . y  =  window - > Pos . y  +  window - > Size . y  -  ImMax ( window - > ScrollbarSizes . y ,  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Inner clipping rectangle will extend a little bit outside the work region.
   
			
		
	
		
			
				
					        // This is to allow e.g. Selectable or CollapsingHeader or some separators to cover that space.
   
			
		
	
		
			
				
					        // Force round operator last to ensure that e.g. (int)(max.x-min.x) in user's render code produce correct result.
   
			
		
	
		
			
				
					        window - > InnerClipRect . Min . x  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Min . x  +  ImMax ( 0.0f ,  ImFloor ( window - > WindowPadding . x  *  0.5f  -  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Min . y  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Min . y ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Max . x  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Max . x  -  ImMax ( 0.0f ,  ImFloor ( window - > WindowPadding . x  *  0.5f  -  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Max . y  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Max . y ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // DRAWING
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Setup draw list and outer clipping rectangle
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -5342,7 +5376,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
			
				
					        const  float  window_border_size  =  window - > WindowBorderSize ;   
			
		
	
		
			
				
					        const  ImGuiWindow *  window_to_highlight  =  g . NavWindowingTarget  ?  g . NavWindowingTarget  :  g . NavWindow ;   
			
		
	
		
			
				
					        const  bool  title_bar_is_highlight  =  want_focus  | |  ( window_to_highlight  & &  window - > RootWindowForTitleBarHighlight  = =  window_to_highlight - > RootWindowForTitleBarHighlight ) ;   
			
		
	
		
			
				
					        const  ImRect  title_bar_rect  =  window - > TitleBarRect ( ) ;   
			
		
	
		
			
				
					        if  ( window - > Collapsed )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            // Title bar only
   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -5422,37 +5455,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) 
			
		
	
		
			
				
					            window - > DrawList - > AddRect ( bb . Min ,  bb . Max ,  GetColorU32 ( ImGuiCol_NavWindowingHighlight ,  g . NavWindowingHighlightAlpha ) ,  rounding ,  ~ 0 ,  3.0f ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Store a backup of SizeFull which we will use next frame to decide if we need scrollbars.
   
			
		
	
		
			
				
					        window - > SizeFullAtLastBegin  =  window - > SizeFull ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Update various regions. Variables they depends on are set above in this function.
   
			
		
	
		
			
				
					        // FIXME: window->ContentsRegionRect.Max is currently very misleading / partly faulty, but some BeginChild() patterns relies on it.
   
			
		
	
		
			
				
					        // NB: WindowBorderSize is included in WindowPadding _and_ ScrollbarSizes so we need to cancel one out.
   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Min . x  =  window - > Pos . x  -  window - > Scroll . x  +  window - > WindowPadding . x ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Min . y  =  window - > Pos . y  -  window - > Scroll . y  +  window - > WindowPadding . y  +  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Max . x  =  window - > Pos . x  -  window - > Scroll . x  -  window - > WindowPadding . x  +  ( window - > SizeContentsExplicit . x  ! =  0.0f  ?  window - > SizeContentsExplicit . x  :  ( window - > Size . x  -  window - > ScrollbarSizes . x  +  ImMin ( window - > ScrollbarSizes . x ,  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > ContentsRegionRect . Max . y  =  window - > Pos . y  -  window - > Scroll . y  -  window - > WindowPadding . y  +  ( window - > SizeContentsExplicit . y  ! =  0.0f  ?  window - > SizeContentsExplicit . y  :  ( window - > Size . y  -  window - > ScrollbarSizes . y  +  ImMin ( window - > ScrollbarSizes . y ,  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Save clipped aabb so we can access it in constant-time in FindHoveredWindow()
   
			
		
	
		
			
				
					        window - > OuterRectClipped  =  window - > Rect ( ) ;   
			
		
	
		
			
				
					        window - > OuterRectClipped . ClipWith ( window - > ClipRect ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Inner rectangle
   
			
		
	
		
			
				
					        // We set this up after processing the resize grip so that our clip rectangle doesn't lag by a frame
   
			
		
	
		
			
				
					        // Note that if our window is collapsed we will end up with an inverted (~null) clipping rectangle which is the correct behavior.
   
			
		
	
		
			
				
					        window - > InnerMainRect . Min . x  =  title_bar_rect . Min . x  +  window - > WindowBorderSize ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Min . y  =  title_bar_rect . Max . y  +  window - > MenuBarHeight ( )  +  ( ( ( flags  &  ImGuiWindowFlags_MenuBar )  | |  ! ( flags  &  ImGuiWindowFlags_NoTitleBar ) )  ?  style . FrameBorderSize  :  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Max . x  =  window - > Pos . x  +  window - > Size . x  -  ImMax ( window - > ScrollbarSizes . x ,  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					        window - > InnerMainRect . Max . y  =  window - > Pos . y  +  window - > Size . y  -  ImMax ( window - > ScrollbarSizes . y ,  window - > WindowBorderSize ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Inner clipping rectangle will extend a little bit outside the work region.
   
			
		
	
		
			
				
					        // This is to allow e.g. Selectable or CollapsingHeader or some separators to cover that space.
   
			
		
	
		
			
				
					        // Force round operator last to ensure that e.g. (int)(max.x-min.x) in user's render code produce correct result.
   
			
		
	
		
			
				
					        window - > InnerClipRect . Min . x  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Min . x  +  ImMax ( 0.0f ,  ImFloor ( window - > WindowPadding . x  *  0.5f  -  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Min . y  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Min . y ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Max . x  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Max . x  -  ImMax ( 0.0f ,  ImFloor ( window - > WindowPadding . x  *  0.5f  -  window - > WindowBorderSize ) ) ) ;   
			
		
	
		
			
				
					        window - > InnerClipRect . Max . y  =  ImFloor ( 0.5f  +  window - > InnerMainRect . Max . y ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // Setup drawing context
   
			
		
	
		
			
				
					        // (NB: That term "drawing context / DC" lost its meaning a long time ago. Initially was meant to hold transient data only. Nowadays difference between window-> and window->DC-> is dubious.)
   
			
		
	
		
			
				
					        window - > DC . Indent . x  =  0.0f  +  window - > WindowPadding . x  -  window - > Scroll . x ;