Commit Graph

994 Commits

Author SHA1 Message Date
ocornut 6feff6ff05 MultiSelect: (Breaking) io contains a ImVector<ImGuiSelectionRequest> list. 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 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 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 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
ocornut af83a3eea4 MultiSelect: clear selection when leaving a scope with a nav directional request.
May need to clarify how to depends on actions being performed (e.g. click doesn't).
May become optional?
2024-07-18 18:19:15 +02:00
ocornut 6821401a3f MultiSelect: Tweak debug log to print decimal+hex values for item data.
Struggled to get standard PRIX64 to work on CI.
2024-07-18 18:19:15 +02:00
ocornut c9eb3714e8 MultiSelect: move HasSelectionData to ImGuiItemFlags to facilitate copying around in standardized fieds.
Required/motivated to simplify support for ImGuiTreeNodeFlags_NavLeftJumpsBackHere (bc3c0ce) in this branch.
2024-07-18 18:19:15 +02:00
ocornut e82b49d2d4 MultiSelect: (Breaking) Use ImGuiSelectionUserData (= ImS64) instead of void* for selection user data.
Less confusing for most users, less casting.
2024-07-18 18:19:15 +02:00
ocornut 140a2f0565 MultiSelect: Comments, tweaks.
+ Alignment to reduce noise on next commit.
2024-07-18 18:19:15 +02:00
ocornut 847b1dde8c MultiSelect: (Breaking) Fix + Rename ImGuiMultiSelectFlags_NoMultiSelect to ImGuiMultiSelectFlags_SingleSelect as it seems easier to grasp.
Feature was broken by "Tidying up..." June 30 commit.
2024-07-18 18:19:15 +02:00
ocornut 0cf376348b MultiSelect: Cleanup unused comments/code. 2024-07-18 18:19:14 +02:00
ocornut ab9326f4ae MultiSelect: Fixed right-click handling in MultiSelectItemFooter() when not focused. 2024-07-18 18:19:14 +02:00
ocornut df1eeb9a20 MultiSelect: Maintain NavIdSelected for user. Simplify deletion demo. 2024-07-18 18:19:14 +02:00
ocornut 9223ffc255 MultiSelect: (Breaking) BeginMultiSelect() doesn't need two last params maintained by users. Moving some storage from user to core. Proper deletion demo. 2024-07-18 18:19:14 +02:00
ocornut 387fc13894 MultiSelect: Clarify and better enforce lifetime of BeginMultiSelect() value. 2024-07-18 18:19:14 +02:00
ocornut 961b81c362 MultiSelect: Tidying up/simpllifying MultiSelectItemFooter().
Intended to be entirely a no-op, merely a transform of source code for simplification. But committing separatey from behavior change in previous change.
2024-07-18 18:19:14 +02:00
ocornut 1ea9ca748c MultiSelect: Remove the need for using IsItemToggledSelection(). Update comments.
This is the simple version that past our tests. MultiSelectItemFooter() is in need of a cleanup.
2024-07-18 18:19:14 +02:00
ocornut 6ef70a97fd MultiSelect: Remove ImGuiMultiSelectFlags_NoUnselect because I currently can't find use for this specific design.
And/or it seem partly broken.
2024-07-18 18:19:14 +02:00
ocornut ccf43d6a96 MultiSelect: (Breaking) Renamed 'RangeValue' -> 'RangeSelected' + amend comments. 2024-07-18 18:19:14 +02:00
ocornut a83326bc52 MultiSelect: (Breaking) Renamed 'RangeSrc -> 'RangeSrcItem', "RangeDst' -> 'RangeDstItem'
This is necessary to have consistent names in upcoming fields (NavIdItem etc.)
2024-07-18 18:19:13 +02:00
ocornut a39f9e7661 MultiSelect: Internals rename of IO fields to avoid ambiguity with io/rw concepts + memset constructors, tweaks.
debug
2024-07-18 18:19:13 +02:00
ocornut 35b5ebc9b5 MultiSelect: (Breaking) Rename ImGuiMultiSelectData to ImGuiMultiSelectIO. 2024-07-18 18:19:13 +02:00
ocornut 11bcae1ebd MultiSelect: refactor before introducing persistant state pool and to facilitate adding recursion + debug log calls.
This is mostly the noisy/shallow stuff committed here, to get this out of the way.
2024-07-18 18:19:13 +02:00
ocornut 5d71314f71 MultiSelect: removed DragDropActive/preserve_existing_selection logic which seems unused + comments.
Can't find trace of early prototype for range-select but I couldn't find way to trigger this anymore. May be wrong. Will find out.
2024-07-18 18:19:13 +02:00
ocornut 85954c845e MultiSelect: Enter can alter selection if current item is not selected. 2024-07-18 18:19:13 +02:00
ocornut d2f208a30c MultiSelect: made SetNextItemSelectionData() optional to allow disjoint selection (e.g. with a CollapsingHeader between items). Amend demo. 2024-07-18 18:19:13 +02:00
ocornut 815c61b82e MultiSelect: Fixed needing to set RangeSrcPassedBy when not using clipper. 2024-07-18 18:19:13 +02:00
ocornut 78cb1661cb MultiSelect: Shallow tweaks/refactors.
Including moving IsFocused back internally for now.
2024-07-18 18:19:13 +02:00
ocornut a05700e327 MultiSelect: Enter doesn't alter selection (unlike Space).
Fix for changes done in 5606.
2024-07-18 18:19:13 +02:00
ocornut 35bbadcf0c MultiSelect: Added ImGuiMultiSelectFlags_ClearOnClickWindowVoid. + Demo: showcase multiple selection scopes in same window. 2024-07-18 18:19:13 +02:00
ocornut 19086c1c48 MultiSelect: Added ImGuiMultiSelectFlags_ClearOnEscape (unsure of best design), expose IsFocused for custom shortcuts. 2024-07-18 18:19:12 +02:00
ocornut 919cac1482 MultiSelect: Demo: Add a simpler version. 2024-07-18 18:19:12 +02:00
ocornut ad5d3c9bff MultiSelect: Fixed issue with Ctrl+click on TreeNode + amend demo to test drag and drop. 2024-07-18 18:19:12 +02:00
ocornut b9721c1ed7 MultiSelect: Temporary fix/work-around for child/popup to not inherit MultiSelectEnabled flag, until we make mulit-select data stackable. 2024-07-18 18:19:12 +02:00
omar 00c4b8f2a3 MultiSelect: Fix testing key mods from after the nav request (remove need to hold the mod longer) 2024-07-18 18:19:12 +02:00
omar 3ba3f0d905 MultiSelect: Fix Selectable() ambiguous return value, clarify need to use IsItemToggledSelection(). 2024-07-18 18:19:12 +02:00
omar 0479b188d0 MultiSelect: Comments. Tweak demo. 2024-07-18 18:19:12 +02:00
omar 9aeebd24f7 MultiSelect: Fixed CTRL+A not testing focus scope id. Fixed CTRL+A not testing active id. Added demo code.
Comments.
2024-07-18 18:19:12 +02:00
ocornut 7abda179af MultiSelect: Fix for TreeNode following merge of 011d4755. Demo: basic test for tree nodes. 2024-07-18 18:19:12 +02:00
omar 9c7183dd04 MultiSelect: Transition to use FocusScope bits merged in master.
Preserve ability to shift+arrow into an item that is part of FocusScope but doesn't carry a selection without breaking selection.
2024-07-18 18:19:12 +02:00
omar 4afbfd5e71 MultiSelect: Renamed SetNextItemMultiSelectData() to SetNextItemSelectionUserData() 2024-07-18 18:19:12 +02:00
omar 17c4c2154a MultiSelect: Demo sharing selection helper code. Fixed static analyzer warnings. 2024-07-18 18:19:12 +02:00
omar 57da88093f MultiSelect: Added IMGUI_HAS_MULTI_SELECT define. Fixed right-click toggling selection without clearing active id, could lead to MarkItemEdited() asserting. Fixed demo. 2024-07-18 18:19:11 +02:00
ocornut 8947c35fa1 MultiSelect: Removed SelectableSpacing as I'm not sure it is of use for now (history insert) 2024-07-18 18:19:11 +02:00
omar 554db6bc0f MultiSelect: WIP range-select (#1861) (rebased six millions times) 2024-07-18 18:19:11 +02:00
ocornut 070c046cd1 Internals: rename recently added TreeNodeIsOpen() -> TreeNodeGetOpen(). (#7553, #1131, #2958, #2079, #722)
Amend ac7d6fb
2024-07-17 20:01:55 +02:00