|
@@ -1068,6 +1068,7 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
|
|
|
// - ClipRect.Max.x: using WorkMaxX instead of MaxX (aka including padding) makes things more consistent when resizing down, tho slightly detrimental to visibility in very-small column.
|
|
|
// - ClipRect.Max.x: using MaxX makes it easier for header to receive hover highlight with no discontinuity and display sorting arrow.
|
|
|
// - FIXME-TABLE: We want equal width columns to have equal (ClipRect.Max.x - WorkMinX) width, which means ClipRect.max.x cannot stray off host_clip_rect.Max.x else right-most column may appear shorter.
|
|
|
+ const float previous_instance_work_min_x = column->WorkMinX;
|
|
|
column->WorkMinX = column->MinX + table->CellPaddingX + table->CellSpacingX1;
|
|
|
column->WorkMaxX = column->MaxX - table->CellPaddingX - table->CellSpacingX2; // Expected max
|
|
|
column->ItemWidth = ImTrunc(column->WidthGiven * 0.65f);
|
|
@@ -1120,8 +1121,22 @@ void ImGui::TableUpdateLayout(ImGuiTable* table)
|
|
|
// column->WorkMinX = ImLerp(column->WorkMinX, ImMax(column->StartX, column->MaxX - column->ContentWidthRowsUnfrozen), 0.5f);
|
|
|
|
|
|
// Reset content width variables
|
|
|
- column->ContentMaxXFrozen = column->ContentMaxXUnfrozen = column->WorkMinX;
|
|
|
- column->ContentMaxXHeadersUsed = column->ContentMaxXHeadersIdeal = column->WorkMinX;
|
|
|
+ if (table->InstanceCurrent == 0)
|
|
|
+ {
|
|
|
+ column->ContentMaxXFrozen = column->WorkMinX;
|
|
|
+ column->ContentMaxXUnfrozen = column->WorkMinX;
|
|
|
+ column->ContentMaxXHeadersUsed = column->WorkMinX;
|
|
|
+ column->ContentMaxXHeadersIdeal = column->WorkMinX;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // As we store an absolute value to make per-cell updates faster, we need to offset values used for width computation.
|
|
|
+ const float offset_from_previous_instance = column->WorkMinX - previous_instance_work_min_x;
|
|
|
+ column->ContentMaxXFrozen += offset_from_previous_instance;
|
|
|
+ column->ContentMaxXUnfrozen += offset_from_previous_instance;
|
|
|
+ column->ContentMaxXHeadersUsed += offset_from_previous_instance;
|
|
|
+ column->ContentMaxXHeadersIdeal += offset_from_previous_instance;
|
|
|
+ }
|
|
|
|
|
|
// Don't decrement auto-fit counters until container window got a chance to submit its items
|
|
|
if (table->HostSkipItems == false)
|