-
-
Notifications
You must be signed in to change notification settings - Fork 10.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Tables: content covering the entire row or spanning multiple columns #3565
Comments
Hello, The way More general cell-spanning is currently unimplemented and it is in the TODO list (visible in the main Tables thread), but "full row spanning" should be easier to implement as we already have a suitable clip rect. Some complication coming to mind:
I'll have to think about if there are quick paths to get that done, but in the meanwhile if you push a clip rect while in any column you should be able to render that stuff. |
Hello again Andrew, In my initial answer I overlooked one important feature of tables, which is that same-id table share their settings and storage. What it means is that in some usage contexts, you might be able to solve your problem by just closing the table, outputting your stuff and then reopening. Now, arguably this is a bit of a workaround and it is likely to incur noticeable overhead if you use it a lot (e.g. for every line). But it may be a good workaround for more occasional use. |
Thanks Omar. |
Hello Omar.
Thank you for this suggestion, it helped me a lot! I would like to point out a small pitfall that I encountered. The struct ImGuiTable {
ImS16 InstanceCurrent; // Count of BeginTable() calls with same ID in the same frame (generally 0). This is a little bit similar to BeginCount for a window, but multiple table with same ID look are multiple tables, they are just synched. This means that the ID stack of widgets inside the table(s) can change upon user interaction. In my case this messed with the internal state and behavior of #include "imgui_internal.h"
void f() {
if (ImGui::BeginTable(outer_table_id, column_count, flags)) {
bool outer_table_closed = false;
for (auto const &row : rows) {
if (outer_table_closed && ImGui::BeginTable(outer_table_id, column_count, flags)) {
outer_table_closed = false;
}
ImGui::TableNextRow();
ImGui::TableNextColumn();
bool tree_node_open;
{
auto &id_stack = ImGui::GetCurrentWindow()->IDStack;
auto const outer_table_instance_id = id_stack.back();
id_stack.pop_back();
tree_node_open = ImGui::TreeNodeEx("unique tree node", ImGuiTreeNodeFlags_NoTreePushOnOpen);
id_stack.push_back(outer_table_instance_id);
}
if (tree_node_open) {
ImGui::EndTable();
outer_table_closed = true;
ImGui::Indent();
if (ImGui::BeginTable( /* ... */ )) {
ImGui::EndTable();
}
ImGui::Unindent();
}
}
if (outer_table_closed == false) {
ImGui::EndTable();
}
}
} In my opinion this also happens to look better than having the nested table inside a row of the outer table. Win-win : ) Thanks again for the great library, Omar! |
Thanks for your great idea!
The reason is because the hit test button is built based on LastOuterHeight, so if the last ended table has less height than the current, the button will not cover the entire current height. |
Correct, there is a big bug there with synchronized tables. |
…e of several synchronized instance of a same table ID, when instances have a different height. (ocornut#3955, ocornut#3565)
This would be a great feature and I'd like to upvote. I'm currently writing some code that displays HTML tables in ImGui and was hoping to find the eqivalent of |
I found this issue again searching for a solution to basically the same problem! 😂 I went back to the code I used to solve this initially (which was specialized to that use-case), and after playing around with it for a bit I've ended up with something more general purpose. It pushes/pops a new There may well be edge cases where this breaks, but so far it seems to work. /// Make contents in a table cover the entire row rather than just a single column.
///
/// Always covers the entire row (not just the remaining columns);
/// can sort of coexist with per-column data, but may not be as intended.
/// Accounts for:
/// - scrollbar
/// - header row
/// - column reordering
/// - hidden columns
static inline float
igTableFullRowBegin()
{
ImGuiTable *table = igGetCurrentTable();
// Set to the first visible column, so that all contents starts from the leftmost point
for (ImGuiTableColumnIdx *clmn_idx = table->DisplayOrderToIndex.Data,
*end = table->DisplayOrderToIndex.DataEnd;
clmn_idx < end; ++clmn_idx)
{ if (igTableSetColumnIndex(*clmn_idx)) break; }
ImRect *work_rect = &igGetCurrentWindow()->WorkRect;
float restore_x = work_rect->Max.x;
ImRect bg_clip_rect = table->BgClipRect; // NOTE: this accounts for header column & scrollbar
igPushClipRect(bg_clip_rect.Min, bg_clip_rect.Max, 0); // ensure that both our own drawing...
work_rect->Max.x = bg_clip_rect.Max.x; // ...and Dear ImGui drawing will be visible across the entire row
return restore_x;
}
static inline void
igTableFullRowEnd(float restore_x)
{
igGetCurrentWindow()->WorkRect.Max.x = restore_x;
igPopClipRect();
} Usage: float restore_x = igTableFullRowBegin();
igSeparatorText("Look - the whole row!"); // whatever content you want here
igTableFullRowEnd(restore_x); |
@howprice I haven't tried it but I believe the same technique could be used to create arbitrary-length
You could make this work with columns that can be reordered, but I'm not sure if it makes any sense to do so. |
@azmr thanks for that code snippet! I've noticed that in a table with auto-fit enabled ( To prevent that, one needs to save/restore @ocornut can you please take a look at that code snippet above and give some comments on whether it "feels right", taking into account how the table is rendered? All those channels, merging, layout, etc. - I haven't reached the zen of it yet. I'm curious to know whether such manipulations can degrade performance or lead to other unexpected side effects P.S. One expected side effect is that vertical inner borders cross through that full-width row (as you mentioned before); I circumvent it by using another nested table with opaque background -- nasty but it works. |
I don't have bandwidth/energy to investigate this presently, sorry I have to juggle with things to take care of. For full row it is a much simpler problem, and you can do what One problem with "spanning multiple columns" is that the amount of possible columns pairs is large, so for efficiency we ought to maybe dynamically allocate draw channels for each unique pair that's been being. For the bordering and other decorations, my expected approach will be to introduce a PS: The code is generally not easy to work with because of performance concerns. It's easy to get things done, but not as easy optimally. |
Note that for widgets which may lend themselves to be drawn over full row (and probably SeparatorText is one of those case) we can also add a specialized flag. |
One more thing I noticed is that the loop after the "Set to the first visible column" comment might lead to weird results when the table is being scrolled and leftmost columns get out of the visible area. In this example, the rows at the top and at the bottom are regular rows, whereas the two rows in the middle contain full-width cells: It would be better to use ImGui::TableSetColumnIndex(table->LeftMostEnabledColumn >= 0? table->LeftMostEnabledColumn : 0); |
commit 2db3e9d Author: ocornut <[email protected]> Date: Tue Feb 25 17:11:56 2025 +0100 Backends: SDL2, SDL3: Use display bounds when SDL_GetDisplayUsableBounds() fails or return a zero size. (ocornut#8415, ocornut#3457) Analoguous to aa8e09d for GLFW. commit 9ab0b66 Author: ocornut <[email protected]> Date: Tue Feb 25 15:55:54 2025 +0100 Backends: fixed comment to state that ImGuiViewport::PlaformHandle is used to store SDL's WindowID, not SDL_Window*. (ocornut#7853) Amend 2d99052 commit dd89bb1 Author: ocornut <[email protected]> Date: Fri Feb 21 23:51:30 2025 +0100 Backends: DirectX11: configure swap chain creation for secondary viewports via undocumented ImGui_ImplDX11_SetSwapChainDescs(). (ocornut#5437, ocornut#7607, ocornut#7286, ocornut#2970) commit 3064e6d Author: Marius PvW <[email protected]> Date: Fri Feb 21 22:37:51 2025 +0100 Viewports + Backends: Win32: Fixed setting title bar text when application is compiled without UNICODE. (ocornut#7979, ocornut#5725) commit 6acdce7 Author: ocornut <[email protected]> Date: Fri Feb 21 22:12:53 2025 +0100 Backends: Win32: use UnregisterClassW() for matching consistency. (ocornut#8423, ocornut#7979) Amend 3293ef8 commit 7730601 Merge: 1a7b594 434b771 Author: ocornut <[email protected]> Date: Fri Feb 21 19:56:20 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_glfw.cpp # backends/imgui_impl_glfw.h # backends/imgui_impl_opengl3.cpp # backends/imgui_impl_osx.h # backends/imgui_impl_osx.mm # backends/imgui_impl_sdl2.cpp # backends/imgui_impl_sdl3.cpp # backends/imgui_impl_win32.cpp # imgui.cpp commit 434b771 Author: ocornut <[email protected]> Date: Wed Feb 19 16:49:35 2025 +0100 Internals: packing ImGuiDataVarInfo + misc renaming + value of ImGuiDataType_Pointer doesn't need to be Count+1 commit 1a7b594 Author: ocornut <[email protected]> Date: Fri Feb 21 19:18:31 2025 +0100 Backends: GLFW/SDL2/SDL3: Update monitors and work areas information every frame, as the later may change regardless of monitor changes. (ocornut#8415) commit ea59440 Author: David Maas <[email protected]> Date: Fri Feb 21 17:08:16 2025 +0100 Backends: Win32: WM_SETTINGCHANGE's SPI_SETWORKAREA message also triggers a refresh of monitor list. (ocornut#8415) commit 1e18a6c Author: ocornut <[email protected]> Date: Fri Feb 21 16:55:35 2025 +0100 Examples: GLFW+Vulkan: make GLFW_DIR overridable in cmake bit. (ocornut#8419) commit a6bcbb1 Author: Tygyh <[email protected]> Date: Thu Feb 20 18:07:25 2025 +0100 Examples: Android: Update kotlin version (ocornut#8409) commit 6dc376f Author: ocornut <[email protected]> Date: Thu Feb 20 11:54:32 2025 +0100 ImFontAtlas: added software/drawlist version of ImGuiMouseCursor_Wait/ImGuiMouseCursor_Progress + moved GetMouseCursorTexData() to internals. commit 85c488e Author: ocornut <[email protected]> Date: Thu Feb 20 11:46:56 2025 +0100 Hot-fix for broken MouseDrawCursor support for ImGuiMouseCursor_Wait/ImGuiMouseCursor_Progress/ImGuiMouseCursor_NotAllowed. Amend 8a35386, eec097f. commit 05742f9 Author: ocornut <[email protected]> Date: Wed Feb 19 10:55:44 2025 +0100 Tables: share code between TableSetupColumn() and TableLoadSettings(). (ocornut#7934) commit 8b7b3ce Author: ocornut <[email protected]> Date: Wed Feb 19 10:14:38 2025 +0100 Tables: fixed an issue where Columns Width state wouldn't be correctly restored when hot-reloading .ini state. (ocornut#7934) Amend 7cd31c3 column->SortDirection initialized setting was wrong in first block but without side-effect, since sorting always stored explicitly in .ini data. commit eec097f Author: ocornut <[email protected]> Date: Tue Feb 18 18:52:08 2025 +0100 Added ImGuiMouseCursor_Progress mouse cursor 8a35386+ support in SDL2,SDL3,Win32,Allegro5 backends. Amend 8a35386 commit 8a35386 Author: ocornut <[email protected]> Date: Tue Feb 18 18:40:47 2025 +0100 Added ImGuiMouseCursor_Wait mouse cursor (busy/wait/hourglass shape) + support in SDL2,SDL3,Win32,Allegro5 backends. commit 8f0411f Author: ocornut <[email protected]> Date: Tue Feb 18 18:19:10 2025 +0100 Backends: OpenGL3: Lazily reinitialize embedded GL loader for when calling backend from e.g. other DLL boundaries. (ocornut#8406) commit afd659b Merge: a4ebe3d5 c4a32a1 Author: ocornut <[email protected]> Date: Mon Feb 17 11:46:16 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_sdl2.cpp # backends/imgui_impl_vulkan.cpp commit c4a32a1 Author: Nico van Bentum <[email protected]> Date: Thu Feb 13 21:50:12 2025 +0100 Tabs: fixed middle-button to close not checking hovering, only close button visibility. (ocornut#8399, ocornut#8387) Main bug has been here since 54a60aa, but it's only ef7ffaf which made it very visible. commit 78ec127 Author: ocornut <[email protected]> Date: Fri Feb 14 21:39:45 2025 +0100 ImDrawList: added InitialFringeScale in ImDrawListSharedData. Default to 1.0f. This is to allow some DPI mods with less changes. Only the initial value in SetupDrawListSharedData() will need change. commit 2860d7b Author: ocornut <[email protected]> Date: Fri Feb 14 19:44:35 2025 +0100 Selectable: Fixed horizontal label alignment with SelectableTextAlign.x > 0 and specifying a selectable size. (ocornut#8338) Regression from ed7551c commit 474305c Author: ocornut <[email protected]> Date: Fri Feb 14 16:15:09 2025 +0100 ImFont: simpler constructor. commit ec4cd2c Author: ocornut <[email protected]> Date: Fri Feb 14 12:19:24 2025 +0100 Backends: Vulkan: Fixed crash with using no prototypes + *BREAKING* Added ApiVersion to ImGui_ImplVulkan_LoadFunctions(). (ocornut#8326, ocornut#8365, ocornut#8400) commit a4ebe3d Author: ocornut <[email protected]> Date: Fri Feb 14 12:04:05 2025 +0100 Viewports: Fixed assertion when multi-viewports disabled and no monitor submitted. Reworked 95c4111. (ocornut#8401, ocornut#8393, ocornut#8385) commit 98c2f6b Author: ocornut <[email protected]> Date: Thu Feb 13 16:19:41 2025 +0100 Tables, Error Handling: Recovery from invalid index in TableSetColumnIndex(). (ocornut#1651) commit e1ae7db Author: ocornut <[email protected]> Date: Thu Feb 13 16:03:40 2025 +0100 Backends: Vulkan: Fixed building with older headers not supporting VK_HEADER_VERSION_COMPLETE. (ocornut#8326, ocornut#8365) commit 12963f5 Author: ocornut <[email protected]> Date: Thu Feb 13 15:49:47 2025 +0100 Examples: Vulkan: make ApiVersion a little more visible in examples. (ocornut#8326, ocornut#8365) commit 890ead6 Author: ocornut <[email protected]> Date: Thu Feb 13 15:40:49 2025 +0100 Backends: Vulkan: Added ApiVersion field in ImGui_ImplVulkan_InitInfo. Dynamic rendering path loads "vkCmdBeginRendering/vkCmdEndRendering" without -KHR on API 1.3. (ocornut#8326, ocornut#8365) commit 95c4111 Author: Gabriel Rodriguez <[email protected]> Date: Wed Feb 12 12:39:44 2025 +0100 Viewports: default to first monitor is viewport is outside bounds. (ocornut#8393, ocornut#8385) Before the assert was introduced in d66f4e5 the viewport would be eventually clamped with ClampWindowPos using g.FallbackMonitor, but code would run temporarly with DpiScale=0. commit f94a5f0 Author: Rémy Tassoux <[email protected]> Date: Thu Feb 13 14:30:49 2025 +0100 Docs: Update doc about plutosvg (ocornut#8395) commit b78cc37 Author: ocornut <[email protected]> Date: Wed Feb 12 19:27:43 2025 +0100 Backends: SDL2: Fixed build for versions older than 2.0.14. (ocornut#7660) commit 71d39a4 Merge: 8679cfa a931fb7 Author: ocornut <[email protected]> Date: Wed Feb 12 19:17:48 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_sdl2.cpp # backends/imgui_impl_sdl3.cpp # imgui.cpp # imgui_internal.h commit a931fb7 Author: ocornut <[email protected]> Date: Wed Feb 12 19:15:00 2025 +0100 Fixed static analyzer warning. (was harmless as initialized in NewFrame) commit 7cd31c3 Author: ocornut <[email protected]> Date: Wed Feb 12 19:08:52 2025 +0100 Tables: tamed some .ini settings optimizations to more accurately allow overwriting/hot-reloading settings. (ocornut#7934) commit 7221f5e Author: ocornut <[email protected]> Date: Wed Feb 12 19:01:02 2025 +0100 Styles, Tabs: Fixed ef7ffaf. (ocornut#8387) commit ef7ffaf Author: ocornut <[email protected]> Date: Wed Feb 12 15:46:17 2025 +0100 Styles, Tabs: (Breaking) Renamed TabMinWidthForCloseButton to TabCloseButtonMinWidthUnselected. Added TabCloseButtonMinWidthSelected. (ocornut#8387) commit 3d900ed Author: PuPuHX <[email protected]> Date: Tue Feb 11 10:57:47 2025 +0800 Examples: Win32+DirectX12: Fixed ExampleDescriptorHeapAllocator overflow free index. Amend 40b2286. commit 6916f93 Author: fdsa <[email protected]> Date: Tue Feb 11 13:12:55 2025 -0800 InputText: Allow CTRL+Shift+Z to redo even outside of OSX. (ocornut#8389) commit 3b2f260 Author: ocornut <[email protected]> Date: Mon Feb 10 21:33:49 2025 +0100 Windows: Fixed an issue where BeginChild() inside a collapsed Begin() wouldn't inherit the SkipItems flag. Amend/fix a89f05a (old!) Discovered while looking at glyph being processed in WIP branch. commit 4dc9df6 Author: ocornut <[email protected]> Date: Mon Feb 10 19:29:18 2025 +0100 Tables: fixed an issue where Columns Visible/Hidden state wouldn't be correctly overridden when hot-reloading .ini state. (ocornut#7934) commit 88cda0c Author: ocornut <[email protected]> Date: Mon Feb 10 12:39:54 2025 +0100 Fixed minor warning. Added comment. commit a431e12 Author: ocornut <[email protected]> Date: Mon Feb 10 12:09:44 2025 +0100 Backends: SDL2, SDL3: Using SDL_OpenURL() in platform_io.Platform_OpenInShellFn handler. (ocornut#7660) commit a18622c Author: ocornut <[email protected]> Date: Mon Feb 10 12:02:01 2025 +0100 TextLinkOpenURL(): fixed default Win32 io.PlatformOpenInShellFn handler to handle UTF-8 regardless of system regional settings. (ocornut#7660) commit 2206e31 Author: ocornut <[email protected]> Date: Mon Feb 10 11:37:55 2025 +0100 Demo: Combos: demonstrate a very simple way to add a filter to a combo. (ocornut#718) commit e8ad60c Author: edenware <[email protected]> Date: Fri Feb 7 21:01:46 2025 -0600 Fix typo (ocornut#8382) commit 50dbb08 Author: ocornut <[email protected]> Date: Fri Feb 7 22:57:15 2025 +0100 Tables: sneakily honor ImGuiNextWindowDataFlags_HasChildFlags/ImGuiNextWindowDataFlags_HasWindowFlags as a way to facilitate various hacks/workarounds. commit e368015 Author: ocornut <[email protected]> Date: Fri Feb 7 22:56:02 2025 +0100 Tables: a clipped scrolling table correctly clears SetNextWindowXXX flags. (ocornut#8196) Amend 43c51eb commit e5668b8 Author: ocornut <[email protected]> Date: Fri Feb 7 22:48:31 2025 +0100 Internals: rename ImGuiNextWindowData::Flags to HasFlags for consistency and to reduce mistakes. commit 8679cfa Merge: d803476 4982602 Author: ocornut <[email protected]> Date: Fri Feb 7 18:27:32 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_glfw.cpp # backends/imgui_impl_glfw.h # examples/example_apple_metal/example_apple_metal.xcodeproj/project.pbxproj # imgui.cpp commit 4982602 Author: ocornut <[email protected]> Date: Fri Feb 7 18:16:04 2025 +0100 Windows, Style: Added style.WindowBorderHoverPadding setting to configure inner/outer padding applied to hit-testing of windows borders. Amend 3c7177c, 59f3c4f, ae7f833. Could be latched inside windows to be multi-dpi friendly, but likely won't matter soon. commit 914fbcf Author: ocornut <[email protected]> Date: Fri Feb 7 16:23:00 2025 +0100 Fonts: removed unnecessary const qualifier from ImFont::FindGlyph() Amend 0bde57c commit 4f1d380 Author: fdsa <[email protected]> Date: Wed Feb 5 18:41:03 2025 -0800 Fixed tabs and spaces (ocornut#8377) commit 0625b37 Author: ocornut <[email protected]> Date: Thu Feb 6 18:37:32 2025 +0100 Scrollbar: Rework logic that fades-out scrollbar when it becomes too small. Amend 0236bc2 commit cfed18a Author: ocornut <[email protected]> Date: Thu Feb 6 12:34:37 2025 +0100 Add ImFontConfig::GlyphExtraAdvanceX as a replacement for GlyphExtraSpacing.x (ocornut#242) Partly restore 1a31e31. commit 2d20e13 Author: ocornut <[email protected]> Date: Tue Feb 4 20:19:57 2025 +0100 Backends: GLFW: Added comment about io.AddMouseSourceEvent() not being properly called. (ocornut#8374) commit d803476 Merge: 1820fe5 1a31e31 Author: ocornut <[email protected]> Date: Mon Feb 3 18:42:24 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_metal.mm # imgui.cpp # imgui_internal.h commit 1a31e31 Author: ocornut <[email protected]> Date: Mon Feb 3 17:55:35 2025 +0100 (Breaking) Fonts: removed ImFontConfig::GlyphExtraSpacing option which seems largely obsolete and unused. (ocornut#242) commit de962e8 Author: ocornut <[email protected]> Date: Mon Feb 3 17:50:12 2025 +0100 ImFont: remove SetGlyphVisible() Which was never marked public. Added by d284a6c. (ocornut#2149, ocornut#515) Making room by removing stuff that are inconvenient to implement in our scaling system. If you were using this function please post an issue to report it. commit da0ba9e Author: PhantomCloak <[email protected]> Date: Sun Feb 2 19:25:09 2025 +0300 Backends: WebGPU: add type alias for dawn WGPUProgrammableStageDescriptor -> WGPUComputeState. (ocornut#8369) commit 5dd8408 Author: ocornut <[email protected]> Date: Mon Feb 3 15:11:03 2025 +0100 InputTextWithHint(): Fixed buffer overflow when user callback modifies the buffer contents in a way that alters hint visibility. (ocornut#8368) commit 204cebc Author: ocornut <[email protected]> Date: Mon Feb 3 14:21:53 2025 +0100 Backends: Metal: Fixed a crash on application resources. (ocornut#8367, ocornut#7419) [@anszom] commit 6265339 Author: ocornut <[email protected]> Date: Mon Feb 3 14:01:48 2025 +0100 Fixed IsItemDeactivatedAfterEdit() signal being broken for Checkbox(), RadioButton(), Selectable(). (ocornut#8370) Item is already made inactive at the time of calling MarkItemEdited(). Fix a604d4f commit f820bf7 Author: ocornut <[email protected]> Date: Mon Feb 3 12:33:40 2025 +0100 Version 1.91.9 WIP commit e4db4e4 Author: ocornut <[email protected]> Date: Fri Jan 31 19:50:18 2025 +0100 Internals: renamed GetIOEx() to GetIO(). Added GetPlatformIO() explicit context variant. - OOPS commit 1820fe5 Author: ocornut <[email protected]> Date: Fri Jan 31 19:02:14 2025 +0100 Comments, minor alignments tweaks. commit e2a99b5 Author: ocornut <[email protected]> Date: Fri Jan 31 18:26:52 2025 +0100 Internals: renamed GetIOEx() to GetIO(). Added GetPlatformIO() explicit context variant. commit 11b3a7c Merge: c2dcc80 dbb5eea Author: ocornut <[email protected]> Date: Fri Jan 31 16:10:20 2025 +0100 Merge branch 'master' into docking commit dbb5eea Author: ocornut <[email protected]> Date: Fri Jan 31 15:57:48 2025 +0100 Version 1.91.8 commit e6c5296 Author: Konstantin Podsvirov <[email protected]> Date: Fri Jan 31 16:11:33 2025 +0300 Examples: SDL3: Fix for Emscripten platform (ocornut#8363) commit ae6cfd3 Author: ocornut <[email protected]> Date: Thu Jan 30 14:34:05 2025 +0100 Tables, Menus: Fixed tables or child windows submitted inside BeginMainMenuBar() being unable to save their settings. (ocornut#8356) Amend error handling (fa178f4) to avoid us setting ImGuiWindowFlags_NoSavedSettings on the wrong window. commit fa178f4 Author: ocornut <[email protected]> Date: Thu Jan 30 14:30:14 2025 +0100 Error Handling: Recovery from missing EndMenuBar() call. (ocornut#1651) commit c2dcc80 Author: ocornut <[email protected]> Date: Thu Jan 30 11:39:52 2025 +0100 Docking: fixed ImGuiWindowFlags_DockNodeHost/ImGuiWindowFlags_NavFlattened clash introduced by c38c18c just for 1.91.7 (ocornut#8357) commit 1dc7762 Author: ocornut <[email protected]> Date: Wed Jan 29 20:13:22 2025 +0100 Fixed zealous GCC warning. (ocornut#8355) Amend dfd1bc3 commit c0308da Author: ocornut <[email protected]> Date: Wed Jan 29 20:13:22 2025 +0100 Fixed zealous GCC warning. (ocornut#8355) Amend dfd1bc3 commit 0825952 Merge: 75d9965 dabc990 Author: ocornut <[email protected]> Date: Wed Jan 29 20:04:45 2025 +0100 Merge branch 'master' into docking # Conflicts: # imgui.cpp # imgui_internal.h commit dabc990 Author: ocornut <[email protected]> Date: Wed Jan 29 19:59:41 2025 +0100 Rename internal id for standardizing naming convention. "##menubar" -> "##MenuBar", "###NavWindowingList" -> "###NavWindowingOverlay" "###NavUpdateWindowing" one should have zero side effect on anyone. commit a711915 Author: ocornut <[email protected]> Date: Wed Jan 29 19:07:28 2025 +0100 EndMainMenuBar doesn't attempt to restore focus when there's an active id. (ocornut#8355) I don't have a specific issue in mind but it seems sane to add that test. commit dfd1bc3 Author: ocornut <[email protected]> Date: Wed Jan 29 19:05:18 2025 +0100 Tables, Menus: Fixed using BeginTable() in menu layer (any menu bar). (ocornut#8355) commit 4230e98 Author: ocornut <[email protected]> Date: Tue Jan 28 14:39:00 2025 +0100 Error Handling, Debug Log: IMGUI_DEBUG_LOG_ERROR() doesn't need the extra variable. Amend 2360061 commit ea0da0b Author: ocornut <[email protected]> Date: Mon Jan 27 18:04:44 2025 +0100 Extracted PushPasswordFont() out of InputText code. commit 75d9965 Author: ocornut <[email protected]> Date: Mon Jan 27 15:48:20 2025 +0100 Docking: move DockTabItemStatusFlags stuff next to its peers in DC structure. commit db4e541 Merge: 81dab64 9c4948a Author: ocornut <[email protected]> Date: Mon Jan 27 15:45:26 2025 +0100 Merge branch 'master' into docking # Conflicts: # imgui.cpp # imgui_internal.h # imgui_widgets.cpp commit 9c4948a Author: ocornut <[email protected]> Date: Mon Jan 27 15:41:24 2025 +0100 TabBar: Internals: added TabItemSpacing(). (ocornut#8349, ocornut#3291) commit a05d547 Author: ocornut <[email protected]> Date: Mon Jan 27 14:39:26 2025 +0100 Windows: separating WindowItemStatusFlags from ChildItemStatusFlag, because IsItemXXX _after_ BeginChild()>Begin() shouldn't return last status emitted by e.g. EndChild() As IsItemXXX() after is specced as returning title bar data we don't want to lock ourselves up from adding them to child window (e.g. MDI idea using windows to host child windows). commit 134fbe1 Author: ocornut <[email protected]> Date: Mon Jan 27 12:39:44 2025 +0100 Windows: Fixed IsItemXXXX() functions not working on append-version of EndChild(). (ocornut#8350) Also made some of the fields accessible after BeginChild() to match Begin() logic. commit 5a28f18 Author: ocornut <[email protected]> Date: Mon Jan 27 12:27:10 2025 +0100 Fixed parameter names to SetLastItemData() to align with current names. commit 81dab64 Merge: 355cb58 96e3b14 Author: ocornut <[email protected]> Date: Sat Jan 25 01:15:30 2025 +0100 Merge branch 'master' into docking commit 96e3b14 Author: ocornut <[email protected]> Date: Sat Jan 25 01:14:46 2025 +0100 Fixed build with IMGUI_ENABLE_FREETYPE (ocornut#8346) commit afb6e9a Author: ocornut <[email protected]> Date: Fri Jan 24 20:03:04 2025 +0100 Fonts: OversampleH auto-selection uses 36 as heuristic for now. commit 355cb58 Merge: 64e738c 8a1613a Author: ocornut <[email protected]> Date: Fri Jan 24 19:40:54 2025 +0100 Merge branch 'master' into docking, incl conflict merge in BeginMenuBar() for ocornut#8267 # Conflicts: # imgui_widgets.cpp commit 8a1613a Author: ocornut <[email protected]> Date: Fri Jan 24 19:27:50 2025 +0100 Fonts: OversampleH/OversampleV value defaults to 0 for automatic selection. commit 4211fdc Author: ocornut <[email protected]> Date: Wed Jan 22 15:44:51 2025 +0100 ImFont: compact comments in header section. commit 9eafb7b Author: ocornut <[email protected]> Date: Fri Jan 24 16:54:59 2025 +0100 ImFont: IndexLookup[] table hold 16-bit values even in ImWchar32 mode. commit 53244aa Author: ocornut <[email protected]> Date: Fri Jan 24 15:00:21 2025 +0100 Amend 9bc5b04 with a shadowed variable warning fix. commit ed7551c Author: ocornut <[email protected]> Date: Fri Jan 24 14:59:37 2025 +0100 Selectable: Fixed horizontal label alignment when combined with using ImGuiSelectableFlags_SpanAllColumns. (ocornut#8338) commit bbf9578 Author: ocornut <[email protected]> Date: Fri Jan 24 14:43:16 2025 +0100 Amend 9bc5b04 to avoid using GImGui mid-function. commit 9bc5b04 Author: ocornut <[email protected]> Date: Fri Jan 24 14:39:07 2025 +0100 Windows, Style: Fixed small rendering issues with menu bar, resize grip and scrollbar when using thick border sizes. (ocornut#8267, ocornut#7887) Amend e.g. 742b5f4. commit 1019934 Author: ocornut <[email protected]> Date: Thu Jan 23 11:31:32 2025 +0100 ImFontAtlas: made calling ClearFonts() call ClearInputData(). (ocornut#8174, ocornut#6556, ocornut#6336, ocornut#4723) commit 71da34c Author: ocornut <[email protected]> Date: Wed Jan 22 16:56:18 2025 +0100 Debug Tools: Tweaked font preview + indent "Glyphs" block. commit 64e738c Merge: a3802c8 6906ac9 Author: ocornut <[email protected]> Date: Wed Jan 22 12:19:09 2025 +0100 Merge branch 'master' into docking # Conflicts: # imgui.cpp commit 6906ac9 Author: ocornut <[email protected]> Date: Wed Jan 22 12:12:07 2025 +0100 ColorEdit, ColorPicker: (Breaking) redesigned how alpha is displayed in the preview square. (ocornut#8335, ocornut#1578, ocornut#346) Added ImGuiColorEditFlags_AlphaOpaque, ImGuiColorEditFlags_AlphaNoBg. Removed ImGuiColorEditFlags_AlphaPreview. commit fdca6c0 Author: ocornut <[email protected]> Date: Wed Jan 22 11:28:47 2025 +0100 Inputs: added IsMouseReleasedWithDelay() helper. (ocornut#8337, ocornut#8320) commit d17e9fc Author: ocornut <[email protected]> Date: Wed Jan 22 10:32:09 2025 +0100 Backends: SDL_GPU: shallow tweaks + disable anisotropy in sampler. Examples: SDL+Vulkan: Fixed incorrect defines. commit 3e6bdc2 Author: ocornut <[email protected]> Date: Wed Jan 22 10:22:31 2025 +0100 Examples: SDL3+SDL_GPU: use SDL_GPU_PRESENTMODE_MAILBOX swapchain parameters. commit a3802c8 Author: David Maas <[email protected]> Date: Wed Jan 22 10:01:40 2025 +0100 Backends: SDL3: new viewport windows are created with the SDL_WINDOW_HIDDEN flag before calling SDL_ShowWindow(). (ocornut#8328 Unsure why it was missing from a526ff8 commit bf13442 Author: ocornut <[email protected]> Date: Tue Jan 21 14:59:29 2025 +0100 Moved ImGuiColorEditFlags_AlphaPreview/ImGuiColorEditFlags_AlphaPreviewHalf flags. Demo: reorganized some of color edit/picker demo section. commit 2af26b7 Author: David Maas <[email protected]> Date: Tue Jan 21 14:25:39 2025 +0100 ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (ocornut#8336, ocornut#8241). [@PathogenDavid] ImAlphaBlendColors() was broken by ImLerp() change. (cd6c83c) commit 7ae7c90 Author: ocornut <[email protected]> Date: Tue Jan 21 13:55:44 2025 +0100 Tabs, Style: reworked selected overline rendering to better accommodate for rounded tabs. (ocornut#8334) commit 6e94f6c Merge: 109dd2b e8779a6 Author: ocornut <[email protected]> Date: Mon Jan 20 18:04:31 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_osx.mm # backends/imgui_impl_sdl2.cpp # backends/imgui_impl_sdl3.cpp # imgui.cpp # imgui_internal.h commit e8779a6 Author: ocornut <[email protected]> Date: Mon Jan 20 17:55:09 2025 +0100 Font: direct AddText()/RenderText() calls don't need to call strlen() if below clipping region. Unlikely to meaningful affect anyone but still.. commit 4c2e7bb Author: ocornut <[email protected]> Date: Mon Jan 20 15:24:46 2025 +0100 Backends: SDL2,SDL3: removed assert preventing using ImGui_ImplSDL2_SetGamepadMode()/ImGui_ImplSDL3_SetGamepadMode() with ImGui_ImplSDL2_GamepadMode_Manual/ImGui_ImplSDL3_GamepadMode_Manual and an empty array. (ocornut#8329) commit 8b0af7f Author: ocornut <[email protected]> Date: Mon Jan 20 14:30:40 2025 +0100 Backends: SDL: update comments regarding API stability, regarding SDL_GPU and SDL_Renderer. commit aa1b4ea Author: Julian Rachele <[email protected]> Date: Sun Jan 19 16:30:15 2025 -0500 Backends: OSX: Remove notification observer when shutting down. (ocornut#8331) commit aa23f38 Author: Daniel K. O. (dkosmari) <none@none> Date: Fri Jan 17 19:18:05 2025 -0300 Backends: SDL_Renderer2/3: Use endian-dependent RGBA32 texture format, to match SDL_Color. (ocornut#8327) commit 80c9cd1 Author: ocornut <[email protected]> Date: Sat Jan 18 16:43:17 2025 +0100 Font: reduce unnecessary padding in ImFontConfig struct too. commit d7454de Author: ocornut <[email protected]> Date: Fri Jan 17 18:09:28 2025 +0100 Font: minor tweak to struct alignment. commit dd89a37 Author: ocornut <[email protected]> Date: Fri Jan 17 17:11:22 2025 +0100 Backends: Vulkan: sharing duplicate code. (ocornut#5446, ocornut#8326) commit 487d7f9 Author: ocornut <[email protected]> Date: Thu Jan 16 22:30:43 2025 +0100 Font: Internals: make used page maps smaller. Since it's extremely rarely used and for iterations only. ~34->16 bytes with ImWchar32. commit f2262eb Author: ocornut <[email protected]> Date: Thu Jan 16 19:46:54 2025 +0100 Windows: latch FontRefSize at time of Begin(), consistent with e.g. TitleBarHeight, and to avoid calling CalcFontSize() on non-current window. commit b7c27c5 Author: ocornut <[email protected]> Date: Thu Jan 16 19:07:09 2025 +0100 Windows: legacy SetWindowFontScale() is properly inherited by nested child windows. (ocornut#2701, ocornut#8138, ocornut#1018) commit 4c64ba1 Author: ocornut <[email protected]> Date: Thu Jan 16 17:42:00 2025 +0100 imgui_freetype: fixed issue where glyph advances would incorrectly be snapped to pixels. commit 0077357 Author: Diego Mateos <[email protected]> Date: Thu Jan 16 17:10:26 2025 +0100 Ignore vscode artifacts (ocornut#8324) commit b4a5d1d Author: ocornut <[email protected]> Date: Thu Jan 16 12:42:54 2025 +0100 Backends: SDLGPU3: Rename GpuDevice->Device. Expose ImGui_ImplSDLGPU3_CreateDeviceObjects(), ImGui_ImplSDLGPU3_DestroyDeviceObjects(). Misc renaming. (ocornut#8163, ocornut#7998, ocornut#7988) commit 109dd2b Author: ocornut <[email protected]> Date: Wed Jan 15 17:50:57 2025 +0100 Backends: Vulkan: VK_SUBOPTIMAL_KHR doesn't skip frame. (ocornut#7831, ocornut#7825) commit 507cdba Author: ocornut <[email protected]> Date: Wed Jan 15 17:38:37 2025 +0100 Backends: Vulkan: vkQueuePresentKHR() returning VK_SUBOPTIMAL_KHR keeps moving forward. (ocornut#7825) commit 015186a Merge: b9badb5 0f33d71 Author: ocornut <[email protected]> Date: Wed Jan 15 17:34:17 2025 +0100 Merge branch 'master' into docking # Conflicts: # backends/imgui_impl_dx12.cpp # backends/imgui_impl_vulkan.cpp commit 0f33d71 Author: ocornut <[email protected]> Date: Wed Jan 15 17:25:44 2025 +0100 Examples: Vulkan: vkAcquireNextImageKHR() and vkQueuePresentKHR() returning VK_SUBOPTIMAL_KHR keeps moving forward. (ocornut#7825, ocornut#7831) commit b9badb5 Author: ocornut <[email protected]> Date: Wed Jan 15 17:08:04 2025 +0100 Backends: Vulkan: removed misleading code incrementing frameindex. (ocornut#7834) Thanks NostraMagister! commit 8ebf22d Author: ocornut <[email protected]> Date: Wed Jan 15 16:10:47 2025 +0100 Backends: Vulkan: use ImVector<> for simplicity. commit 6684984 Author: ocornut <[email protected]> Date: Wed Jan 15 15:13:05 2025 +0100 Examples: DirectX12: Reduced number of frame in flight from 3 to 2 in provided example, to reduce latency. commit 0e21bde Author: ocornut <[email protected]> Date: Wed Jan 15 13:58:38 2025 +0100 Misc shallow merge to reduce diff in other branches. commit 8a9de84 Author: ocornut <[email protected]> Date: Wed Jan 15 13:47:52 2025 +0100 FontAtlas: reduced baked IM_DRAWLIST_TEX_LINES_WIDTH_MAX from 63 to 32. (ocornut#3245) commit 100075f Author: ocornut <[email protected]> Date: Wed Jan 15 12:05:33 2025 +0100 Backends: DirectX12: Texture upload use the command queue provided in ImGui_ImplDX12_InitInfo instead of creating its own. + minor tweaks to faciliate branch merging. commit c59a226 Author: ocornut <[email protected]> Date: Wed Jan 15 11:58:47 2025 +0100 Version 1.91.8 WIP commit c0ae325 Merge: d0d571e 5c1d2d1 Author: ocornut <[email protected]> Date: Tue Jan 14 13:46:39 2025 +0100 Merge branch 'master' into docking # Conflicts: # imgui.cpp commit 5c1d2d1 Author: ocornut <[email protected]> Date: Tue Jan 14 13:16:43 2025 +0100 Version 1.91.7 commit 9f8481a Author: ocornut <[email protected]> Date: Tue Jan 14 13:14:50 2025 +0100 (Breaking) TreeNode: renamed ImGuiTreeNodeFlags_SpanTextWidth to ImGuiTreeNodeFlags_SpanLabelWidth. (ocornut#6937) commit 21902e2 Author: ocornut <[email protected]> Date: Mon Jan 13 19:51:15 2025 +0100 Backends: SDL_GPU: fixed SDL_GPUViewport initialisation. (ocornut#8163, ocornut#7998, ocornut#7988) Probably harmless. Amend 8bbccf7 commit c38c18c Author: ocornut <[email protected]> Date: Mon Jan 13 19:39:57 2025 +0100 Avoid using 1<<31 for ImGuiWindowFlags_NavFlattened as it seems to confuse some binding generators. commit c5f6094 Author: ocornut <[email protected]> Date: Mon Jan 13 19:18:05 2025 +0100 Demo: tweak demo for ImGuiTreeNodeFlags_LabelSpanAllColumns. (ocornut#8318, ocornut#3565) commit 290e402 Author: ocornut <[email protected]> Date: Mon Jan 13 18:55:09 2025 +0100 TreeNode, Tables: added ImGuiTreeNodeFlags_LabelSpanAllColumns. (ocornut#8318, ocornut#3565) commit 6fb7d44 Author: ocornut <[email protected]> Date: Mon Jan 13 16:46:29 2025 +0100 Backends: SDL2/SDL3: Comments. (ocornut#7672, ocornut#7670) commit 32cea85 Author: ocornut <[email protected]> Date: Mon Jan 13 15:51:39 2025 +0100 Debug Tools: Item Picker: Always available in menu. Tweak Demo Debug Options. (ocornut#2673, ocornut#1651) commit 00f12b9 Author: ocornut <[email protected]> Date: Mon Jan 13 15:22:45 2025 +0100 InputText: Fixed not calling CallbackEdit on revert/clear with Escape key. (ocornut#8273) + rework comments. Seems like there is no reason to not run that path. Amend ancient 9501cd9, f3ab5e6
Branch: tables (using cimgui-generated code)
My Issue/Question:
I'm liking the tables API so far but I've hit the edge of what I can easily see how to do.
I'm trying to have some content (a graph currently) span all columns in a new row of the table.
Some approaches I've tried/considered:
NoClipX
- I don't seem to be able to set this midway through the tableNoClipX
- I don't seem to be able to actually have it at 0-width, even withNoKeepColumnsVisible
on the tableEndTable
, do the graph, thenBeginTable
again - this is currently slightly awkward given that there are other IDs pushed fromTreeNode
s on the table. I'd also like to be able to have them all in the same scroll section when I continue the table (although I suppose I could wrap it again in a child window - but then the headers would get lost).This would be harder to do if I wanted to nest a table inside the row of another table and have both scrollable and using the same ID (so that their columns move in tandem).
BeginCell
/EndCell
code to make the draw rect cover the whole row. This seems like it's likely to break with future versions...If you were to expand the API, some options might include:
PopID
to return theImGuiID
that it takes off theIDStack
, to make it easier to collate them on the user-side before pushing them again.ImGuiTableRowFlags
to specify full-row contentScreenshots/Video

The text was updated successfully, but these errors were encountered: