ocornut
a1e05521e9
Backends: GLFW: added a Win32-specific implementation of ImGui_ImplGlfw_GetContentScaleXXXX functions for legacy GLFW 3.2. ( #9003 )
...
Since we ship GLFW 3.2 binaries for Windows this makes our examples a little better behaving by default.
Ideally we'd use ImGui_ImplWin32_GetDpiScaleForHwnd() and ImGui_ImplWin32_GetDpiScaleForMonitor() but they are too much code to copy.
2026-04-21 17:24:41 +02:00
ocornut
d7b40ab9a9
MultiSelect: Box-Select + Tables: Amend ac88294. fix usage of box-selection columns with items straying out of columns. ( #7994 , #2221 )
2026-04-20 11:46:36 +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
ea1c04f7ab
Multi-Select + Tables: fixed an issue which could lead to an extra vertical offset in the Header row. ( #8250 , #7994 )
...
Because BeginMultiSelect() does `ms->ScopeRectMin = window->DC.CursorMaxPos = window->DC.CursorPos` at a time where CursorPos is already past MaxPos.y because of ItemSpacing.y. Accumulate spacing.
2026-04-17 19:23:10 +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 , edcd5b113e
2026-04-17 19:23:04 +02:00
ocornut
97939e6837
Multi-Select: Box-Select: fixes for using accross nested child windows. ( #8364 )
...
- IsFocused scan nav focus route.
- When covering multiple windows, draw in front most ones (grabbed FindFrontMostVisibleChildWindow() from docking branch).
2026-04-17 16:36:09 +02:00
ocornut
c91b03060d
Multi-Select: Box-Select: improve dirty unclip rectangle calculation + use in ImGuiMultiSelectFlags_BoxSelect1d mode when needed (e.g. wheel scrolling up). ( #7994 , #8250 , #7821 , #7850 , #7970 )
2026-04-17 14:38:12 +02:00
ocornut
a2eb6d99ed
MultiSelect: Box-Select +Tables: revert 4d00bf8ad which seems unneeded since enforce table layout in BeginMultiSelect(). ( #7970 , #7821 ).
2026-04-16 23:59:44 +02:00
ocornut
a2916923a1
MultiSelect: Box-Select + Clipper: extend UnclipRect by ItemSpacing. ( #7994 , #8250 , #7821 , #7850 , #7970 )
...
Amend 1ac469b50f
2026-04-16 23:37:46 +02:00
ocornut
2cbdb7a337
TextLink(), BeginCombo(): fixed two remainig instances of needlessly scanning for ##.
2026-04-16 16:47:13 +02:00
ocornut
d4783bd553
Added missing Test Engine hooks for PlotXXX(), VSliderXXX(), TableHeader().
2026-04-16 16:39:07 +02:00
ocornut
ce855cada2
Tables, Multi-Select: Fixed an issue using Multi-Select within a Table causing column width measurement to be invalid when trailing column contents is not submitted in the last row. ( #9341 , #8250 )
2026-04-16 15:21:56 +02:00
ocornut
39e7bf5a08
Separator(): enforce a minimum border size if style.SeparatorSize is 0.0f. ( #9369 )
2026-04-16 11:32:40 +02:00
ocornut
0e318a5182
Backends: SDL2: Made ImGui_ImplSDL2_GetContentScaleXXX helpers return a minimum of 1.0f, as some Linux setup seems to report <1.0f value and this breaks scaling border size. ( #9369 )
2026-04-16 11:32:07 +02:00
ocornut
19753a30d8
Multi-Select: Box-Select+Tables: fixed Column return value when UnClipRect is active. ( #7994 , #8250 )
...
Amend 6ce4b44 + bbd0af7 . This probably should be redesigned to be more generic, e.g. move UnclipRect concept outside of Boxselect.
2026-04-15 15:08:49 +02:00
ocornut
6fb74f38af
Demo: Assets Browser: make default icon size font dependant.
2026-04-15 14:26:50 +02:00
ocornut
ed4dd679f1
Fixed vertical scrollbar top coordinates when using thick borders on windows with no title bar and no menu bar. ( #9366 )
2026-04-14 16:39:08 +02:00
ocornut
3cd8683061
Fonts: assert when using MergeMode with an explicit size over a target font with an implicit size, as scale factor are likely erroneous. ( #9361 )
2026-04-13 16:45:18 +02:00
ocornut
bbd0af7256
Multi-Select: Box-Select+Tables: fixed using BeginMultiSelect() before table layout is locked. ( #8250 )
2026-04-13 16:19:45 +02:00
ocornut
f83a378d62
TabBar: changed edge's TabItem ClipRect to not pass an inverted PushClipRect().
...
While not currently a problem, it would be if ImRect::Overlaps() is changed to use <= instead of < (cc: #3976 which deal with Contains but sort of similar topic).
Changing ImDrawList::PushClipRect()'s intersect_with_current_clip_rect path to use ClipRectFull() would also fix this, but it may ambiguous there which behavior would be correct.
Amend 1ec464eb9 .
2026-04-13 14:11:19 +02:00
ocornut
2dc64f99bc
Minor optimization: reduce redudant label scanning in common widgets.
...
Missing stuff from 11de9df .
The 6 remaining use of CalcTextSize(...,true) don't need this.
2026-04-10 18:37:08 +02:00
ocornut
5da7eb0a84
DrawList: remove/strip old FixRectCornerFlags() code.
...
Amend 44a6b493e
2026-04-10 17:42:13 +02:00
ocornut
f678c91617
Multi-Select: disable MultiSelectAddSetRange() attempt at merging consecutive requests submitted from box-selection.
...
Essentially reverts 79b77d91c , f904a6646c which did the initial span merging.
Amend and disable change done for f08b33f .
2026-04-09 23:13:15 +02:00
ocornut
6ce4b44547
Mulit-Select: Box-Select: fixed an issue using in a table while relying on the TableNextColumn() return value to perform coarse clipping. ( #7994 )
...
This is presumably not sufficient as MultiSelectAddSetRange() is also deficient there.
2026-04-09 23:13:12 +02:00
ocornut
f08b33fd0c
Multi-Select: Box-Select: fixed an issue where items out of horizontal view would sometimes lead to incorrect merging of sequential selection requests. ( #7994 , #1861 , #6518 )
...
SetNextItemSelectionUserData() could use g.NextItemData.SelectionUserData if we could guarantee if would be valid when nesting multi-select blocks.
But it doesn't make much of a difference as whole ImGuiMultiSelectTempData fits in 2 cache lines.
2026-04-09 22:16:47 +02:00
ocornut
b444694b3d
Multi-Select: Box-Select: fixed an issue using ImGuiMultiSelectFlags_BoxSelect2d mode, where items out of view wouldn't be properly selected. ( #7994 , #1861 , #6518 )
...
Because BoxSelectRectPrev and BoxSelectRectCurr were clamped to scope boundaries, dragging mouse outside of the scope would usually keep one axis unchanged.
Amend 15391762dd
2026-04-09 21:40:29 +02:00
ocornut
24677c561e
Multi-Select: Box-Select: add compile-time debug options. ( #7994 , #1861 , #6518 )
2026-04-09 21:40:13 +02:00
ocornut
01a4ad3a50
Docs: update legacy TODO list.
2026-04-09 15:01:40 +02:00
ocornut
f4ed421a88
InputText: CharFilter callback event sets CursorPos/SelectionStart/SelectionEnd. ( #816 )
2026-04-09 14:54:09 +02:00
ocornut
11de9df44c
Minor optimization: reduce redudant label scanning in common widgets.
2026-04-09 14:25:34 +02:00
ocornut
c2565fe642
Update ignore list
...
Add .claude
2026-04-09 13:59:45 +02:00
ocornut
95bd1577d6
Windows: Child windows with only ImGuiChildFlags_AutoResizeY flag keep using the proportional default ItemWidth. ( #9355 )
...
+ Removed Tooltip flag check, it's from 8c4fcf1359 (!) where AlwaysAutoReszie was added after Tooltip. Nowadays Tooltips sets ImGuiChildFlags_AlwaysAutoResize.
2026-04-09 13:11:16 +02:00
ocornut
dd17495a42
Detect and report error when calling End() instead of EndPopup() on a popup. ( #9351 )
2026-04-08 21:40:05 +02:00
ocornut
1870a779e1
Windows: fixed a single-axis auto-resizing feedback loop issue with nested containers and varying scrollbar visibility. ( #9352 )
2026-04-08 21:26:16 +02:00
ocornut
a9bd173d89
Windows: shallow renames (should be no-op).
2026-04-08 20:40:35 +02:00
ocornut
bccec3eabc
Tables: fixed IdealMaxPos.y/CursorMaxPos.y computation being wrong when vertically scrolling. ( #9352 , #7651 )
...
See ""table_reported_size_outer" test amends (0f9d1e02b0).
2026-04-08 20:01:00 +02:00
ocornut
d946c6932b
InputText: fixed a crash toggling ReadOnly flag while active. ( #9354 )
2026-04-08 15:56:59 +02:00
ocornut
4d38508c6b
Tables: fixed an issue reporting ideal size to parent window/container when both scrollbars are visible but only one of ScrollX/ScrollY was explicitly requested. ( #9352 , #7651 )
...
Since ScrollX de-facto also enables ScrollY we can't gate accounting for ScrollbarSizes.x based on explicit ScrollY.
Amend a31aa683f
2026-04-08 15:07:11 +02:00
ocornut
c0e6580b62
Reword code in CalcWindowAutoFitSize() to match the order used in size_desired calculation.
...
Should be no-op. Toward (#9352 )
2026-04-08 14:31:11 +02:00
ocornut
6985925244
Clipper, Tables: Improved error reporting when misusing the clipper inside a table + made the assert a better recoverable error. ( #9350 )
...
Amend 20e040c8
2026-04-07 19:19:40 +02:00
ocornut
7cb0baeb77
imgui_freetype: add FreeType headers & compiled version number in the 'About Dear ImGui' user facing string.
2026-04-07 17:18:16 +02:00
ocornut
03a0b00a34
InputTextMultiline: fixed an issue processing deactivation logic when an active multi-line edit is clipped due to being out of view.
2026-04-03 16:25:57 +02:00
ocornut
4a61188322
Version 1.92.8 WIP
2026-04-03 16:15:46 +02:00
ocornut
dac07199cf
Version 1.92.7
2026-04-02 19:22:53 +02:00
ocornut
45866bea47
Tables: fixes not releasing ReorderColumn caused by 38f5e5a. Which could break clicking on header to sort. ( #9312 )
2026-04-02 18:59:23 +02:00
ocornut
65ebca8157
Fonts: fixed an issue introduced in 1.92.6 where style.FontBaseSize would be cleared during the first frame if no fonts was explicitely added before.
...
Amend 3aba95060e
2026-04-02 18:35:24 +02:00
ocornut
9e9fdc97bb
InputText: rename Edited->EditedThisFrame, add EditedBefore. ( #701 ) + Comments + About box clipboard blurb include a comment.
2026-04-02 15:48:49 +02:00
ocornut
fc5e421cb9
Tables: columns freeze doesn't enforce a particular order + rework changelog for clarity. ( #9312 )
2026-04-02 13:59:41 +02:00
ocornut
b7bdea3215
Tables: fixed FrozenColumns issue introduced by 505bc9a.
...
cc #9312
2026-04-01 21:35:55 +02:00
ocornut
bf10275aa7
Tables: allow reordering columns by dragging them in the context menu. ( #9312 )
2026-04-01 20:08:34 +02:00
ocornut
0867f6113a
Tables: reorder allowed check sweep through columns, checks _NoOrder barrier, and reworked to be easy to use from context menu. ( #9312 )
...
The sweep doesn't make a difference for reordering with headers as reordering is currently done 1 by 1. But menu ordering will change that.
2026-04-01 20:08:31 +02:00
ocornut
836278db6c
Tables: context menu now present columns in display order. ( #9312 )
2026-04-01 20:08:29 +02:00
ocornut
505bc9a312
Tables: clarify FrozenColumns order to be in order space not in visible space.
...
+ Removed LeftMostUnfrozenOrder + Angled Headers comments.
While not strictly part of #9312 , presenting a suitable reordering menu was made difficult by the old behavior.
2026-04-01 20:08:26 +02:00
ocornut
07acc8bc87
Tables: Angled Headers: angled section for column being reordered via the regular headers stay highlighted during reordering.
...
Easily possible thanks to 6603cde .
2026-04-01 20:05:34 +02:00
ocornut
6603cdef98
Tables: fixed dragging a header to reorder outside of visible bounds (due to horizontal scrolling) from losing active id.
2026-04-01 20:03:30 +02:00
ocornut
9df0d38d45
Tables: amend 2ac782f bad WIP merge broken reorder. ( #9312 )
2026-04-01 18:30:29 +02:00
ocornut
2ac782fbed
Revert "Tables: rework TableSetColumnDisplayOrder() to take src_order. ( #9312 )"
...
This reverts commit 7be8076e9b .
Not a good idea as it's easier to reason and persist column index.
+ clear ReorderColumnDstOrder properly in reinit.
2026-04-01 17:57:13 +02:00
ocornut
9fedea83f0
Tables: TableQueueSetColumnDisplayOrder() enforce handling ImGuiTableColumnFlags_NoReorder as advertised: can't reorder through them. ( #9312 )
...
This would never using interactive reordering as reordering from headers was done on a 1 by 1 basis which was already covered in the test.
Hard to tell what's a sensible design for this tbh. Expecting _NoOrder columns to be sequential and leading/trailing anyhow.
2026-04-01 16:03:32 +02:00
ocornut
ed4cffece7
Tables: store LeftMostUnfrozenOrder and amend TableQueueSetColumnDisplayOrder(). ( #9312 )
2026-04-01 16:02:41 +02:00
ocornut
7be8076e9b
Tables: rework TableSetColumnDisplayOrder() to take src_order. ( #9312 )
2026-04-01 16:02:36 +02:00
ocornut
587c4cb87b
Tables: rename locals in TableDrawDefaultContextMenu() to reduce confusion.
2026-04-01 15:25:59 +02:00
ocornut
aab17456a7
Tables: mark setting as dirty when forcing reordering.
...
Otherwise the manufactured case of reloading a session that previously had e.g. a slider to adjust freeze count, resetting to 1 on new session, would keep showing you reordering items until another thing triggers marking dirty.
2026-04-01 15:25:57 +02:00
ocornut
b62cf3894b
Inputs: fixed an issue using SetKeyOwner() with ImGuiInputFlags_LockThisFrame or ImGuiInputFlags_LockUntilRelease on ImGuiMod values. ( #9323 )
2026-03-25 22:00:14 +01:00
ocornut
e9eb04ea95
Internals: TempInputText: added callback/user_data parameters and made end of signature match InputText(). ( #2718 )
2026-03-25 17:46:04 +01:00
ocornut
ed2e5dd0f0
Examples+WebGPU: added support for WGVK in cmakefiles. ( #9316 , #9246 , #9257 )
2026-03-25 16:16:15 +01:00
ocornut
59183cf782
Backends, Examples: WebGPU: added support for WGVK. Remaining amends. ( #9316 , #9246 , #9257 )
2026-03-25 15:31:39 +01:00
ocornut
0b82487fed
TempInputText: amends. Rename ImGuiInputTextFlags_MergedItem to ImGuiInputTextFlags_TempInput for explicitness. ( #2718 )
2026-03-25 14:29:54 +01:00
ocornut
51f590a2a8
Backends: GLFW: mouse cursor is properly restored if changed by user app/code while using glfwSetInputMode(..., GLFW_CURSOR_DISABLED) or ImGuiConfigFlags_NoMouseCursorChange. ( #9322 )
...
Amend 9a4fd69f6
2026-03-25 14:17:29 +01:00
ocornut
6c754ed2cb
TempInputText, InputText: enforce making active via ImGuiInputTextFlags_MergedItem. Restore cursor as Rect is provided + comments. ( #2718 , #6690 )
2026-03-25 11:36:40 +01:00
ocornut
79411a0405
Backends, Examples: WebGPU: fixed warnings + scale initial surface height for native.
2026-03-23 16:21:50 +01:00
ocornut
6b1776a7d2
Tables: context menu can be open using navigation Shift+F10 etc. ( #8803 , #9270 )
2026-03-23 15:37:56 +01:00
ocornut
38f5e5a0b8
Tables: rework column reordering code. ( #9312 )
...
- Move more logic into TableQueueSetColumnDisplayOrder() so that it may be called from different locations.
- Use to checking if both columns are on same size of the frozen barrier slightly changed to avoid reordering hidden column (with caveat of ill-defined design for what's "right").
2026-03-23 15:14:58 +01:00
ocornut
697b6886e3
Docs: update FAQ about label/ID system. ( #9318 )
2026-03-23 14:13:36 +01:00
ocornut
8314fc3e5a
Menus: shallow tweaks.
2026-03-20 20:47:07 +01:00
ocornut
50b488765f
ButtonBehavior, Selectable: made low-level ImGuiButtonFlags_PressedOnRelease not explicitely avoid taking current active id. ImGuiButtonFlags_NoHoldingActiveId may be used for that.
...
Ditto for ImGuiSelectableFlags_SelectOnRelease, ImGuiSelectableFlags_NoHoldingActiveId. All internals.
Toward #9312
2026-03-20 20:15:17 +01:00
ocornut
4af77622d9
Scrollbar: Fixed an issue which could lead initial click to move the current scroll by a pixel.
2026-03-20 16:14:17 +01:00
ocornut
2315b9f33d
InputTextMultiline: fixed an issue where edit buffer wouldn't be reapplied to back buffer on the IsItemDeactivatedAfterEdit() frame. ( #9308 , #8915 , #8273 )
2026-03-20 15:48:14 +01:00
ocornut
04dfcd838b
InputTextMultiline: fixed losing revert value when activating scrollbar. (toward #9308 )
2026-03-20 15:48:14 +01:00
ocornut
2d957152e4
InputTextMultiline: avoid going through reactivation path and InputTextDeactivateHook() when activating scrollbar. ( #9308 )
2026-03-20 15:37:56 +01:00
ocornut
325563a982
InputTextMultiline: InputTextMultiline: fixed an issue calculating lines count when active.
...
Amend 4252275
2026-03-20 15:17:07 +01:00
ocornut
3a26b640b2
Drag and Drop: make SetDragDropPayload() memcpy size match our buffer.
2026-03-20 11:50:05 +01:00
ocornut
386ce49c58
Backends: DirectX9: fixed build typo in 0500e54.
2026-03-19 18:17:35 +01:00
ocornut
b2c3e37d55
Multi-Select: fix/amend 9700846. . ( #9307 , #1861 )
2026-03-19 16:58:14 +01:00
ocornut
9700846bb3
MultiSelect: added ImGuiMultiSelectFlags_SelectOnClickAlways mode. Prevents Drag and Drop of multiple items but allows BoxSelect to always reselect even when clicking inside a selecttion. ( #9307 , #1861 )
2026-03-19 16:39:50 +01:00
ocornut
0b4967992a
MultiSelect: Box-Select: removed now seemingly unnecessary 'selected==false' check, which will also prevent implementation of ImGuiMultiSelectFlags_SelectOnClickAlways. ( #9307 )
...
We enter into the block either though navigation, and then the Mouse check fails, either through mouse, and then Selected==false is tested above.
Amend f904a6646 .
2026-03-19 16:29:03 +01:00
ocornut
20d8bcb600
(Breaking) MultiSelect: renamed ImGuiMultiSelectFlags_SelectOnClick to ImGuiMultiSelectFlags_SelectOnAuto. ( #1861 , #6518 )
2026-03-19 16:04:04 +01:00
ocornut
358d3912c9
Backends: SDLRenderer2/3: fixed build, typo in 0500e54.
2026-03-19 12:34:11 +01:00
ocornut
4d1ba782ee
Revert changing default value of ImTextureID_Invalid to -1. Back to 0. ( #9295 , #9310 , #9293 , #8745 , #8465 , #7090 )
...
Reverts 0db591935f
2026-03-19 11:54:42 +01:00
ocornut
0500e546b5
Backends: DX9, Metal, SDLRenderer2/3: fixed more assumptions that ImTextureID_Invald == 0 + Amend Changelogs. ( #9310 , #9293 )
2026-03-19 11:47:01 +01:00
ocornut
b724f940d6
InputText: fixed selection highlight Y1 offset being very slightly off (since 1.92.3). ( #9311 )
...
Fixes 1e52e7b90c
2026-03-19 11:20:00 +01:00
ocornut
4252275c64
InputTextMultiline: fixed an issue calculating lines count when inactive, no word-wrap, and ending with a \n.
...
Amend 1e52e7b90c (#3237 , #952 , #1062 , #7363 )
2026-03-18 20:12:14 +01:00
ocornut
6abe65aac6
InputText: amend fix to avoid PVS-Studio sort of rightful false positive. Amend f4c2f50. ( #9174 )
...
Checking for state != NULL in the two othr functions where state is already deferenced was misleading.
imgui_widgets.cpp:4496:1: error: V595 The 'state' pointer was utilized before it was verified against nullptr. Check lines: 4496, 4500.
imgui_widgets.cpp:5273:1: error: V595 The 'state' pointer was utilized before it was verified against nullptr. Check lines: 5273, 5289.
2026-03-18 18:57:02 +01:00
ocornut
f4c2f50896
InputText: fixed a crash when handling ImGuiInputTextFlags_CallbackResize. ( #9174 )
...
Fix/amend cb3b7ff .
2026-03-18 18:37:04 +01:00
ocornut
27cacb0e30
Fixed GetForegroundDrawList()/GetBackgroundDrawList() per-viewport buffers not being collected/ ( #9303 )
2026-03-18 16:48:18 +01:00
ocornut
709be8c495
Discard/GC of ImDrawList buffers for unused windows favor restoring them to ~Size*1.05 instead of Capacity when awakening again. ( #9303 )
...
+ made "GC now" button process even active windows.
2026-03-18 15:34:12 +01:00
ocornut
994ca12b29
Fixed warning. (Amend 1677236)
2026-03-16 18:51:38 +01:00
ocornut
6464276b62
InputText: cleanup/rework old comments + remove unnecessary indent in callback and main block setting apply_new_text.
...
Amend 00f12b9a0 , 3349296370 etc.
2026-03-16 18:42:28 +01:00
ocornut
16772365e2
Moved ImGuiButtonFlags_AllowOverlap from imgui_internal.h to imgui.h + standardize comments.
2026-03-16 18:42:22 +01:00
ocornut
8957b3df03
InputScalar: minor rework to facilitate incoming change. Intended to have no side-effects.
2026-03-16 11:41:01 +01:00
ocornut
fd752d8357
InputText: Fixed a glitch when using ImGuiInputTextFlags_ElideLeft where the local x offset would be incorrect during the deactivation frame. ( #9298 )
2026-03-13 16:32:39 +01:00