Skip to content

Commit 4d419d1

Browse files
committed
Tables: fixed ColumnsAutoFitWidth for resizable fixed columns reporting ideal width.
1 parent 3e71263 commit 4d419d1

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

imgui_demo.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -4600,7 +4600,7 @@ static void ShowDemoWindowTables()
46004600
static ImGuiTableFlags flags1 = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Borders | ImGuiTableFlags_ContextMenuInBody;
46014601

46024602
PushStyleCompact();
4603-
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", (unsigned int*)&flags1, ImGuiTableFlags_ContextMenuInBody);
4603+
ImGui::CheckboxFlags("ImGuiTableFlags_ContextMenuInBody", &flags1, ImGuiTableFlags_ContextMenuInBody);
46044604
PopStyleCompact();
46054605

46064606
// Context Menus: first example

imgui_tables.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -1234,7 +1234,13 @@ void ImGui::EndTable()
12341234
table->ColumnsAutoFitWidth = width_spacings + (table->CellPaddingX * 2.0f) * table->ColumnsEnabledCount;
12351235
for (int column_n = 0; column_n < table->ColumnsCount; column_n++)
12361236
if (table->EnabledMaskByIndex & ((ImU64)1 << column_n))
1237-
table->ColumnsAutoFitWidth += TableGetColumnWidthAuto(table, &table->Columns[column_n]);
1237+
{
1238+
ImGuiTableColumn* column = &table->Columns[column_n];
1239+
if ((column->Flags & ImGuiTableColumnFlags_WidthFixed) && !(column->Flags & ImGuiTableColumnFlags_NoResize))
1240+
table->ColumnsAutoFitWidth += column->WidthRequest;
1241+
else
1242+
table->ColumnsAutoFitWidth += TableGetColumnWidthAuto(table, column);
1243+
}
12381244

12391245
// Update scroll
12401246
if ((table->Flags & ImGuiTableFlags_ScrollX) == 0 && inner_window != outer_window)
@@ -1457,7 +1463,7 @@ ImRect ImGui::TableGetCellBgRect(const ImGuiTable* table, int column_n)
14571463
// Return the resizing ID for the right-side of the given column.
14581464
ImGuiID ImGui::TableGetColumnResizeID(const ImGuiTable* table, int column_n, int instance_no)
14591465
{
1460-
IM_ASSERT(column_n < table->ColumnsCount);
1466+
IM_ASSERT(column_n >= 0 && column_n < table->ColumnsCount);
14611467
ImGuiID id = table->ID + 1 + (instance_no * table->ColumnsCount) + column_n;
14621468
return id;
14631469
}

0 commit comments

Comments
 (0)