Fix invalid display order data: compact values (0,1,3 -> 0,1,2); preserve relative order (0,3,1 -> 0,2,1); deduplicate (0,4,1,1 -> 0,3,1,2)
| 3904 | |
| 3905 | // Fix invalid display order data: compact values (0,1,3 -> 0,1,2); preserve relative order (0,3,1 -> 0,2,1); deduplicate (0,4,1,1 -> 0,3,1,2) |
| 3906 | void ImGui::TableFixDisplayOrder(ImGuiTable* table) |
| 3907 | { |
| 3908 | ImGuiContext& g = *GImGui; |
| 3909 | g.TempBuffer.reserve((int)(sizeof(ImGuiTableFixDisplayOrderColumnData) * table->ColumnsCount)); // FIXME: Maybe wrap those two lines as a helper. |
| 3910 | ImGuiTableFixDisplayOrderColumnData* fdo_columns = (ImGuiTableFixDisplayOrderColumnData*)(void*)g.TempBuffer.Data; |
| 3911 | for (int n = 0; n < table->ColumnsCount; n++) |
| 3912 | { |
| 3913 | fdo_columns[n].Idx = (ImGuiTableColumnIdx)n; |
| 3914 | fdo_columns[n].Table = table; |
| 3915 | } |
| 3916 | ImQsort(fdo_columns, (size_t)table->ColumnsCount, sizeof(ImGuiTableFixDisplayOrderColumnData), TableFixDisplayOrderComparer); |
| 3917 | for (int n = 0; n < table->ColumnsCount; n++) |
| 3918 | table->Columns[fdo_columns[n].Idx].DisplayOrder = (ImGuiTableColumnIdx)n; |
| 3919 | } |
| 3920 | |
| 3921 | static void TableSettingsHandler_ClearAll(ImGuiContext* ctx, ImGuiSettingsHandler*) |
| 3922 | { |