@ -1419,7 +1419,7 @@ struct ImGuiWindow 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool                     SkipItems ;                           // == Visible && !Collapsed
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      BeginCount ;                          // Number of Begin() during the current frame (generally 0 or 1, 1+ if appending via multiple Begin/End pairs)
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    ImGuiID                  PopupID ;                             // ID in the popup stack when this window is used as a popup/menu (because we use generic Name/ID for recycling) 
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      AutoFitFrames ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      AutoFitFramesX ,  AutoFitFramesY  ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    bool                     AutoFitOnlyGrows ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      AutoPosLastDirection ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    int                      HiddenFrames ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -1783,7 +1783,7 @@ ImGuiWindow::ImGuiWindow(const char* name) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    SkipItems  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    BeginCount  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    PopupID  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AutoFitFrames  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AutoFitFramesX  =  AutoFitFramesY   =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AutoFitOnlyGrows  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    AutoPosLastDirection  =  - 1 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    HiddenFrames  =  0 ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3499,13 +3499,16 @@ static ImGuiWindow* CreateNewWindow(const char* name, ImVec2 size, ImGuiWindowFl 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ( flags  &  ImGuiWindowFlags_AlwaysAutoResize )  ! =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFrames  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFramesX  =  window - > AutoFitFramesY   =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitOnlyGrows  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else  if  ( ImLengthSqr ( window - > Size )  <  0.00001f )    
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFrames  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitOnlyGrows  =  true ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Size . x  < =  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > AutoFitFramesX  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > Size . y  < =  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > AutoFitFramesY  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitOnlyGrows  =  ( window - > AutoFitFramesX  >  0 )  | |  ( window - > AutoFitFramesY  >  0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    g . Windows . push_back ( window ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3705,8 +3708,10 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // We still process initial auto-fit on collapsed windows to get a window width,
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            // But otherwise we don't honor ImGuiWindowFlags_AlwaysAutoResize when collapsed.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > AutoFitFrames  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > SizeFull  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull ,  size_auto_fit )  :  size_auto_fit ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > AutoFitFramesX  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > SizeFull . x  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull . x ,  size_auto_fit . x )  :  size_auto_fit . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( window - > AutoFitFramesY  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > SizeFull . y  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull . y ,  size_auto_fit . y )  :  size_auto_fit . y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Size  =  window - > TitleBarRect ( ) . GetSize ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -3715,10 +3720,13 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > SizeFull  =  size_auto_fit ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else  if  ( window - > AutoFitFrames  >  0  & &  ! window_size_set_by_api )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            else  if  ( ( window - > AutoFitFramesX   >  0  | |  window - > AutoFitFramesY  >  0 )   & &  ! window_size_set_by_api )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // Auto-fit only grows during the first few frames
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > SizeFull  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull ,  size_auto_fit )  :  size_auto_fit ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( window - > AutoFitFramesX  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    window - > SizeFull . x  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull . x ,  size_auto_fit . x )  :  size_auto_fit . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( window - > AutoFitFramesY  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    window - > SizeFull . y  =  window - > AutoFitOnlyGrows  ?  ImMax ( window - > SizeFull . y ,  size_auto_fit . y )  :  size_auto_fit . y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                if  ( ! ( flags  &  ImGuiWindowFlags_NoSavedSettings ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                    MarkSettingsDirty ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            }   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3801,7 +3809,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Clamp position so it stays visible
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! ( flags  &  ImGuiWindowFlags_ChildWindow )  & &  ! ( flags  &  ImGuiWindowFlags_Tooltip ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! window_pos_set_by_api  & &  window - > AutoFitFrames  < =  0  & &  g . IO . DisplaySize . x  >  0.0f  & &  g . IO . DisplaySize . y  >  0.0f )  // Ignore zero-sized display explicitly to avoid losing positions if a window manager reports zero-sized window when initializing or minimizing.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! window_pos_set_by_api  & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY   < =  0  & &  g . IO . DisplaySize . x  >  0.0f  & &  g . IO . DisplaySize . y  >  0.0f )  // Ignore zero-sized display explicitly to avoid losing positions if a window manager reports zero-sized window when initializing or minimizing.
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                ImVec2  padding  =  ImMax ( style . DisplayWindowPadding ,  style . DisplaySafeAreaPadding ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                window - > PosFloat  =  ImMax ( window - > PosFloat  +  window - > Size ,  padding )  -  window - > Size ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3855,7 +3863,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            ImU32  resize_col  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! ( flags  &  ImGuiWindowFlags_AlwaysAutoResize )  & &  window - > AutoFitFrames  < =  0  & &  ! ( flags  &  ImGuiWindowFlags_NoResize ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            if  ( ! ( flags  &  ImGuiWindowFlags_AlwaysAutoResize )  & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY   < =  0  & &  ! ( flags  &  ImGuiWindowFlags_NoResize ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                // Manual resize
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					                const  ImRect  resize_rect ( window - > Rect ( ) . GetBR ( ) - ImVec2 ( 14 , 14 ) ,  window - > Rect ( ) . GetBR ( ) ) ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -3980,8 +3988,10 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > DC . GroupStack . resize ( 0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > MenuColumns . Update ( 3 ,  style . ItemSpacing . x ,  ! window_was_visible ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > AutoFitFrames  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > AutoFitFrames - - ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > AutoFitFramesX  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > AutoFitFramesX - - ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( window - > AutoFitFramesY  >  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > AutoFitFramesY - - ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Title bar
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! ( flags  &  ImGuiWindowFlags_NoTitleBar ) )   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4039,7 +4049,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        IM_ASSERT ( ( flags  &  ImGuiWindowFlags_NoTitleBar )  ! =  0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Collapsed  =  parent_window  & &  parent_window - > Collapsed ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! ( flags  &  ImGuiWindowFlags_AlwaysAutoResize )  & &  window - > AutoFitFrames  < =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        if  ( ! ( flags  &  ImGuiWindowFlags_AlwaysAutoResize )  & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY   < =  0 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            const  ImVec4  clip_rect_t  =  window - > ClipRectStack . back ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					            window - > Collapsed  | =  ( clip_rect_t . x  > =  clip_rect_t . z  | |  clip_rect_t . y  > =  clip_rect_t . w ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -4054,7 +4064,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size_on_first_ 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > Active  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Return false if we don't intend to display anything to allow user to perform an early out optimization
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > SkipItems  =  ( window - > Collapsed  | |  ! window - > Active )  & &  window - > AutoFitFrames  < =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > SkipItems  =  ( window - > Collapsed  | |  ! window - > Active )  & &  window - > AutoFitFramesX  < =  0  & &  window - > AutoFitFramesY   < =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    return  ! window - > SkipItems ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -4528,15 +4538,24 @@ static void SetWindowSize(ImGuiWindow* window, const ImVec2& size, ImGuiSetCond 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    window - > SetWindowSizeAllowFlags  & =  ~ ( ImGuiSetCond_Once  |  ImGuiSetCond_FirstUseEver  |  ImGuiSetCond_Appearing ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    // Set
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( ImLengthSqr ( size )  >  0.00001f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( size . x  >  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							window - > AutoFitFramesX  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > SizeFull . x  =  size . x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFramesX  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitOnlyGrows  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    if  ( size . y  >  0.0f )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > SizeFull  =  size ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFrames  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							window - > AutoFitFramesY  =  0  ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > SizeFull . y  =  size . y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        // Autofit
   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFrames  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitFramesY  =  2 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					        window - > AutoFitOnlyGrows  =  false ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					    }   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}