Updated Multi Select (markdown)

omar 2023-12-21 16:03:14 +01:00
parent 67ee3892c7
commit 6d3593315e

@ -8,6 +8,18 @@
- **In the spirit of Dear ImGui design, your code owns actual selection data**. This is designed to allow all kinds of selection storage you may use in your application e.g. external selection (set/map/hash), intrusive selection (bool inside your objects) etc. - **In the spirit of Dear ImGui design, your code owns actual selection data**. This is designed to allow all kinds of selection storage you may use in your application e.g. external selection (set/map/hash), intrusive selection (bool inside your objects) etc.
- The work involved to deal with multi-selection differs whether you want to only submit visible items and clip others, or submit all items regardless of their visibility. Clipping items is more efficient and will allow you to deal with large lists (1k~100k items). See "Usage flow" section below for details. If you are not sure, always start without clipping! You can work your way to the optimized version afterwards. - The work involved to deal with multi-selection differs whether you want to only submit visible items and clip others, or submit all items regardless of their visibility. Clipping items is more efficient and will allow you to deal with large lists (1k~100k items). See "Usage flow" section below for details. If you are not sure, always start without clipping! You can work your way to the optimized version afterwards.
### Features
- Design allows all item data and selection data to be fully owned by user. Agnostic to storage type.
- Support CTRL+Click
- Support Shift+Click
- Support mouse box-selection (with scrolling).
- Compatible with keyboard navigation, incl CTRL+Arrow, SHIFT+Arrows but also naturally works with PageUp/PageDown, Home/End etc.
- Compatible with ImGuiListClipper.
- Compatible with drag and drop idioms.
- `ImGuiSelectionBasicStorage` helper used by demos and for quick-start/convenience. Advanced users may bypass it.
- Demos in `Widgets->Selection State & Multi-Select` and `Examples->Assets Browser`.
### Principal APIs ### Principal APIs
```cpp ```cpp