@ -3015,11 +3015,14 @@ void ImGui::TableHeader(const char* label)
// Calculate ideal size for sort order arrow
// Calculate ideal size for sort order arrow
float w_arrow = 0.0f ;
float w_arrow = 0.0f ;
float w_sort_text = 0.0f ;
float w_sort_text = 0.0f ;
bool sort_arrow = false ;
char sort_order_suf [ 4 ] = " " ;
char sort_order_suf [ 4 ] = " " ;
const float ARROW_SCALE = 0.65f ;
const float ARROW_SCALE = 0.65f ;
if ( ( table - > Flags & ImGuiTableFlags_Sortable ) & & ! ( column - > Flags & ImGuiTableColumnFlags_NoSort ) )
if ( ( table - > Flags & ImGuiTableFlags_Sortable ) & & ! ( column - > Flags & ImGuiTableColumnFlags_NoSort ) )
{
{
w_arrow = ImTrunc ( g . FontSize * ARROW_SCALE + g . Style . FramePadding . x ) ;
w_arrow = ImTrunc ( g . FontSize * ARROW_SCALE + g . Style . FramePadding . x ) ;
if ( column - > SortOrder ! = - 1 )
sort_arrow = true ;
if ( column - > SortOrder > 0 )
if ( column - > SortOrder > 0 )
{
{
ImFormatString ( sort_order_suf , IM_ARRAYSIZE ( sort_order_suf ) , " %d " , column - > SortOrder + 1 ) ;
ImFormatString ( sort_order_suf , IM_ARRAYSIZE ( sort_order_suf ) , " %d " , column - > SortOrder + 1 ) ;
@ -3027,9 +3030,9 @@ void ImGui::TableHeader(const char* label)
}
}
}
}
// We feed our unclipped width to the column without writing on CursorMaxPos, so that column is still considering for merging.
// We feed our unclipped width to the column without writing on CursorMaxPos, so that column is still considered for merging.
float max_pos_x = label_pos . x + label_size . x + w_sort_text + w_arrow ;
float max_pos_x = label_pos . x + label_size . x + w_sort_text + w_arrow ;
column - > ContentMaxXHeadersUsed = ImMax ( column - > ContentMaxXHeadersUsed , column - > WorkMaxX ) ;
column - > ContentMaxXHeadersUsed = ImMax ( column - > ContentMaxXHeadersUsed , sort_arrow ? cell_r . Max . x : ImMin ( max_pos_x , cell_r . Max . x ) ) ;
column - > ContentMaxXHeadersIdeal = ImMax ( column - > ContentMaxXHeadersIdeal , max_pos_x ) ;
column - > ContentMaxXHeadersIdeal = ImMax ( column - > ContentMaxXHeadersIdeal , max_pos_x ) ;
// Keep header highlighted when context menu is open.
// Keep header highlighted when context menu is open.