MultiSelect: added missing call on Shutdown(). Better reuse selection buffer.

This commit is contained in:
ocornut 2023-09-22 14:30:56 +02:00
parent c3998b70cc
commit a6adfb2b49
2 changed files with 6 additions and 1 deletions

View File

@ -3818,6 +3818,8 @@ void ImGui::Shutdown()
g.TablesTempData.clear_destruct();
g.DrawChannelsTempMergeBuffer.clear();
g.MultiSelectStorage.Clear();
g.ClipboardHandlerData.clear();
g.MenusIdSubmittedThisFrame.clear();
g.InputTextState.ClearFreeMemory();

View File

@ -2818,7 +2818,7 @@ struct ExampleSelection
// Functions
ExampleSelection() { Clear(); }
void Clear() { Storage.Clear(); Size = 0; QueueDeletion = false; }
void Clear() { Storage.Data.resize(0); Size = 0; QueueDeletion = false; }
void Swap(ExampleSelection& rhs) { Storage.Data.swap(rhs.Storage.Data); }
bool Contains(ImGuiID key) const { return Storage.GetInt(key, 0) != 0; }
void AddItem(ImGuiID key) { int* p_int = Storage.GetIntRef(key, 0); if (*p_int != 0) return; *p_int = 1; Size++; }
@ -2849,8 +2849,11 @@ struct ExampleSelection
Clear();
if (ms_io->RequestSelectAll)
{
Storage.Data.reserve(items_count);
for (int idx = 0; idx < items_count; idx++)
AddItem(adapter->IndexToStorage(adapter, idx));
}
if (ms_io->RequestSetRange)
for (int idx = (int)ms_io->RangeFirstItem; idx <= (int)ms_io->RangeLastItem; idx++)