ocornut
6df1a06fc3
Merge branch 'master' into docking
2024-07-29 23:18:54 +02:00
ocornut
df38704926
Added SetNextItemStorageID() for tree nodes. ( #7553 , #6990 , #3823 , #1131 )
...
Undo/amend 7c6d4ff
.
2024-07-29 22:31:52 +02:00
Rémi Hérilier
c7b9256097
Selectable: added ImGuiSelectableFlags_Highlight flag to highlight items independently from the hovered state. ( #7820 )
...
Demo: Make the Widget/List boxes show how to use forced highlighting.
2024-07-29 12:05:08 +02:00
ocornut
692bee5f22
Added GetID(int) variant for consistency. ( #7111 )
2024-07-26 15:28:06 +02:00
ocornut
b3ba6b3095
Added io.ConfigNavSwapGamepadButtons to swap Activate/Cancel (A<>B) buttons, to match the typical "Nintendo/Japanese consoles" button layout when using Gamepad navigation. ( #787 , #5723 )
2024-07-26 14:07:29 +02:00
ocornut
3552df562e
Merge branch 'master' into docking
...
# Conflicts:
# imgui.cpp
# imgui.h
2024-07-25 16:41:56 +02:00
ocornut
b20f62b162
Obsoleted GetContentRegionMax().
2024-07-25 16:20:44 +02:00
ocornut
055b2e80fb
Moved everyone's best friend GetContentRegionAvail() to a more prominent position.
2024-07-25 16:09:46 +02:00
ocornut
aad86b8756
Obsoleted GetWindowContentRegionMin() and GetWindowContentRegionMax().
...
You should never need those functions. You can do everything with GetCursorScreenPos() and GetContentRegionAvail().
2024-07-25 15:53:55 +02:00
ocornut
e3da939b86
Groups, Tables: fixed EndGroup() failing to correctly capture current table occupied size. ( #7543 )
...
See "layout_group_endtable" test.
2024-07-24 18:41:51 +02:00
ocornut
3fab2bb7be
Merge branch 'master' into docking
...
# Conflicts:
# backends/imgui_impl_sdl3.cpp
# imgui.cpp
2024-07-22 19:41:39 +02:00
ocornut
97ff9bd370
Nav: fixed c licking window decorations (e.g. resize borders) from losing focused item when within a child window using ImGuiChildFlags_NavFlattened.
...
In essence, using ImGuiFocusRequestFlags_RestoreFocusedChild here is a way to reduce changes caused by FocusWindow(), but it could be done more neatly.
See amended "nav_flattened" test.
2024-07-22 15:04:25 +02:00
ocornut
c3dca77a19
Demo: rework Property Editor.
2024-07-22 14:49:16 +02:00
Thomas Stehle
da36336321
TabBar, Style: added style option for the size of the Tab-Bar Overline ( #7804 )
...
Amend 21bda2e
.
2024-07-22 10:58:16 +02:00
ocornut
02cc7d451c
Merge branch 'master' into docking
...
# Conflicts:
# imgui_demo.cpp
2024-07-19 18:49:25 +02:00
ocornut
f9cda1fa24
Inputs: added SetItemKeyOwner(ImGuiKey key) in public API. ( #456 , #2637 , #2620 , #2891 , #3370 , #3724 , #4828 , #5108 , #5242 , #5641 )
2024-07-19 18:39:07 +02:00
ocornut
b6e313bc05
MultiSelect: using ImGuiMultiSelectFlags_NoRangeSelect ensure never having to interpolate between two ImGuiSelectionUserData.
2024-07-19 16:42:14 +02:00
ocornut
fd77815f9f
Merge branch 'master' into docking
...
# Conflicts:
# imgui.cpp
# imgui_demo.cpp
2024-07-18 18:22:26 +02:00
ocornut
02c31a8dd1
MultiSelect: added Changelog for the feature. Removed IMGUI_HAS_MULTI_SELECT.
2024-07-18 18:19:22 +02:00
ocornut
2688562fd2
MultiSelect: Better document how TreeNode() is not trivially usable yet.
...
Will revert when the time is right.
2024-07-18 18:19:22 +02:00
ocornut
7814518049
MultiSelect: ImGuiSelectionBasicStorage: optimized for smaller insertion amounts in larger sets + fix caling batch select with same value.
2024-07-18 18:19:22 +02:00
ocornut
7d4de84ee3
MultiSelect: added courtesy ImGuiMultiSelectFlags_NavWrapX flag so we can demo this until a nav api is designed.
2024-07-18 18:19:22 +02:00
ocornut
d411c9054a
MultiSelect: minor tidying up.
...
Checkbox() was reworked in master effectively fixing render clipping when culled by BoxSelect2d's UnclipMode.
2024-07-18 18:19:22 +02:00
ocornut
3f34c83bc6
MultiSelect: added ImGuiMultiSelectFlags_NoAutoClearOnReselect + tweak flags comments. ( #7424 )
2024-07-18 18:19:21 +02:00
ocornut
a8a1f29512
MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect2d. Which include not assuming one flag imply the other.
...
Amend 2024/05/31 commit.
2024-07-18 18:19:21 +02:00
ocornut
c52346850d
MultiSelect: ImGuiSelectionBasicStorage: added PreserveOrder, maintain implicit order data in storage.
...
Little tested but provided for completeness.
2024-07-18 18:19:21 +02:00
ocornut
df664329cb
MultiSelect: provide RangeDirection to allow selection handler to handler backward shift+click.
2024-07-18 18:19:21 +02:00
ocornut
3ac367ff41
MultiSelect: ImGuiSelectionBasicStorage: (breaking) rework GetNextSelectedItem() api to avoid ambiguity/failure when user uses a zero id.
2024-07-18 18:19:21 +02:00
ocornut
c07864f64a
MultiSelect: ImGuiSelectionBasicStorage: move function bodies to cpp file.
...
+ make ImGuiStorage::BuildSortByKey() less affected by msvc debug mode.
2024-07-18 18:19:21 +02:00
ocornut
2af3b2ac81
MultiSelect: ImGuiSelectionBasicStorage: simplify by removing compacting code (compacting may be opt-in?).
...
GetNextSelectedItem() wrapper gives us more flexibility to work on this kind of stuff now.
2024-07-18 18:19:21 +02:00
ocornut
e61612a687
MultiSelect: ImGuiSelectionBasicStorage: rework to accept massive selections requests without flinching.
...
Batch modification + storage only keeps selected items.
2024-07-18 18:19:21 +02:00
ocornut
e1fd25051e
MultiSelect: ImGuiSelectionBasicStorage: added GetNextSelectedItem() to abstract selection storage from user. Amend Assets Browser demo to handle drag and drop correctly.
2024-07-18 18:19:21 +02:00
ocornut
c3d7aa252b
MultiSelect: comments, header tweaks., simplication (some of it on wiki).
2024-07-18 18:19:21 +02:00
ocornut
db4898cb91
MultiSelect: added ImGuiSelectionExternalStorage helper. Simplify bool demo.
2024-07-18 18:19:20 +02:00
ocornut
f9caf4447a
MultiSelect: fixed ImGuiSelectionBasicStorage::Swap() helper.
2024-07-18 18:19:20 +02:00
ocornut
c94cf6f01f
MultiSelect: added ImGuiSelectionBasicStorage::GetStorageIdFromIndex() indirection to be easier on the reader.
...
Tempting to make it a virtual.
2024-07-18 18:19:20 +02:00
ocornut
ab995d3d4f
MultiSelect: (breaking) Added 'items_count' parameter to BeginMultiSelect(). Will enable extra features, and remove equivalent param from ImGuiSelectionBasicStorage::ApplyRequests(.
2024-07-18 18:19:20 +02:00
ocornut
f6b5caf82c
MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect1d, ImGuiMultiSelectFlags_BoxSelect2d -> ImGuiMultiSelectFlags_BoxSelect.
...
ImGuiMultiSelectFlags_BoxSelect1d being an optimization it is the optional flag.
2024-07-18 18:19:20 +02:00
ocornut
7bbbbea200
MultiSelect: Box-Select: fixes for checkboxes support. Comments.
2024-07-18 18:19:20 +02:00
ocornut
2f56df4839
MultiSelect: (breaking) renamed ImGuiSelectionBasicStorage::AdapterData to UserData.
2024-07-18 18:19:20 +02:00
ocornut
9435a3185a
RangeSelect/MultiSelect: (Breaking) Added current_selection_size to BeginMultiSelect().
...
Required for shortcut routing so we can e.g. have Escape be used to clear selection THEN to exit child window.
2024-07-18 18:19:19 +02:00
ocornut
955210ae5b
MultiSelect: Demo: use Shortcut().
...
Got rid of suggestion to move Delete signal processing to BeginMultiSelect(), seems unnecessary.
2024-07-18 18:19:19 +02:00
ocornut
e7a734f78d
MultiSelect: added ImGuiMultiSelectFlags_NoAutoSelect, ImGuiMultiSelectFlags_NoAutoClear features + added Checkbox Demo
...
Refer to "widgets_multiselect_checkboxes" in imgui_test_suite.
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
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
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
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
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
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
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
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
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
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
c0035705ca
MultiSelect: Further simplication of user code to support Deletion.
...
Provide standard RequestFocusItem storage.
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
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
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
78cb1661cb
MultiSelect: Shallow tweaks/refactors.
...
Including moving IsFocused back internally for now.
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
omar
0479b188d0
MultiSelect: Comments. Tweak demo.
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
0e485a2109
Merge branch 'master' into docking
...
# Conflicts:
# backends/imgui_impl_sdl3.cpp
# imgui.cpp
# imgui_widgets.cpp
2024-07-18 17:56:27 +02:00
ocornut
8bab3eab6a
Clipper: added SeekCursorForItem() function, for use when using ImGuiListClipper::Begin(INT_MAX). ( #1311 )
...
Tagging #3609 just in case we made a mistake introducing a regression (but tests are passing and have been extended).
2024-07-17 18:16:06 +02:00
ocornut
0e4dcfa552
Obsoleted PushTabStop()/PopTabStop() in favor of using new PushItemFlag()/PopItemFlag() with ImGuiItemFlags_NoTabStop.
2024-07-15 18:57:46 +02:00
ocornut
3de75138d1
(Breaking) Renamed ImGuiSelectableFlags_DontClosePopups to ImGuiSelectableFlags_NoAutoClosePopups. ( #1379 , #1468 , #2200 , #4936 , #5216 , #7302 , #7573 )
2024-07-15 18:46:34 +02:00
ocornut
0de88a928d
Added ImGuiItemFlags_AutoClosePopups as a replacement for internal's ImGuiItemFlags_SelectableDontClosePopup. ( #1379 , #1468 , #2200 , #4936 , #5216 , #7302 , #7573 )
2024-07-15 18:46:34 +02:00
ocornut
b4ca869c40
(Breaking) Obsoleted PushButtonRepeat()/PopButtonRepeat() in favor of using new PushItemFlag()/PopItemFlag() with ImGuiItemFlags_ButtonRepeat.
2024-07-15 18:38:18 +02:00
ocornut
7e0800e718
Added PushItemFlag(), PopItemFlag(), ImGuiItemFlags.
2024-07-15 18:38:18 +02:00
ocornut
bc9e5b62b6
Added ImGuiDataType_Bool for convenience.
2024-07-15 16:49:35 +02:00