2021 Commits

Author SHA1 Message Date
Timo Suoranta
0cc7e51da2 Drags: added value ladder: stepped value editing with explicit magnitude selection (Houdini-style) (#9463)
Hold middle mouse button over a DragXXX widget to open a vertical ladder
of step magnitudes: drag vertically to select the step magnitude,
horizontally to add/subtract steps of that size. Release middle mouse
button to confirm, press Escape to cancel and revert to the initial value.

- Enable globally with io.ConfigDragValueLadder or per-widget with
  ImGuiSliderFlags_ValueLadder.
- Rungs are powers of ten, from the smallest step representable with the
  display format (1 for integers) up to 10000. For bounded widgets, rungs
  covering the whole range or more are dropped.
- Keyboard/gamepad navigation support: activating the widget
  (Space) opens the ladder, Up/Down select the step magnitude,
  Left/Right add/subtract steps, Space confirms, Escape cancels and
  reverts.
- The ladder is disabled when it would yield fewer than 3 rungs.
- Unlike regular drag speed tweaks (Alt/Shift), the ladder makes the
  current step magnitude visible and exact, and any size of change is
  reachable without a range.
- Min/max clamping, wrap-around and display format rounding behave the
  same as regular mouse drags (reuses the DragBehaviorT pipeline).
- Multi-component widgets (DragFloat3 etc.) get a ladder per component.
- Overlay is drawn on the viewport foreground draw list, so it cannot
  interfere with inputs and may spill outside the host window.
  The overlay grows (monotonically, staying centered and clamped into
  the viewport) whenever the formatted value is wider than the box.
- Not supported together with ImGuiSliderFlags_Logarithmic.
- Demo: added dedicated Widgets->Value Ladder section, checkboxes in
  Configuration->Widgets and Widgets->Drag/Slider Flags.
- Added DataTypeAsDouble() to the DataTypeXXX API (replacing the local
  ValueLadderGetValueAsDouble() helper). Range span is computed with
  DataTypeApplyOp() subtraction followed by DataTypeAsDouble(), which
  also clamps integer overflow.

Addresses feature request #9463.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 09:41:42 +03:00
ocornut
367b2c24f3 Merge branch 'master' into docking 2026-09-09 21:25:09 +02:00
ocornut
e8602501bb Mixed Value: various fixes. (#5518, #5677, #6865)
- With MixedValue+LiveEdit: a single edit that ends up with same output reports as edited.
- Standardize path sin TempInputscalar(), InputScalar(), InputTextEx().
- Refer to changes in imgui_test_suite, in particular "widgets_datatype_1", "widgets_status_liveedit_off",
2026-09-09 20:44:34 +02:00
ocornut
a2b7d6e792 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_metal.mm
#	backends/imgui_impl_metal4.mm
#	backends/imgui_impl_opengl2.cpp
#	backends/imgui_impl_opengl3.cpp
#	backends/imgui_impl_sdlgpu3.cpp
#	backends/imgui_impl_vulkan.cpp
#	imgui.cpp
2026-09-07 19:52:24 +02:00
ocornut
334f484892 ColorEdit4, ColorPicker4: added support for ImGuiItemFlags_MixedValue. (#5518, #5677, #6865) 2026-09-07 19:48:28 +02:00
ocornut
04b37d6d23 Added ImGuiItemFlags_MixedValue support for Drags, Sliders, InputScalar, InputText, RadioButton, Combo. (#5518, #5677, #6865) 2026-09-07 18:56:32 +02:00
ocornut
11bd4e7731 Merge branch 'master' into docking
# Conflicts:
#	imgui.cpp
2026-08-04 14:34:04 +02:00
ocornut
fdc1152281 (Breaking) Style: obsoleted style.CurveTessellationTol in favor of style.CurveTesselationMaxError.
cc #3127, #3664, #3665
2026-08-03 17:05:44 +02:00
ocornut
ebd752a0ec Version 1.93.0 WIP 2026-08-03 14:42:56 +02:00
ocornut
b48d1afbe8 Merge branch 'master' into docking
# Conflicts:
#	docs/CHANGELOG.txt
2026-07-31 16:25:00 +02:00
ocornut
f1cc2ae15e Version 1.92.9b 2026-07-31 16:14:42 +02:00
ocornut
ffbf21af6b Demo: Custom Rendering: enable LiveEdit. Tweaks. 2026-07-30 16:20:09 +02:00
ocornut
950d27137e Tweaks. 2026-07-29 15:51:15 +02:00
ocornut
9b4eb24cee Merge branch 'master' into docking 2026-07-25 13:45:27 +02:00
ocornut
01380c5797 Version 1.92.9 2026-07-25 13:28:06 +02:00
ocornut
93bd4f0adb Merge branch 'master' into docking
# Conflicts:
#	.github/workflows/build.yml
#	backends/imgui_impl_opengl2.cpp
#	backends/imgui_impl_opengl3.cpp
#	backends/imgui_impl_sdl2.cpp
#	examples/example_apple_metal4/main.mm
#	imgui.cpp
2026-07-16 15:56:36 +02:00
ocornut
26b8292635 Split ImGuiItemFlags_LiveEdit into ImGuiItemFlags_LiveEditText, ImGuiItemFlags_LiveEditScalar. Added Demo contents. (#9476, #701)
cc #3936, #3946, #5904, #6284, #8149, #8065, #8665, #9117, #9299, #700, #1351, #1875, #2060, #2215, #2380, #2550, #3083, #3338, #3556, #4373, #4714, #4885, #5184,#5777, #6707, #6766, #8004, #8303, #8915, #9308
2026-07-16 15:46:47 +02:00
ocornut
a23e9fb1b5 Merge branch 'master' into docking
# Conflicts:
#	imgui.cpp
#	imgui.h
2026-07-08 15:10:22 +02:00
ocornut
68fce9f3bd Settings: added DiscardAll option to CleanupIniSettings() / ImGuiSettingsCleanupArgs. (#9460)
+ Demo: tweak for scaling.
2026-07-08 15:03:19 +02:00
ocornut
f626c1c793 ColorPicker: added option to fix Saturation/Value triangle in wheel picker. Amends. (#9337)
ConfigColorPickerRotateTriangle -> !ImGuiColorEditFlags_PickerNoRotate
2026-07-07 16:18:34 +02:00
ocornut
5d56c09432 ColorPicker: added option to fix Saturation/Value triangle in wheel picker. Amends. (#9337) 2026-07-07 16:14:13 +02:00
ocornut
aca69173df (Breaking) ColorEdit: obsoleted SetColorEditOptions() function in favor of poking to io.ConfigColorEditFlags. (Amend 0e479b9, 9f7d808)
Apologies, 9f7d808 was extremely flaky.
2026-07-07 16:10:35 +02:00
ocornut
9f7d8086fe (Breaking) ColorEdit: obsoleted SetColorEditOptions() function in favor of poking to io.ColorEditFlags. (Amend 0e479b9)
Reordered IO fields breaks ABI backward compat which was never guaranteed. Occasional breaking is a good way to enforce that lack of guarantee!
2026-07-06 16:02:17 +02:00
ocornut
0e479b9554 (Breaking) ColorEdit: obsoleted SetColorEditOptions() function in favor of poking to style.ColorEditFlags. 2026-07-06 15:34:13 +02:00
ocornut
d098bf9657 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
2026-07-03 16:59:31 +02:00
ocornut
f7e8343ee9 Settings, IO: added io.ConfigIniSettingsSaveLastUsedDate, platform_io.Platform_SessionDate, IMGUI_DISABLE_TIME_FUNCTIONS(). (#9460)
cc #437
2026-07-03 16:36:45 +02:00
ocornut
5098ce161d Merge branch 'master' into docking 2026-06-25 15:48:42 +02:00
ocornut
ac6f9683b5 Style: added MenuItemRounding, SelectableRounding, ImGuiStyleVar_MenuItemRounding, ImGuiStyleVar_SelectableRounding. (#7589, #9375, #9453) 2026-06-25 11:43:50 +02:00
ocornut
2af6dd9694 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_opengl3.cpp
#	imgui.cpp
2026-06-04 13:53:55 +02:00
Flexan
3495e329f3
Fixed small typo in demo code (#9425) 2026-06-01 15:34:00 +02:00
ocornut
4cb21e4a1e Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_win32.cpp
2026-05-28 15:46:34 +02:00
ocornut
e41d691da1 Demo: Tree Nodes: extract 'Tree Nodes->Selectable Nodes' into its own thing.
+ comments (#9401)
2026-05-18 14:31:58 +02:00
ocornut
5a76f2adf1 Merge branch 'master' into docking
# Conflicts:
#	imgui.cpp
2026-05-15 15:14:52 +02:00
ocornut
c7767926ce Version 1.92.9 WIP 2026-05-15 13:28:32 +02:00
ocornut
b61e56346a Merge branch 'master' into docking
# Conflicts:
#	imgui_demo.cpp
2026-05-12 16:43:34 +02:00
ocornut
8936b58fe2 Version 1.92.8
Include minor bits: adjust activeid logging, tweak comments.
2026-05-12 16:30:30 +02:00
ocornut
ac1f57ba0c Fixed BeginMenu() leading to window with is_resizable_width=true. Fix/amend 95bd1577d. (#9355)
We should instead probably make BeginChild() not set on ImGuiWindowFlags_AlwaysAutoResize on either ResizeX or ResizeY, but that'll be done later.
2026-05-11 16:34:33 +02:00
ocornut
56b37bf93c Inputs: SetItemKeyOwner(): does not set ownership is key is already taken.
(#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641)
2026-05-07 21:22:33 +02:00
ocornut
0eae77f783 Inputs: SetItemKeyOwner(): return true if ownership has been requested, which can to be checked to accurately gate further input test.
(#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641)
2026-05-07 21:15:27 +02:00
ocornut
163b8670c8 Demo: added image viewer with magnifier and grid. 2026-05-07 20:20:05 +02:00
ocornut
c51f1a6e47 Merge branch 'master' into docking
# Conflicts:
#	docs/CHANGELOG.txt
#	imgui.cpp
2026-05-07 16:59:11 +02:00
ocornut
6df50a0667 (Breaking) DrawList: swapped the last two arguments of AddRect(), AddPolyline(), PathStroke(). thickness<>flags.
Added inline redirection functions when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off.
Marked the old functions are =delete when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is on, to allow for better type-checking.
The aim is to be able to use/add flags to more ImDrawList functions, and making existing functions consistents was deemed very desirable.
2026-05-07 16:37:57 +02:00
ocornut
310f3c8370 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_metal.h
#	backends/imgui_impl_metal.mm
#	imgui.cpp
2026-05-06 12:30:38 +02:00
Mikko Mononen
691b89baae ImDrawList: added AddLineH(), AddLineV() helpers. (#9360)
This commit is aimed to be a lossless transform. Further layout fixes in subsequent commits.
2026-04-28 17:04:54 +02:00
ocornut
6b61e60e22 Merge branch 'master' into docking 2026-04-20 13:53:01 +02:00
ocornut
ac88294b4a MultiSelect: Box-Select +Tables: fix usage of box-selection columns with items straying out of columns. (#7994, #2221)
Use 00d3f9295e.
+ Assets Browser toggle to enable ScrollX.
2026-04-20 11:12:43 +02:00
ocornut
cdb046ac3f Demo: Assets Browser: fixed not submitting anything after a SetCursorScreenPos() call when no items. Would not manifest because BeginMultiSelect() altered CursorMaxPos. (#5548)
cc: 2819ab32f8, edcd5b113e1
2026-04-17 19:23:04 +02:00
ocornut
329c5a6b3b Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_metal.mm
#	backends/imgui_impl_sdl2.cpp
2026-04-16 15:29:57 +02:00
ocornut
6fb74f38af Demo: Assets Browser: make default icon size font dependant. 2026-04-15 14:26:50 +02:00
ocornut
bbcc83e999 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_metal.mm
#	imgui.cpp
2026-04-08 21:40:40 +02:00