88 static ImGuiSelectionBasicStorage selection;
90 ImGui::Text(
"Selection: %d/%d", selection.Size,
ITEMS_COUNT);
91 if (ImGui::BeginChild(
92 "##Basket", ImVec2(-FLT_MIN, ImGui::GetFontSize() * 20),
93 ImGuiChildFlags_FrameStyle | ImGuiChildFlags_ResizeY)) {
94 ImGuiMultiSelectFlags flags = ImGuiMultiSelectFlags_ClearOnEscape |
95 ImGuiMultiSelectFlags_BoxSelect1d;
96 ImGuiMultiSelectIO *ms_io =
97 ImGui::BeginMultiSelect(flags, selection.Size,
ITEMS_COUNT);
98 selection.ApplyRequests(ms_io);
100 ImGuiListClipper clipper;
102 if (ms_io->RangeSrcItem != -1)
103 clipper.IncludeItemByIndex(
104 (
int)ms_io->RangeSrcItem);
105 while (clipper.Step()) {
106 for (
int n = clipper.DisplayStart; n < clipper.DisplayEnd; n++) {
110 bool item_is_selected = selection.Contains((ImGuiID)n);
111 ImGui::SetNextItemSelectionUserData(n);
112 ImGui::Selectable(label, item_is_selected);
116 ms_io = ImGui::EndMultiSelect();
117 selection.ApplyRequests(ms_io);