@ -5172,8 +5172,9 @@ static ImVec2 CalcWindowSizeAfterConstraint(ImGuiWindow* window, const ImVec2& s 
			
		
	
		
			
				
					    if  ( ! ( window - > Flags  &  ( ImGuiWindowFlags_ChildWindow  |  ImGuiWindowFlags_AlwaysAutoResize ) ) )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        ImGuiWindow *  window_for_height  =  window ;   
			
		
	
		
			
				
					        const  float  decoration_up_height  =  window_for_height - > TitleBarHeight ( )  +  window_for_height - > MenuBarHeight ( ) ;   
			
		
	
		
			
				
					        new_size  =  ImMax ( new_size ,  g . Style . WindowMinSize ) ;   
			
		
	
		
			
				
					        new_size . y  =  ImMax ( new_size . y ,  window_for_height - > TitleBarHeight ( )  +  window_for_height - > MenuBarHeight ( ) +  ImMax ( 0.0f ,  g . Style . WindowRounding  -  1.0f ) ) ;  // Reduce artifacts with very small windows
   
			
		
	
		
			
				
					        new_size . y  =  ImMax ( new_size . y ,  decoration_up_height +  ImMax ( 0.0f ,  g . Style . WindowRounding  -  1.0f ) ) ;  // Reduce artifacts with very small windows
   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    return  new_size ;   
			
		
	
		
			
				
					}  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -5202,9 +5203,9 @@ static ImVec2 CalcWindowAutoFitSize(ImGuiWindow* window, const ImVec2& size_cont 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    ImGuiStyle &  style  =  g . Style ;   
			
		
	
		
			
				
					    ImVec2  size_decorations  =  ImVec2 ( 0.0f , window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ) ;   
			
		
	
		
			
				
					    const  float  decoration_up_height  = window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;   
			
		
	
		
			
				
					    ImVec2  size_pad  =  window - > WindowPadding  *  2.0f ;   
			
		
	
		
			
				
					    ImVec2  size_desired  =  size_contents  +  size_pad  +  size_decorations ;   
			
		
	
		
			
				
					    ImVec2  size_desired  =  size_contents  +  size_pad  +  ImVec2 ( 0.0f ,  decoration_up_height ) ;   
			
		
	
		
			
				
					    if  ( window - > Flags  &  ImGuiWindowFlags_Tooltip )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        // Tooltip always resize
   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -5226,8 +5227,8 @@ static ImVec2 CalcWindowAutoFitSize(ImGuiWindow* window, const ImVec2& size_cont 
			
		
	
		
			
				
					        // When the window cannot fit all contents (either because of constraints, either because screen is too small),
   
			
		
	
		
			
				
					        // we are growing the size on the other axis to compensate for expected scrollbar. FIXME: Might turn bigger than ViewportSize-WindowPadding.
   
			
		
	
		
			
				
					        ImVec2  size_auto_fit_after_constraint  =  CalcWindowSizeAfterConstraint ( window ,  size_auto_fit ) ;   
			
		
	
		
			
				
					        bool  will_have_scrollbar_x  =  ( size_auto_fit_after_constraint . x  -  size_pad . x  -  size_decorations . x <  size_contents . x  & &  ! ( window - > Flags  &  ImGuiWindowFlags_NoScrollbar )  & &  ( window - > Flags  &  ImGuiWindowFlags_HorizontalScrollbar ) )  | |  ( window - > Flags  &  ImGuiWindowFlags_AlwaysHorizontalScrollbar ) ;   
			
		
	
		
			
				
					        bool  will_have_scrollbar_y  =  ( size_auto_fit_after_constraint . y  -  size_pad . y  -  size_decorations . y <  size_contents . y  & &  ! ( window - > Flags  &  ImGuiWindowFlags_NoScrollbar ) )  | |  ( window - > Flags  &  ImGuiWindowFlags_AlwaysVerticalScrollbar ) ;   
			
		
	
		
			
				
					        bool  will_have_scrollbar_x  =  ( size_auto_fit_after_constraint . x  -  size_pad . x  -  0.0f                 <  size_contents . x  & &  ! ( window - > Flags  &  ImGuiWindowFlags_NoScrollbar )  & &  ( window - > Flags  &  ImGuiWindowFlags_HorizontalScrollbar ) )  | |  ( window - > Flags  &  ImGuiWindowFlags_AlwaysHorizontalScrollbar ) ;   
			
		
	
		
			
				
					        bool  will_have_scrollbar_y  =  ( size_auto_fit_after_constraint . y  -  size_pad . y  -  decoration_up_height <  size_contents . y  & &  ! ( window - > Flags  &  ImGuiWindowFlags_NoScrollbar ) )  | |  ( window - > Flags  &  ImGuiWindowFlags_AlwaysVerticalScrollbar ) ;   
			
		
	
		
			
				
					        if  ( will_have_scrollbar_x )   
			
		
	
		
			
				
					            size_auto_fit . y  + =  style . ScrollbarSize ;   
			
		
	
		
			
				
					        if  ( will_have_scrollbar_y )   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -7774,24 +7775,29 @@ static ImVec2 CalcNextScrollFromScrollTargetAndClamp(ImGuiWindow* window) 
			
		
	
		
			
				
					    ImVec2  scroll  =  window - > Scroll ;   
			
		
	
		
			
				
					    if  ( window - > ScrollTarget . x  <  FLT_MAX )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        float  decoration_total_width  =  window - > ScrollbarSizes . x ;   
			
		
	
		
			
				
					        float  center_x_ratio  =  window - > ScrollTargetCenterRatio . x ;   
			
		
	
		
			
				
					        float  scroll_target_x  =  window - > ScrollTarget . x ;   
			
		
	
		
			
				
					        float  snap_x_min  =  0.0f ;   
			
		
	
		
			
				
					        float  snap_x_max  =  window - > ScrollMax . x  +  window - > Size . x ;   
			
		
	
		
			
				
					        if  ( window - > ScrollTargetEdgeSnapDist . x  >  0.0f )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            float  snap_x_min  =  0.0f ;   
			
		
	
		
			
				
					            float  snap_x_max  =  window - > ScrollMax . x  +  window - > SizeFull . x  -  decoration_total_width ;   
			
		
	
		
			
				
					            scroll_target_x  =  CalcScrollEdgeSnap ( scroll_target_x ,  snap_x_min ,  snap_x_max ,  window - > ScrollTargetEdgeSnapDist . x ,  center_x_ratio ) ;   
			
		
	
		
			
				
					        scroll . x  =  scroll_target_x  -  center_x_ratio  *  ( window - > SizeFull . x  -  window - > ScrollbarSizes . x ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        scroll . x  =  scroll_target_x  -  center_x_ratio  *  ( window - > SizeFull . x  -  decoration_total_width ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    if  ( window - > ScrollTarget . y  <  FLT_MAX )   
			
		
	
		
			
				
					    {   
			
		
	
		
			
				
					        float  decoration_up _height  =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;   
			
		
	
		
			
				
					        float  decoration_total _height  =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( )  +  window - > ScrollbarSizes . y  ;   
			
		
	
		
			
				
					        float  center_y_ratio  =  window - > ScrollTargetCenterRatio . y ;   
			
		
	
		
			
				
					        float  scroll_target_y  =  window - > ScrollTarget . y ;   
			
		
	
		
			
				
					        float  snap_y_min  =  0.0f ;   
			
		
	
		
			
				
					        float  snap_y_max  =  window - > ScrollMax . y  +  window - > Size . y  -  decoration_up_height ;   
			
		
	
		
			
				
					        if  ( window - > ScrollTargetEdgeSnapDist . y  >  0.0f )   
			
		
	
		
			
				
					        {   
			
		
	
		
			
				
					            float  snap_y_min  =  0.0f ;   
			
		
	
		
			
				
					            float  snap_y_max  =  window - > ScrollMax . y  +  window - > SizeFull . y  -  decoration_total_height ;   
			
		
	
		
			
				
					            scroll_target_y  =  CalcScrollEdgeSnap ( scroll_target_y ,  snap_y_min ,  snap_y_max ,  window - > ScrollTargetEdgeSnapDist . y ,  center_y_ratio ) ;   
			
		
	
		
			
				
					        scroll . y  =  scroll_target_y  -  center_y_ratio  *  ( window - > SizeFull . y  -  window - > ScrollbarSizes . y  -  decoration_up_height ) ;   
			
		
	
		
			
				
					        }   
			
		
	
		
			
				
					        scroll . y  =  scroll_target_y  -  center_y_ratio  *  ( window - > SizeFull . y  -  decoration_total_height ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					    scroll . x  =  IM_FLOOR ( ImMax ( scroll . x ,  0.0f ) ) ;   
			
		
	
		
			
				
					    scroll . y  =  IM_FLOOR ( ImMax ( scroll . y ,  0.0f ) ) ;   
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -7904,7 +7910,8 @@ void ImGui::SetScrollFromPosX(ImGuiWindow* window, float local_x, float center_x 
			
		
	
		
			
				
					void  ImGui : : SetScrollFromPosY ( ImGuiWindow *  window ,  float  local_y ,  float  center_y_ratio )  
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    IM_ASSERT ( center_y_ratio  > =  0.0f  & &  center_y_ratio  < =  1.0f ) ;   
			
		
	
		
			
				
					    local_y  - =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;  // FIXME: Would be nice to have a more standardized access to our scrollable/client rect
   
			
		
	
		
			
				
					    const  float  decoration_up_height  =  window - > TitleBarHeight ( )  +  window - > MenuBarHeight ( ) ;  // FIXME: Would be nice to have a more standardized access to our scrollable/client rect;
   
			
		
	
		
			
				
					    local_y  - =  decoration_up_height ;   
			
		
	
		
			
				
					    window - > ScrollTarget . y  =  IM_FLOOR ( local_y  +  window - > Scroll . y ) ;  // Convert local position to scroll offset
   
			
		
	
		
			
				
					    window - > ScrollTargetCenterRatio . y  =  center_y_ratio ;   
			
		
	
		
			
				
					    window - > ScrollTargetEdgeSnapDist . y  =  0.0f ;   
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -7927,7 +7934,7 @@ void ImGui::SetScrollHereX(float center_x_ratio) 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    ImGuiWindow *  window  =  g . CurrentWindow ;   
			
		
	
		
			
				
					    float  spacing_x  =  g . Style . ItemSpacing . x ;   
			
		
	
		
			
				
					    float  spacing_x  =  ImMax ( window - > WindowPadding . x ,  g . Style . ItemSpacing . x ) ;   
			
		
	
		
			
				
					    float  target_pos_x  =  ImLerp ( window - > DC . LastItemRect . Min . x  -  spacing_x ,  window - > DC . LastItemRect . Max . x  +  spacing_x ,  center_x_ratio ) ;   
			
		
	
		
			
				
					    SetScrollFromPosX ( window ,  target_pos_x  -  window - > Pos . x ,  center_x_ratio ) ;  // Convert from absolute to local pos
   
			
		
	
		
			
				
					
 
			
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
				@ -7940,7 +7947,7 @@ void ImGui::SetScrollHereY(float center_y_ratio) 
			
		
	
		
			
				
					{  
			
		
	
		
			
				
					    ImGuiContext &  g  =  * GImGui ;   
			
		
	
		
			
				
					    ImGuiWindow *  window  =  g . CurrentWindow ;   
			
		
	
		
			
				
					    float  spacing_y  =  g . Style . ItemSpacing . y ;   
			
		
	
		
			
				
					    float  spacing_y  =  ImMax ( window - > WindowPadding . y ,  g . Style . ItemSpacing . y ) ;   
			
		
	
		
			
				
					    float  target_pos_y  =  ImLerp ( window - > DC . CursorPosPrevLine . y  -  spacing_y ,  window - > DC . CursorPosPrevLine . y  +  window - > DC . PrevLineSize . y  +  spacing_y ,  center_y_ratio ) ;   
			
		
	
		
			
				
					    SetScrollFromPosY ( window ,  target_pos_y  -  window - > Pos . y ,  center_y_ratio ) ;  // Convert from absolute to local pos