@ -320,6 +320,12 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        IM_ASSERT ( inner_width  > =  0.0f ) ;   
					 
					 
					 
					        IM_ASSERT ( inner_width  > =  0.0f ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // If an outer size is specified ahead we will be able to early out when not visible. Exact clipping criteria may evolve.
   
					 
					 
					 
					    // If an outer size is specified ahead we will be able to early out when not visible. Exact clipping criteria may evolve.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // FIXME: coarse clipping because access to table data causes two issues:
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // - instance numbers varying/unstable. may not be a direct problem for users, but could make outside access broken or confusing, e.g. TestEngine.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // - can't implement support for ImGuiChildFlags_ResizeY as we need to somehow pull the height data from somewhere. this also needs stable instance numbers.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // The side-effects of accessing table data on coarse clip would be:
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // - always reserving the pooled ImGuiTable data ahead for a fully clipped table (minor IMHO). Also the 'outer_window_is_measuring_size' criteria may already be defeating this in some situations.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // - always performing the GetOrAddByKey() O(log N) query in g.Tables.Map[].
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  bool  use_child_window  =  ( flags  &  ( ImGuiTableFlags_ScrollX  |  ImGuiTableFlags_ScrollY ) )  ! =  0 ;   
					 
					 
					 
					    const  bool  use_child_window  =  ( flags  &  ( ImGuiTableFlags_ScrollX  |  ImGuiTableFlags_ScrollY ) )  ! =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImVec2  avail_size  =  GetContentRegionAvail ( ) ;   
					 
					 
					 
					    const  ImVec2  avail_size  =  GetContentRegionAvail ( ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImVec2  actual_outer_size  =  CalcItemSize ( outer_size ,  ImMax ( avail_size . x ,  1.0f ) ,  use_child_window  ?  ImMax ( avail_size . y ,  1.0f )  :  0.0f ) ;   
					 
					 
					 
					    const  ImVec2  actual_outer_size  =  CalcItemSize ( outer_size ,  ImMax ( avail_size . x ,  1.0f ) ,  use_child_window  ?  ImMax ( avail_size . y ,  1.0f )  :  0.0f ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -338,7 +344,6 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Acquire storage for the table
   
					 
					 
					 
					    // Acquire storage for the table
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiTable *  table  =  g . Tables . GetOrAddByKey ( id ) ;   
					 
					 
					 
					    ImGuiTable *  table  =  g . Tables . GetOrAddByKey ( id ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  ImGuiTableFlags  table_last_flags  =  table - > Flags ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Acquire temporary buffers
   
					 
					 
					 
					    // Acquire temporary buffers
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  table_idx  =  g . Tables . GetIndex ( table ) ;   
					 
					 
					 
					    const  int  table_idx  =  g . Tables . GetIndex ( table ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -356,6 +361,7 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Initialize
   
					 
					 
					 
					    // Initialize
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  previous_frame_active  =  table - > LastFrameActive ;   
					 
					 
					 
					    const  int  previous_frame_active  =  table - > LastFrameActive ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    const  int  instance_no  =  ( previous_frame_active  ! =  g . FrameCount )  ?  0  :  table - > InstanceCurrent  +  1 ;   
					 
					 
					 
					    const  int  instance_no  =  ( previous_frame_active  ! =  g . FrameCount )  ?  0  :  table - > InstanceCurrent  +  1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    const  ImGuiTableFlags  previous_flags  =  table - > Flags ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    table - > ID  =  id ;   
					 
					 
					 
					    table - > ID  =  id ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    table - > Flags  =  flags ;   
					 
					 
					 
					    table - > Flags  =  flags ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    table - > LastFrameActive  =  g . FrameCount ;   
					 
					 
					 
					    table - > LastFrameActive  =  g . FrameCount ;   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -402,7 +408,7 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					            SetNextWindowContentSize ( ImVec2 ( override_content_size . x  ! =  FLT_MAX  ?  override_content_size . x  :  0.0f ,  override_content_size . y  ! =  FLT_MAX  ?  override_content_size . y  :  0.0f ) ) ;   
					 
					 
					 
					            SetNextWindowContentSize ( ImVec2 ( override_content_size . x  ! =  FLT_MAX  ?  override_content_size . x  :  0.0f ,  override_content_size . y  ! =  FLT_MAX  ?  override_content_size . y  :  0.0f ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Reset scroll if we are reactivating it
   
					 
					 
					 
					        // Reset scroll if we are reactivating it
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        if  ( ( table_last _flags  &  ( ImGuiTableFlags_ScrollX  |  ImGuiTableFlags_ScrollY ) )  = =  0 )   
					 
					 
					 
					        if  ( ( previous _flags  &  ( ImGuiTableFlags_ScrollX  |  ImGuiTableFlags_ScrollY ) )  = =  0 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					            SetNextWindowScroll ( ImVec2 ( 0.0f ,  0.0f ) ) ;   
					 
					 
					 
					            SetNextWindowScroll ( ImVec2 ( 0.0f ,  0.0f ) ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        // Create scrolling region (without border and zero window padding)
   
					 
					 
					 
					        // Create scrolling region (without border and zero window padding)
   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -515,7 +521,7 @@ bool    ImGui::BeginTableEx(const char* name, ImGuiID id, int columns_count, ImG 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( inner_window  ! =  outer_window )  // So EndChild() within the inner window can restore the table properly.
   
					 
					 
					 
					    if  ( inner_window  ! =  outer_window )  // So EndChild() within the inner window can restore the table properly.
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        inner_window - > DC . CurrentTableIdx  =  table_idx ;   
					 
					 
					 
					        inner_window - > DC . CurrentTableIdx  =  table_idx ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( ( table_last _flags  &  ImGuiTableFlags_Reorderable )  & &  ( flags  &  ImGuiTableFlags_Reorderable )  = =  0 )   
					 
					 
					 
					    if  ( ( previous _flags  &  ImGuiTableFlags_Reorderable )  & &  ( flags  &  ImGuiTableFlags_Reorderable )  = =  0 )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					        table - > IsResetDisplayOrderRequest  =  true ;   
					 
					 
					 
					        table - > IsResetDisplayOrderRequest  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Mark as used to avoid GC
   
					 
					 
					 
					    // Mark as used to avoid GC
   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2928,6 +2934,7 @@ void ImGui::TableSortSpecsBuild(ImGuiTable* table) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    }   
					 
					 
					 
					    }   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    // Write output
   
					 
					 
					 
					    // Write output
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    // May be able to move all SortSpecs data from table (48 bytes) to ImGuiTableTempData if we decide to write it back on every BeginTable()
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    ImGuiTableColumnSortSpecs *  sort_specs  =  ( table - > SortSpecsCount  = =  0 )  ?  NULL  :  ( table - > SortSpecsCount  = =  1 )  ?  & table - > SortSpecsSingle  :  table - > SortSpecsMulti . Data ;   
					 
					 
					 
					    ImGuiTableColumnSortSpecs *  sort_specs  =  ( table - > SortSpecsCount  = =  0 )  ?  NULL  :  ( table - > SortSpecsCount  = =  1 )  ?  & table - > SortSpecsSingle  :  table - > SortSpecsMulti . Data ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    if  ( dirty  & &  sort_specs  ! =  NULL )   
					 
					 
					 
					    if  ( dirty  & &  sort_specs  ! =  NULL )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					        for  ( int  column_n  =  0 ;  column_n  <  table - > ColumnsCount ;  column_n + + )   
					 
					 
					 
					        for  ( int  column_n  =  0 ;  column_n  <  table - > ColumnsCount ;  column_n + + )