Helper
| 263 | |
| 264 | // Helper |
| 265 | inline ImGuiTableFlags TableFixFlags(ImGuiTableFlags flags, ImGuiWindow* outer_window) |
| 266 | { |
| 267 | // Adjust flags: set default sizing policy |
| 268 | if ((flags & ImGuiTableFlags_SizingMask_) == 0) |
| 269 | flags |= ((flags & ImGuiTableFlags_ScrollX) || (outer_window->Flags & ImGuiWindowFlags_AlwaysAutoResize)) ? ImGuiTableFlags_SizingFixedFit : ImGuiTableFlags_SizingStretchSame; |
| 270 | |
| 271 | // Adjust flags: enable NoKeepColumnsVisible when using ImGuiTableFlags_SizingFixedSame |
| 272 | if ((flags & ImGuiTableFlags_SizingMask_) == ImGuiTableFlags_SizingFixedSame) |
| 273 | flags |= ImGuiTableFlags_NoKeepColumnsVisible; |
| 274 | |
| 275 | // Adjust flags: enforce borders when resizable |
| 276 | if (flags & ImGuiTableFlags_Resizable) |
| 277 | flags |= ImGuiTableFlags_BordersInnerV; |
| 278 | |
| 279 | // Adjust flags: disable NoHostExtendX/NoHostExtendY if we have any scrolling going on |
| 280 | if (flags & (ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY)) |
| 281 | flags &= ~(ImGuiTableFlags_NoHostExtendX | ImGuiTableFlags_NoHostExtendY); |
| 282 | |
| 283 | // Adjust flags: NoBordersInBodyUntilResize takes priority over NoBordersInBody |
| 284 | if (flags & ImGuiTableFlags_NoBordersInBodyUntilResize) |
| 285 | flags &= ~ImGuiTableFlags_NoBordersInBody; |
| 286 | |
| 287 | // Adjust flags: disable saved settings if there's nothing to save |
| 288 | if ((flags & (ImGuiTableFlags_Resizable | ImGuiTableFlags_Hideable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Sortable)) == 0) |
| 289 | flags |= ImGuiTableFlags_NoSavedSettings; |
| 290 | |
| 291 | // Inherit _NoSavedSettings from top-level window (child windows always have _NoSavedSettings set) |
| 292 | if (outer_window->RootWindow->Flags & ImGuiWindowFlags_NoSavedSettings) |
| 293 | flags |= ImGuiTableFlags_NoSavedSettings; |
| 294 | |
| 295 | return flags; |
| 296 | } |
| 297 | |
| 298 | ImGuiTable* ImGui::TableFindByID(ImGuiID id) |
| 299 | { |