ocornut
2111e3597b
MultiSelect: Comments + tweaked location for widgets to test ImGuiItemFlags_IsMultiSelect to avoid misleading into thinking doing it before ItemAdd() is necessary.
2024-07-18 18:19:19 +02:00
ocornut
dbc67bbf23
MultiSelect: Simplified ImGuiSelectionBasicStorage by using a single SetItemSelected() entry point.
2024-07-18 18:19:19 +02:00
ocornut
f36a03c317
MultiSelect: (Breaking) merge ImGuiSelectionRequestType_Clear and ImGuiSelectionRequestType_SelectAll into ImGuiSelectionRequestType_SetAll., rename ImGuiSelectionRequest::RangeSelected to Selected.
...
The reasoning is that it makes it easier/faster to write an adhoc ImGuiMultiSelectIO handler (e.g. trying to apply multi-select to checkboxes)
2024-07-18 18:19:19 +02:00
ocornut
b13a78e6b2
MultiSelect: Fixed ImGuiMultiSelectFlags_SelectOnClickRelease over tree node arrow.
2024-07-18 18:19:19 +02:00
ocornut
9337151a01
MultiSelect: Box-Select: Fixed initial drag from not claiming hovered id, preventing window behind to move for a frame.
2024-07-18 18:19:19 +02:00
ocornut
3141d87ef8
MultiSelect: Box-Select: Fixed CTRL+drag from void clearing items.
2024-07-18 18:19:18 +02:00
ocornut
8312c75fef
MultiSelect: Added ImGuiMultiSelectFlags_NoRangeSelect. Fixed ImGuiMultiSelectFlags_ScopeRect not querying proper window hover.
2024-07-18 18:19:18 +02:00
ocornut
d439f590ab
MultiSelect: Comments + Assets Browser : Tweak colors.
2024-07-18 18:19:18 +02:00
ocornut
6c4bf8e56e
MultiSelect: Fixed ImGuiSelectionBasicStorage::ApplyRequests() incorrectly maintaining selection size on SelectAll.
2024-07-18 18:19:18 +02:00
ocornut
f3d77d8e71
MultiSelect: Box-Select: Further refactor to extra mode code away from multi-select function into box-select funcitons.
2024-07-18 18:19:18 +02:00
ocornut
907268a430
MultiSelect: Box-Select: Fixed scrolling on high framerates.
2024-07-18 18:19:18 +02:00
ocornut
5d9de14493
MultiSelect: Box-Select: Refactor: Renames.
...
Split into two commits to facilite looking into previous one if needed.
2024-07-18 18:19:18 +02:00
ocornut
75bac1aac6
MultiSelect: Box-Select: Refactor into its own structure, designed for single-instance but closer to being reusable outside Multi-Select.
...
Kept same member names.
2024-07-18 18:19:18 +02:00
ocornut
15391762dd
MultiSelect: Box-Select: Added ImGuiMultiSelectFlags_BoxSelect2d support. Enabled in Asset Browser. Selectable() supports it.
2024-07-18 18:19:18 +02:00
ocornut
1ac469b50f
MultiSelect: Box-Select: Fixed holes when using with clipper (in 1D list.)
...
Clipper accounts for Selectable() layout oddity as BoxSelect is sensitive to it.
Also tweaked scroll triggering region inward.
Rename ImGuiMultiSelectFlags_NoBoxSelectScroll to ImGuiMultiSelectFlags_BoxSelectNoScroll.
Fixed use with ImGuiMultiSelectFlags_SinglaSelect.
2024-07-18 18:19:18 +02:00
ocornut
7546a2d345
MultiSelect: Demo: Assets Browser: track scrolling target so we can roughly land on hovered item.
...
It's impossible to do this perfectly without some form of locking on item because as the hovered item X position changes it's easy to drift.
2024-07-18 18:19:18 +02:00
ocornut
750e23998f
MultiSelect: Demo: Assets Browser: added deletion support. Store ID in selection. Moved QueueDeletion to local var to emphasis that this is a user extension.
2024-07-18 18:19:18 +02:00
ocornut
51fe0bfcf6
MultiSelect: reworked comments in imgui.h now that we have our own section.
2024-07-18 18:19:17 +02:00
ocornut
0f633c1d99
MultiSelect: move demo's ExampleSelection to main api as a convenient ImGuiSelectionBasicStorage for basic users.
2024-07-18 18:19:17 +02:00
ocornut
e0282347db
MultiSelect: remove ImGuiSelectionRequest/ImGuiMultiSelectIO details from public api to reduce confusion + comments.
2024-07-18 18:19:17 +02:00
ocornut
0af6fbb51d
MultiSelect: added support for nested/stacked BeginMultiSelect().
...
Mimicking table logic, reusing amortized buffers.
2024-07-18 18:19:17 +02:00
ocornut
b747d6fe59
MultiSelect: Demo: rework and move selection adapter inside ExampleSelection.
2024-07-18 18:19:17 +02:00
ocornut
aa4d64be92
MultiSelect: Box-Select: added scroll support.
2024-07-18 18:19:17 +02:00
ocornut
f904a6646c
MultiSelect: Box-Select: added support for ImGuiMultiSelectFlags_BoxSelect.
...
(v11)
FIXME: broken on clipping demo.
2024-07-18 18:19:17 +02:00
ocornut
90305c57e4
MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_ClearOnClickWindowVoid -> ImGuiMultiSelectFlags_ClearOnClickVoid. Added ImGuiMultiSelectFlags_ScopeWindow, ImGuiMultiSelectFlags_ScopeRect.
2024-07-18 18:19:17 +02:00
ocornut
bf01795483
Demo: Assets Browser: add hit spacing, requierd for box-select patterns.
2024-07-18 18:19:17 +02:00
ocornut
3d41994a63
MultiSelect: simplify clearing ImGuiMultiSelectTempData.
2024-07-18 18:19:17 +02:00
ocornut
33fc61a091
MultiSelect: use a single ImGuiMultiSelectIO buffer.
...
+ using local storage var in EndMultiSelect(), should be no-op.
2024-07-18 18:19:17 +02:00
ocornut
5941edd9f7
MultiSelect: added support for recovery in ErrorCheckEndWindowRecover().
2024-07-18 18:19:17 +02:00
ocornut
c527cba470
MultiSelect: we don't need to ever write to EndIO.RangeSrcItem as this is not meant to be used.
2024-07-18 18:19:16 +02:00
ocornut
6feff6ff05
MultiSelect: (Breaking) io contains a ImVector<ImGuiSelectionRequest> list.
2024-07-18 18:19:16 +02:00
ocornut
a6adfb2b49
MultiSelect: added missing call on Shutdown(). Better reuse selection buffer.
2024-07-18 18:19:16 +02:00
ocornut
c3998b70cc
MultiSelect: clarified purpose and use of IsItemToggledSelection(). Added assert. Moved to multi-selection section of imgui.h.
2024-07-18 18:19:16 +02:00
ocornut
2765fdb43e
MultiSelect: removed seemingly unnecessary block in BeginMultiSelect().
...
- EndIO.RangeSelected always set along with EndIO.RequestSetRange
- Trying to assert for the assignment making a difference when EndIO.RequestSetRange is already set couldn't find a case (tests passing).
2024-07-18 18:19:16 +02:00
ocornut
88df590145
Demo: Assets Browser: store items, sorting, type overlay.
2024-07-18 18:19:16 +02:00
ocornut
d18e57e673
Demo: Assets Browser: Added assets browser demo.
2024-07-18 18:19:16 +02:00
ocornut
82de6c470b
MultiSelect: Added ImGuiMultiSelectFlags_SelectOnClickRelease to allow dragging an unselected item without altering selection + update drag and drop demo.
2024-07-18 18:19:16 +02:00
ocornut
5628dda5a5
MultiSelect: move shared logic to MultiSelectItemHeader().
...
No logic change AFAIK but added an indent level in MultiSelectItemHeader(). Logic changes will come in next commit.
2024-07-18 18:19:16 +02:00
ocornut
9da4efed2a
MultiSelect: moved RequestClear output so it'll match request list version better. Use Storage->RangeSrcItem in EndMultiSelect().
2024-07-18 18:19:16 +02:00
ocornut
a6f43dfadd
MultiSelect: ImGuiMultiSelectIO's field are not used during loop anymore, stripping them out of comments.
2024-07-18 18:19:16 +02:00
ocornut
dce02f5c4b
Demo: Dual List Box: Added a dual list box (6648)
2024-07-18 18:19:16 +02:00
ocornut
ba698df7bb
MultiSelect: Demo: Deletion: Various renames to clarify. Use adapter and item list in both ApplyDeletion functions.
...
This also minify the patch for an alternative/wip attmept at redesgining pre/post deletion logic. But turns out current attempt may be easier to grasp.
2024-07-18 18:19:16 +02:00
ocornut
e1d2109208
MultiSelect: Demo: Deletion: Rework ApplyDeletionPreLoop to use adapter + fix PostLoop not using right value of RequestFocusItem.
...
Recovery made it transparent visually but user side selection would be empty for a frame before recovery.
2024-07-18 18:19:16 +02:00
ocornut
fa516c3d76
MultiSelect: Demo: Make ExampleSelection use ImGuiID. More self-explanatory.
2024-07-18 18:19:15 +02:00
ocornut
530155d85a
MultiSelect: Demo: Remove UserDataToIndex from ExampleSelectionAdapter.
...
Seems to make a better demo this way.
2024-07-18 18:19:15 +02:00
ocornut
8c1f659b3d
MultiSelect: Demo: rework ExampleSelection with an ExampleSelectionAdapter layer, allowing to share more code accross examples using different storage systems.
...
Not ideal way to showcase this demo but this is really more flexible.
2024-07-18 18:19:15 +02:00
ocornut
8fe6b31952
MultiSelect: (Breaking) Removed RangeSrcPassedBy in favor of favoring user to call IncludeByIndex(RangeSrcItem) which is easier/simpler to honor.
...
Especially as recent changes made it required to also update RangeSrcPassedBy after last clipper Step.
Should now be simpler.
2024-07-18 18:19:15 +02:00
ocornut
6ddc5f38af
MultiSelect: Demo: added simpler demo using Clipper. Clarify RangeSrcPassedBy doc.
2024-07-18 18:19:15 +02:00
ocornut
c3753809b1
MultiSelect: Demo: rework ExampleSelection names to map better to typical user code + variety of Comments tweaks.
2024-07-18 18:19:15 +02:00
ocornut
ff95fdb668
MultiSelect: (Breaking) RequestSetRange's parameter are RangeFirstItem...RangeLastItem (which was always ordered unlike RangeSrcItem...RangeDstItme). Removed RangeDstItem. Removed RangeDirection.
2024-07-18 18:19:15 +02:00