85 static ImGuiSelectionBasicStorage selection;
87 ImGui::Text(
"Selection: %d/%d", selection.Size,
ITEMS_COUNT);
88 if (ImGui::BeginChild(
89 "##Basket", ImVec2(-FLT_MIN, ImGui::GetFontSize() * 20),
90 ImGuiChildFlags_FrameStyle | ImGuiChildFlags_ResizeY)) {
91 ImGuiMultiSelectFlags flags = ImGuiMultiSelectFlags_ClearOnEscape |
92 ImGuiMultiSelectFlags_BoxSelect1d;
93 ImGuiMultiSelectIO *ms_io =
94 ImGui::BeginMultiSelect(flags, selection.Size,
ITEMS_COUNT);
95 selection.ApplyRequests(ms_io);
97 ImGuiListClipper clipper;
99 if (ms_io->RangeSrcItem != -1)
100 clipper.IncludeItemByIndex(
101 (
int)ms_io->RangeSrcItem);
102 while (clipper.Step()) {
103 for (
int n = clipper.DisplayStart; n < clipper.DisplayEnd; n++) {
107 bool item_is_selected = selection.Contains((ImGuiID)n);
108 ImGui::SetNextItemSelectionUserData(n);
109 ImGui::Selectable(label, item_is_selected);
113 ms_io = ImGui::EndMultiSelect();
114 selection.ApplyRequests(ms_io);