Closed
Description
Version/Branch of Dear ImGui:
Version 1.91.2 WIP, Branch: master
Back-ends:
imgui_impl_glfw.cpp + imgui_impl_opengl3.cpp
Compiler, OS:
Linux + GCC
Full config/build information:
Dear ImGui 1.91.2 WIP (19112)
--------------------------------
sizeof(size_t): 8, sizeof(ImDrawIdx): 2, sizeof(ImDrawVert): 20
define: __cplusplus=201103
define: __linux__
define: __GNUC__=12
--------------------------------
io.BackendPlatformName: imgui_impl_glfw
io.BackendRendererName: imgui_impl_opengl3
io.ConfigFlags: 0x00000003
NavEnableKeyboard
NavEnableGamepad
io.ConfigInputTextCursorBlink
io.ConfigWindowsResizeFromEdges
io.ConfigMemoryCompactTimer = 60.0
io.BackendFlags: 0x0000000E
HasMouseCursors
HasSetMousePos
RendererHasVtxOffset
--------------------------------
io.Fonts: 1 fonts, Flags: 0x00000000, TexSize: 512,64
io.DisplaySize: 1280.00,720.00
io.DisplayFramebufferScale: 1.00,1.00
--------------------------------
style.WindowPadding: 8.00,8.00
style.WindowBorderSize: 1.00
style.FramePadding: 4.00,3.00
style.FrameRounding: 0.00
style.FrameBorderSize: 0.00
style.ItemSpacing: 8.00,4.00
style.ItemInnerSpacing: 4.00,4.00
Details:
My Issue/Question:
Hello! As described in the title, I've noticed that MultiSelect_BoxSelect1d sometimes skips items when the Table has the ScrollY and BordersOuter flags set. The BordersInner flag seems to have no effect either way, probably because it doesn't change the layout of the table like the BordersOuter flag does.
Screenshots/Video:
multi-select-borders-outer-issue.mp4
Minimal, Complete and Verifiable Example code:
// Here's some code anyone can copy and paste to reproduce your issue
using namespace ImGui;
SetNextWindowSize (ImVec2 (400.0f, 300.0f), ImGuiCond_Appearing);
Begin ("Test");
static int flags = ImGuiTableFlags_ScrollY;
CheckboxFlags ("BordersOuter", &flags, ImGuiTableFlags_BordersOuter);
SameLine();
CheckboxFlags ("BordersInner", &flags, ImGuiTableFlags_BordersInner);
if (BeginTable ("Table", 1, flags))
{
static ImGuiSelectionBasicStorage selection;
static unsigned const N = 1000;
auto ms = BeginMultiSelect (ImGuiMultiSelectFlags_BoxSelect1d, selection.Size, N);
selection.ApplyRequests (ms);
for (unsigned i = 0; i < N; ++i)
{
char buf[32];
snprintf (buf, sizeof buf, "Item %03d", i);
SetNextItemSelectionUserData (i);
TableNextColumn();
Selectable (buf, selection.Contains (i));
}
ms = EndMultiSelect();
selection.ApplyRequests (ms);
EndTable();
}
End();
Activity