@ -2424,7 +2424,7 @@ void ImGui::RenderTextClipped(const ImVec2& pos_min, const ImVec2& pos_max, cons 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// Another overly complex function until we reorganize everything into a nice all-in-one helper.
  
					 
					 
					 
					// Another overly complex function until we reorganize everything into a nice all-in-one helper.
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					// This is made more complex because we have dissociated the layout rectangle (pos_min..pos_max) which define where the ellipsis is, from actual clipping and limit of the ellipsis display.
  
					 
					 
					 
					// This is made more complex because we have dissociated the layout rectangle (pos_min..pos_max) which define _ where_  the ellipsis is, from actual clipping of text  and limit of the ellipsis display.
  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					// This is because in the context of tabs we selectively hide part of the text when the Close Button appears, but we don't want the ellipsis to move. 
  
					 
					 
					 
					// This is because in the context of tabs we selectively hide part of the text when the Close Button appears, but we don't want the ellipsis to move. 
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					void     ImGui : : RenderTextEllipsis ( ImDrawList *  draw_list ,  const  ImVec2 &  pos_min ,  const  ImVec2 &  pos_max ,  float  clip_max_x ,  float  ellipsis_max_x ,  const  char *  text ,  const  char *  text_end_full ,  const  ImVec2 *  text_size_if_known )  
					 
					 
					 
					void     ImGui : : RenderTextEllipsis ( ImDrawList *  draw_list ,  const  ImVec2 &  pos_min ,  const  ImVec2 &  pos_max ,  float  clip_max_x ,  float  ellipsis_max_x ,  const  char *  text ,  const  char *  text_end_full ,  const  ImVec2 *  text_size_if_known )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -2435,27 +2435,36 @@ void    ImGui::RenderTextEllipsis(ImDrawList* draw_list, const ImVec2& pos_min, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( text_size . x  >  pos_max . x  -  pos_min . x )   
					 
					 
					 
					    if  ( text_size . x  >  pos_max . x  -  pos_min . x )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    {   
					 
					 
					 
					    {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        // Hello wo...
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        // |       |   |
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        // min   max   ellipsis_max
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        //          <-> this is generally some padding value
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        // FIXME-STYLE: RenderPixelEllipsis() style should use actual font data.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  ImFont *  font  =  draw_list - > _Data - > Font ;   
					 
					 
					 
					        const  ImFont *  font  =  draw_list - > _Data - > Font ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  float  font_size  =  draw_list - > _Data - > FontSize ;   
					 
					 
					 
					        const  float  font_size  =  draw_list - > _Data - > FontSize ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  int  ellipsis_dot_count  =  3 ;   
					 
					 
					 
					        const  int  ellipsis_dot_count  =  3 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  float  ellipsis_width  =  ( 1.0f  +  1.0f )  *  ellipsis_dot_count  -  1.0f ;   
					 
					 
					 
					        const  float  ellipsis_width  =  ( 1.0f  +  1.0f )  *  ellipsis_dot_count  -  1.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  char *  text_end_ellipsis  =  NULL ;   
					 
					 
					 
					        const  char *  text_end_ellipsis  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        float  text_size_clipped_x  =  font - > CalcTextSizeA ( font_size ,  ( pos_max . x  -  pos_min . x )  -  ellipsis_width  +  1.0f ,  0.0f ,  text ,  text_end_full ,  & text_end_ellipsis ) . x ;   
					 
					 
					 
					
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( text  = =  text_end_ellipsis  & &  text_end_ellipsis  <  text_end_full )     // Always display at least 1 character if there's no room for character + ellipsis
   
					 
					 
					 
					        float  text_width  =  ImMax ( ( pos_max . x  -  ellipsis_width )  -  pos_min . x ,  1.0f ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        float  text_size_clipped_x  =  font - > CalcTextSizeA ( font_size ,  text_width ,  0.0f ,  text ,  text_end_full ,  & text_end_ellipsis ) . x ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					        if  ( text  = =  text_end_ellipsis  & &  text_end_ellipsis  <  text_end_full )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            // Always display at least 1 character if there's no room for character + ellipsis
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            text_end_ellipsis  =  text  +  ImTextCountUtf8BytesFromChar ( text ,  text_end_full ) ;   
					 
					 
					 
					            text_end_ellipsis  =  text  +  ImTextCountUtf8BytesFromChar ( text ,  text_end_full ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            text_size_clipped_x  =  font - > CalcTextSizeA ( font_size ,  FLT_MAX ,  0.0f ,  text ,  text_end_ellipsis ) . x ;   
					 
					 
					 
					            text_size_clipped_x  =  font - > CalcTextSizeA ( font_size ,  FLT_MAX ,  0.0f ,  text ,  text_end_ellipsis ) . x ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        while  ( text_end_ellipsis  >  text  & &  ImCharIsBlankA ( text_end_ellipsis [ - 1 ] ) )  // Trim trailing space
    
					 
					 
					 
					        while  ( text_end_ellipsis  >  text  & &  ImCharIsBlankA ( text_end_ellipsis [ - 1 ] ) )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        {   
					 
					 
					 
					        {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					            // Trim trailing space before ellipsis
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            text_end_ellipsis - - ;   
					 
					 
					 
					            text_end_ellipsis - - ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            text_size_clipped_x  - =  font - > CalcTextSizeA ( font_size ,  FLT_MAX ,  0.0f ,  text_end_ellipsis ,  text_end_ellipsis  +  1 ) . x ;  // Ascii blanks are always 1 byte
   
					 
					 
					 
					            text_size_clipped_x  - =  font - > CalcTextSizeA ( font_size ,  FLT_MAX ,  0.0f ,  text_end_ellipsis ,  text_end_ellipsis  +  1 ) . x ;  // Ascii blanks are always 1 byte
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        }   
					 
					 
					 
					        }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        RenderTextClippedEx ( draw_list ,  pos_min ,  ImVec2 ( clip_max_x ,  pos_max . y ) ,  text ,  text_end_ellipsis ,  & text_size ,  ImVec2 ( 0.0f ,  0.0f ) ) ;   
					 
					 
					 
					        RenderTextClippedEx ( draw_list ,  pos_min ,  ImVec2 ( clip_max_x ,  pos_max . y ) ,  text ,  text_end_ellipsis ,  & text_size ,  ImVec2 ( 0.0f ,  0.0f ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        const  float  ellipsis_x  =  pos_min . x  +  text_size_clipped_x  +  1.0f ;   
					 
					 
					 
					        const  float  ellipsis_x  =  pos_min . x  +  text_size_clipped_x  +  1.0f ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ellipsis_x  +  ellipsis_width  < =  ellipsis_max_x )   
					 
					 
					 
					        if  ( ellipsis_x  +  ellipsis_width  -  1.0f  < =  ellipsis_max_x )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            RenderPixelEllipsis ( draw_list ,  ImVec2 ( ellipsis_x ,  pos_min . y ) ,  GetColorU32 ( ImGuiCol_Text ) ,  ellipsis_dot_count ) ;   
					 
					 
					 
					            RenderPixelEllipsis ( draw_list ,  ImVec2 ( ellipsis_x ,  pos_min . y ) ,  GetColorU32 ( ImGuiCol_Text ) ,  ellipsis_dot_count ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    else   
					 
					 
					 
					    else