3533 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
545d1a884a Backends: DX10, DX11, DX12: fixed a crash rendering multi-viewports if a ClearRenderTargetView() or CreateSwapChain() call failed. (#9546)
Likely to be incomplete for DX12.
2026-09-16 16:03:18 +02:00
ocornut
d7950e2c42 Backends: GLFW: fixed applying mouse cursor shapes to secondary viewports. (#9545)
Amend 9a4fd69f6
2026-09-15 17:26:02 +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
9090ba71e5 Fixed Tesselation -> Tessellation in comments. 2026-09-07 16:38:38 +02:00
ocornut
53d421955f Amend Changelog. (#8564, #9534) 2026-09-07 16:23:01 +02:00
ocornut
687f7fb8ac Drags, Sliders: ongoing drags may be cancelled using Right-Mouse mouse button, reverting to the initial value. (#8564, #9534) 2026-09-07 16:16:55 +02:00
Lukasz Stalmirski
4ebb04333b IO: restore default platform handlers on ClearPlatformHandlers. (#9537, #8945, #2769)
Amend d4f722d5b.
2026-09-07 13:05:15 +02:00
ocornut
f150bf09f9 Drags, Sliders: ongoing drags may be cancelled using Escape or Gamepad Triangle, reverting to the initial value. (#8564, #9534) 2026-09-04 12:24:49 +02:00
Lukasz Stalmirski
5316e70614 Backends: Vulkan: support multiple Vulkan contexts with custom loader. (#6616)
Vulkan function calls now go through a short trampoline function, only apply when IMGUI_IMPL_VULKAN_USE_LOADER is set.
2026-09-03 17:01:15 +02:00
ocornut
7e1b65d26d Merge branch 'master' into docking
# Conflicts:
#	imgui_internal.h
2026-09-02 17:27:51 +02:00
ocornut
4dbb921b22 Examples: disabled /JMC in Visual Studio projects (unnecessary overhead). 2026-09-02 17:15:39 +02:00
ocornut
e2e9533991 Added IM_NODEBUGSTEP helper. Tagged ImVec2, ImVec4, ImRect and various operators.
cc #3038. Amend 1bc6f82091, 301c956039
2026-09-02 17:13:47 +02:00
ocornut
a15761f11c TreeNode: fixed UB shifts and general tree issues when using ImGuiTreeNodeFlags_DrawLinesXXX flags and over 32 deep. (#9509)
+ fix minor typo (#9533)
2026-09-01 20:06:02 +02:00
ocornut
f562ab8e32 DrawList: reworked assert in PushTexture() to allow convenience grace period of using texture already queued for destroy during the same frame. (#9528, #8465)
Amend 131f5c57ab
2026-09-01 16:22:14 +02:00
ocornut
ebc7307db5 ColorButton, RenderColorRectWithAlphaCheckerboard: fixed issues/inconsistencies with checkerboard rendering when combining color alpha and global style alpha. (#9511)
Cleanup hacks in ColorButton(). Amend d851775c80a, e9ff7162b.
2026-08-31 18:04:03 +02:00
ocornut
19ead810d2 ColorButton, ColorEdit, ColorPicker: cancel-out alpha caused by BeginDisabled() so disabled color buttons have the same color. (#9511) 2026-08-31 17:29:10 +02:00
ocornut
7e0de0e411 Examples: GLFW/SDL2/SDL3+WebGPU: fixed running with wgpu-native missing wgpuInstanceWaitAny(). (#9377) 2026-08-31 12:30:37 +02:00
ocornut
35a13e9948 Backends, Examples: WebGPU: further simplications. (#9377, #9532, #9530)
Suggested by @lucascompython
2026-08-31 12:23:26 +02:00
ocornut
6d1f88fe4a Backends: WebGPU: update to build with wgpu-native 29.0+. (#9532, #9530) 2026-08-31 11:56:01 +02:00
ocornut
760dff3244 Docs: misc additions. 2026-08-31 11:32:24 +02:00
ocornut
d3c5ff395c Drags, Sliders: fixed an overflow using ImGuiSliderFlags_Logarithmic with S32/S64 types. (#9526, #3361, #1823, #1316, #642) 2026-08-30 19:44:15 +02:00
ocornut
0af8f475d1 Fixed GetBackgroundDrawList()/GetForegroundDrawList() not being properly reset every frame when cumulated session time is very large. (#9521)
Using a FrameCount for compare. Kept time as float to be consistent with other GC-related timestamps: if there is an actual need to use double we'll switch everywhere.
2026-08-23 13:05:33 +02:00
ocornut
fd13a1e892 Merge branch 'master' into docking
# Conflicts:
#	examples/example_apple_opengl2/main.mm
2026-08-19 13:39:46 +02:00
rubbededo
3e9d0f7e82 Backends: WebGPU: fixed passing non-integer sizes to wgpuRenderPassEncoderSetViewport(). (#9515, #8628) 2026-08-18 12:47:14 +02:00
ocornut
5de45fb1d9 Trim trailing white spaces. Changes some NULL to nullptr. 2026-08-07 16:00:53 +02:00
ocornut
5b6e19bb50 Examples: Apple+OpenGL3: added new example. 2026-08-06 23:10:56 +02:00
ocornut
9c473a34ce Example: GLFW+Metal: fix. 2026-08-06 22:40:28 +02:00
ocornut
de4a2990a2 Backends: Metal, Metal4: fixed resizing windows losing framebuffer scale. (#6828, #8856)
Untested for Metal4
2026-08-06 22:18:41 +02:00
ocornut
e236e74206 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_sdl2.cpp
#	examples/example_sdl2_metal/main.mm
#	imgui_internal.h
2026-08-06 21:32:43 +02:00
ocornut
2ddb5fc095 Examples: SDL2+Metal: stop using SDL_CreateRenderer(). (#5592) 2026-08-06 21:28:57 +02:00
ocornut
724c69b182 Backends: SDL2: fixed querying framebuffer scale/density when using Metal. (#5592) 2026-08-06 18:34:33 +02:00
ocornut
a5a3e1bd04 (Breaking) Backends: DX12: removed support for legacy ImGui_ImplDX12_Init() signature obsoleted in 1.91.6. (#9487)
Amend 40b2286d1, 142827f7, eefe5d5aa.
2026-08-05 14:58:59 +02:00
ocornut
11bd4e7731 Merge branch 'master' into docking
# Conflicts:
#	imgui.cpp
2026-08-04 14:34:04 +02:00
Mike Gorchak
40ec568762 Backends+Examples: QNX Screen: added initial QNX support to backends and examples. (#9492) 2026-08-04 14:10:19 +02:00
ocornut
5108603789 DrawList: apply current pixel density to DrawList's fringe scale. Added ImDrawList::_SetPixelDensity(). Reword FontRasterizerDensity as CurrentPixelDensity.
Amend 94a4322.

# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_draw.cpp
#	imgui_internal.h
2026-08-04 13:15:05 +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
b647af2100 Fonts: AddFontDefault() uses framebuffer scale.
If running before DisplaySize is set, assume a different default on Apple.
2026-08-03 15:01:23 +02:00
ocornut
ebd752a0ec Version 1.93.0 WIP 2026-08-03 14:42:56 +02:00
ocornut
9b7699f325 Backends: amend comments to state that bilinear filtering is required ahead of 1.93. 2026-07-31 22:07:01 +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
448ef2baa9 DragXXX, SliderXXX: fixed a regression in 1.92.9 where clicking a previously Ctrl+Clicked field would flick it to text edit mode for a frame. (#9476, #701) 2026-07-31 13:09:40 +02:00
thedmd
b9adace7b5 Tables: fixed X position of angled borders being off by half a pixel. 2026-07-30 22:03:40 +02:00
thedmd
ed252c55aa Tables: fixed Y position of lower horizontal border being off by one pixel when vertical ones are not also enabled.
Attributed to thedmd who reported this to me.
2026-07-30 21:40:26 +02:00
ocornut
b334d19b66 ImDrawData: fixed a regression in 1.92.9 where legacy ImDrawData::CmdListsCount was always 0. 2026-07-26 15:46:38 +02:00
ocornut
a9e7a8c880 ImDrawData: fixed a regression in 1.92.9 where legacy ImDrawData::CmdListsCount was always 0. 2026-07-26 15:42:48 +02:00
ocornut
9b4eb24cee Merge branch 'master' into docking 2026-07-25 13:45:27 +02:00