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