Imgui

Latest version: v2.0.0

Safety actively analyzes 619494 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 7

1.89.5

-----------------------------------------------------------------------

Other changes:

- InputText: Reworked prev/next-word behavior to more closely match Visual Studio
text editor. Include '.' as a delimiter and alter varying subtle behavior with how
blanks and separators are treated when skipping words. (6067) [ajweeks]
- InputText: Fixed a tricky edge case, ensuring value is always written back on the
frame where IsItemDeactivated() returns true, in order to allow usage without user
retaining underlying data. While we don't really want to encourage user not retaining
underlying data, in the absence of a "late commit" behavior/flag we understand it may
be desirable to take advantage of this trick. (4714)
- Drag, Sliders: Fixed parsing of text input when '+' or '' format flags are used
in the format string. (6259) [idbrii]
- Nav: Made Ctrl+Tab/Ctrl+Shift+Tab windowing register ownership to held modifier so
it doesn't interfere with other code when remapping those actions. (4828, 3255, 5641)
- Nav: Made PageUp/PageDown/Home/End navigation also scroll parent windows when
necessary to make the target location fully visible (same as e.g. arrow keys).
- ColorEdit: Fixed shading of S/V triangle in Hue Wheel mode. (5200, 6254) [jamesthomasgriffin]
- TabBar: Tab-bars with ImGuiTabBarFlags_FittingPolicyScroll can be scrolled with
horizontal mouse-wheel (or Shift + WheelY). (2702)
- Rendering: Using adaptive tessellation for RadioButton, ColorEdit preview circles,
Windows Close and Collapse Buttons.
- ButtonBehavior: Fixed an edge case where changing widget type/behavior while active
and using same id could lead to an assert. (6304)
- Misc: Fixed ImVec2 operator[] violating aliasing rules causing issue with Intel C++
compiler. (6272) [BayesBug]
- IO: Input queue trickling adjustment for touch screens. (2702, 4921)
This fixes single-tapping to move simulated mouse and immediately click on a widget
that is using the ImGuiButtonFlags_AllowItemOverlap policy.
- This only works if the backend can distinguish TouchScreen vs Mouse.
See 'Demo->Tools->Metrics->Inputs->Mouse Source' to verify.
- Fixed tapping on BeginTabItem() on a touch-screen. (2702)
- Fixed tapping on CollapsingHeader() with a close button on a touch-screen.
- Fixed tapping on TreeNode() using ImGuiTreeNodeFlags_AllowItemOverlap on a touch-screen.
- Fixed tapping on Selectable() using ImGuiSelectableFlags_AllowItemOverlap on a touch-screen.
- Fixed tapping on TableHeader() on a touch-screen.
- IO: Added io.AddMouseSourceEvent() and ImGuiMouseSource enum. This is to allow backend to
specify actual event source between Mouse/TouchScreen/Pen. (2702, 2334, 2372, 3453, 5693)
- IO: Fixed support for calling io.AddXXXX functions from inactive context (wrongly
advertised as supported in 1.89.4). (6199, 6256, 5856) [cfillion]
- Backends: OpenGL3: Fixed GL loader crash when GL_VERSION returns NULL. (6154, 4445, 3530)
- Backends: OpenGL3: Properly restoring "no shader program bound" if it was the case prior to
running the rendering function. (6267, 6220, 6224) [BrunoLevy]
- Backends: Win32: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. (2334, 2702)
- Backends: SDL2/SDL3: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen.
This is relying on SDL passing SDL_TOUCH_MOUSEID in the event's 'which' field. (2334, 2702)
- Backends: SDL2/SDL3: Avoid calling SDL_StartTextInput()/SDL_StopTextInput() as they actually
block text input input and don't only pertain to IME. It's unclear exactly what their relation
is to other IME function such as SDL_SetTextInputRect(). (6306, 6071, 1953)
- Backends: GLFW: Added support on Win32 only for io.AddMouseSourceEvent() to discriminate
Mouse/TouchScreen/Pen. (2334, 2702)
- Backends: GLFW: Fixed key modifiers handling on secondary viewports. (6248, 6034) [aiekick]
- Backends: Android: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen.
(6315) [PathogenDavid]
- Backends: OSX: Added support for io.AddMouseSourceEvent() to discriminate Mouse/Pen.
(6314) [PathogenDavid]
- Backends: WebGPU: Align buffers. Use WGSL shaders instead of SPIR-V. Add gamma uniform. (6188) [eliemichel]
- Backends: WebGPU: Reorganized to store data in io.BackendRendererUserData like other backends.
- Examples: Vulkan: Fixed validation errors with newer VulkanSDK by explicitly querying and enabling
"VK_KHR_get_physical_device_properties2", "VK_KHR_portability_enumeration", and
VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR. (6109, 6172, 6101)
- Examples: Windows: Added 'misc/debuggers/imgui.natstepfilter' file to all Visual Studio projects,
now that VS 2022 17.6 Preview 2 support adding Debug Step Filter spec files into projects.
- Examples: SDL3: Updated for latest WIP SDL3 branch. (6243)
- TestSuite: Added variety of new regression tests and improved/amended existing ones
in imgui_test_engine/ repo. [PathogenDavid, ocornut]


-----------------------------------------------------------------------

1.89.4

-----------------------------------------------------------------------

Breaking Changes:

- Renamed PushAllowKeyboardFocus()/PopAllowKeyboardFocus() to PushTabStop()/PopTabStop().
Kept inline redirection functions (will obsolete).
- Moved the optional "courtesy maths operators" implementation from imgui_internal.h in imgui.h.
Even though we encourage using your own maths types and operators by setting up IM_VEC2_CLASS_EXTRA,
it has been frequently requested by people to use our own. We had an opt-in define which was
previously fulfilled by imgui_internal.h. It is now fulfilled by imgui.h. (6164, 6137, 5966, 2832)
OK: define IMGUI_DEFINE_MATH_OPERATORS / include "imgui.h" / include "imgui_internal.h"
Error: include "imgui.h" / define IMGUI_DEFINE_MATH_OPERATORS / include "imgui_internal.h"
Added a dedicated compile-time check message to help diagnose this.
- Tooltips: Added 'bool' return value to BeginTooltip() for API consistency.
Please only submit contents and call EndTooltip() if BeginTooltip() returns true.
In reality the function will _currently_ always return true, but further changes down the
line may change this, best to clarify API sooner. Updated demo code accordingly.
- Commented out redirecting enums/functions names that were marked obsolete two years ago:
- ImGuiSliderFlags_ClampOnInput -> use ImGuiSliderFlags_AlwaysClamp
- ImGuiInputTextFlags_AlwaysInsertMode -> use ImGuiInputTextFlags_AlwaysOverwrite
- ImDrawList::AddBezierCurve() -> use ImDrawList::AddBezierCubic()
- ImDrawList::PathBezierCurveTo() -> use ImDrawList::PathBezierCubicCurveTo()

Other changes:

- Nav: Tabbing now cycles through all items when ImGuiConfigFlags_NavEnableKeyboard is set.
(3092, 5759, 787)
While this was generally desired and requested by many, note that its addition means
that some types of UI may become more fastidious to use TAB key with, if the navigation
cursor cycles through too many items. You can mark items items as not tab-spottable:
- Public API: PushTabStop(false) / PopTabStop()
- Internal: PushItemFlag(ImGuiItemFlags_NoTabStop, true);
- Internal: Directly pass ImGuiItemFlags_NoTabStop to ItemAdd() for custom widgets.
- Nav: Tabbing/Shift-Tabbing can more reliably be used to step out of an item that is not
tab-stoppable. (3092, 5759, 787)
- Nav: Made Enter key submit the same type of Activation event as Space key,
allowing to press buttons with Enter. (5606)
(Enter emulates a "prefer text input" activation vs.
Space emulates a "prefer tweak" activation which is to closer to gamepad controls).
- Nav: Fixed an issue with Gamepad navigation when the movement lead to a scroll and
frame time > repeat rate. Triggering a new move request on the same frame as a move
result lead to an incorrect calculation and loss of navigation id. (6171)
- Nav: Fixed SetItemDefaultFocus() from not scrolling when item is partially visible.
(2814, 2812) [DomGries]
- Tables: Fixed an issue where user's Y cursor movement within a hidden column would
have side-effects.
- IO: Lifted constraint to call io.AddEventXXX functions from current context. (4921, 5856, 6199)
- InputText: Fixed not being able to use CTRL+Tab while an InputText() using Tab
for completion or text data is active (regression from 1.89).
- Drag and Drop: Fixed handling of overlapping targets when smaller one is submitted
before and can accept the same data type. (6183).
- Drag and Drop: Clear drag and drop state as soon as delivery is accepted in order to
avoid interferences. (5817, 6183) [DimaKoltun]
- Debug Tools: Added io.ConfigDebugBeginReturnValueOnce / io.ConfigDebugBeginReturnValueLoop
options to simulate Begin/BeginChild returning false to facilitate debugging user behavior.
- Demo: Updated to test return value of BeginTooltip().
- Backends: OpenGL3: Fixed restoration of a potentially deleted OpenGL program. If an active
program was pending deletion, attempting to restore it would error. (6220, 6224) [Cyphall]
- Backends: Win32: Use WM_NCMOUSEMOVE / WM_NCMOUSELEAVE to track mouse positions over
non-client area (e.g. OS decorations) when app is not focused. (6045, 6162)
- Backends: SDL2, SDL3: Accept SDL_GetPerformanceCounter() not returning a monotonically
increasing value. (6189, 6114, 3644) [adamkewley]
- Backends: GLFW: Avoid using glfwGetError() and glfwGetGamepadState() on Emscripten, which
recently updated its GLFW emulation layer to GLFW 3.3 without supporting those. (6240)
- Examples: Android: Fixed example build for Gradle 8. (6229, 6227) [duddel]
- Examples: Updated all examples application to enable ImGuiConfigFlags_NavEnableKeyboard
and ImGuiConfigFlags_NavEnableGamepad by default. (787)
- Internals: Misc tweaks to facilitate applying an explicit-context patch. (5856) [Dragnalith]


-----------------------------------------------------------------------

1.89.3

-----------------------------------------------------------------------

Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.3

Breaking Changes:

- Backends+Examples: SDL2: renamed all unnumbered references to "sdl" to "sdl2".
This is in prevision for the future release of SDL3 and its associated backend. (6146)
- imgui_impl_sdl.cpp -> imgui_impl_sdl2.cpp
- imgui_impl_sdl.h -> imgui_impl_sdl2.h
- example_sdl_xxxx/ -> example_sdl2_xxxx/ (folders and projects)

Other changes:

- SeparatorText(): Added SeparatorText() widget. (1643) [phed, ocornut]
- Added to style: float SeparatorTextBorderSize.
- Added to style: ImVec2 SeparatorTextAlign, SeparatorTextPadding.
- Tables: Raised max Columns count from 64 to 512. (6094, 5305, 4876, 3572)
The previous limit was due to using 64-bit integers but we moved to bits-array
and tweaked the system enough to ensure no performance loss.
- Tables: Solved an ID conflict issue with multiple-instances of a same table,
due to how unique table instance id was generated. (6140) [ocornut, rodrigorc]
- Inputs, Scrolling: Made horizontal scroll wheel and horizontal scroll direction consistent
across backends/os. (4019, 6096, 1463) [PathogenDavid, ocornut, rokups]
- Clarified that 'wheel_y > 0.0f' scrolls Up, 'wheel_y > 0.0f' scrolls Down.
Clarified that 'wheel_x > 0.0f' scrolls Left, 'wheel_x > 0.0f' scrolls Right.
- Backends: Fixed horizontal scroll direction for Win32 and SDL backends. (4019)
- Shift+WheelY support on non-OSX machines was already correct. (2424, 1463)
(whereas on OSX machines Shift+WheelY turns into WheelX at the OS level).
- If you use a custom backend, you should verify horizontal wheel direction.
- Axises are flipped by OSX for mouse & touch-pad when 'Natural Scrolling' is on.
- Axises are flipped by Windows for touch-pad when 'Settings->Touchpad->Down motion scrolls up' is on.
- You can use 'Demo->Tools->Debug Log->IO" to visualize values submitted to Dear ImGui.
- Known issues remaining with Emscripten:
- The magnitude of wheeling values on Emscripten was improved but isn't perfect. (6096)
- When running the Emscripten app on a Mac with a mouse, SHIFT+WheelY doesn't turn into WheelX.
This is because we don't know that we are running on Mac and apply our own Shift+swapping
on top of OSX' own swapping, so wheel axises are swapped twice. Emscripten apps may need
to find a way to detect this and set io.ConfigMacOSXBehaviors manually (if you know a way
let us know!), or offer the "OSX-style behavior" option to their user.
- Window: Avoid rendering shapes for hidden resize grips.
- Text: Fixed layouting of wrapped-text block skipping successive empty lines,
regression from the fix in 1.89.2. (5720, 5919)
- Text: Fixed clipping of single-character "..." ellipsis (U+2026 or U+0085) when font
is scaled. Scaling wasn't taken into account, leading to ellipsis character straying
slightly out of its expected boundaries. (2775)
- Text: Tweaked rendering of three-dots "..." ellipsis variant. (2775, 4269)
- InputText: Added support for Ctrl+Delete to delete up to end-of-word. (6067) [ajweeks]
(Not adding Super+Delete to delete to up to end-of-line on OSX, as OSX doesn't have it)
- InputText: On OSX, inhibit usage of Alt key to toggle menu when active (used for work skip).
- Menus: Fixed layout of MenuItem()/BeginMenu() when label contains a '\n'. (6116) [imkcy9]
- ColorEdit, ColorPicker: Fixed hue/saturation preservation logic from interfering with
the displayed value (but not stored value) of others widgets instances. (6155)
- PlotHistogram, PlotLines: Passing negative sizes honor alignment like other widgets.
- Combo: Allow SetNextWindowSize() to alter combo popup size. (6130)
- Fonts: Assert that in each GlyphRanges[] pairs first is <= second.
- ImDrawList: Added missing early-out in AddPolyline() and AddConvexPolyFilled() when
color alpha is zero.
- Misc: Most text functions treat "%s" as a shortcut to no-formatting. (3466)
- Misc: Tolerate zero delta-time under Emscripten as backends are imprecise in their
values for io.DeltaTime, and browser features such as "privacy.resistFingerprinting=true"
can exacerbate that. (6114, 3644)
- Backends: OSX: Fixed scroll/wheel scaling for devices emitting events with
hasPreciseScrollingDeltas==false (e.g. non-Apple mices).
- Backends: Win32: flipping WM_MOUSEHWHEEL horizontal value to match other backends and
offer consistent horizontal scrolling direction. (4019)
- Backends: SDL2: flipping SDL_MOUSEWHEEL horizontal value to match other backends and
offer consistent horizontal scrolling direction. (4019)
- Backends: SDL2: Removed SDL_MOUSEWHEEL value clamping. (4019, 6096, 6081)
- Backends: SDL2: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data
for smooth scrolling as reported by SDL. (4019, 6096)
- Backends: SDL2: Avoid calling SDL_SetCursor() when cursor has not changed, as the function
is surprisingly costly on Mac with latest SDL (already fixed in SDL latest trunk). (6113)
- Backends: SDL2: Implement IME handler to call SDL_SetTextInputRect()/SDL_StartTextInput().
It will only works with SDL 2.0.18+ if your code calls 'SDL_SetHint(SDL_HINT_IME_SHOW_UI, "1")'
prior to calling SDL_CreateWindow(). Updated all examples accordingly. (6071, 1953)
- Backends: SDL3: Added experimental imgui_impl_sdl3.cpp backend. (6146) [dovker, ocornut]
SDL 3.0.0 has not yet been released, so it is possible that its specs/api will change before
release. This backend is provided as a convenience for early adopters etc. We don't recommend
switching to SDL3 before it is released.
- Backends: GLFW: Registering custom low-level mouse wheel handler to get more accurate
scrolling impulses on Emscripten. (4019, 6096) [ocornut, wolfpld, tolopolarity]
- Backends: GLFW: Added ImGui_ImplGlfw_SetCallbacksChainForAllWindows() to instruct backend
to chain callbacks even for secondary viewports/windows. User callbacks may need to test
the 'window' parameter. (6142)
- Backends: OpenGL3: Fixed GL loader compatibility with 2.x profiles. (6154, 4445, 3530) [grauw]
- Backends: WebGPU: Fixed building for latest WebGPU specs (remove implicit layout generation).
(6117, 4116, 3632) [tonygrue, bfierz]
- Examples: refactored SDL2+GL and GLFW+GL examples to compile with Emscripten.
(2492, 2494, 3699, 3705) [ocornut, nicolasnoble]
The dedicated example_emscripten_opengl3/ has been removed.
- Examples: Added SDL3+GL experimental example. (6146)
- Examples: Win32: Fixed examples using RegisterClassW() since 1.89 to also call
DefWindowProcW() instead of DefWindowProc() so that title text are correctly converted
when application is compiled without /DUNICODE. (5725, 5961, 5975) [markreidvfx]
- Examples: SDL2+SDL_Renderer: Added call to SDL_RenderSetScale() to fix display on a
Retina display (albeit lower-res as our other unmodified examples). (6121, 6065, 5931).


-----------------------------------------------------------------------

1.89.2

-----------------------------------------------------------------------

Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.2

All changes:

- Tables, Nav, Scrolling: fixed scrolling functions and focus tracking with frozen rows and
frozen columns. Windows now have a better understanding of outer/inner decoration sizes,
which should later lead us toward more flexible uses of menu/status bars. (5143, 3692)
- Tables, Nav: frozen columns are not part of menu layer and can be crossed over. (5143, 3692)
- Tables, Columns: fixed cases where empty columns may lead to empty ImDrawCmd. (4857, 5937)
- Tables: fixed matching width of synchronized tables (multiple tables with same id) when only
some instances have a vertical scrollbar and not all. (5920)
- Fixed cases where CTRL+Tab or Modal can occasionally lead to the creation of ImDrawCmd with
zero triangles, which would makes the render loop of some backends assert (e.g. Metal with
debugging, Allegro). (4857, 5937)
- Inputs, IO: reworked ImGuiMod_Shortcut to redirect to Ctrl/Super at runtime instead of
compile-time, being consistent with our support for io.ConfigMacOSXBehaviors and making it
easier for bindings generators to process that value. (5923, 456)
- Inputs, Scrolling: better selection of scrolling window when hovering nested windows
and when backend/OS is emitting dual-axis wheeling inputs (typically touch pads on macOS).
We now select a primary axis based on recent events, and select a target window based on it.
We expect this behavior to be further improved/tweaked. (3795, 4559) [ocornut, folays]
- InputText: fixed cursor navigation when pressing Up Arrow on the last character of a
multiline buffer which doesn't end with a carriage return. (6000)
- Text: fixed layouting of wrapped-text block when the last source line is above the
clipping region. Regression added in 1.89. (5720, 5919)
- Misc: added GetItemID() in public API. It is not often expected that you would use this,
but it is useful for Shortcut() and upcoming owner-aware input functions which wants to
be implemented with public API.
- Fonts: imgui_freetype: fixed a packing issue which in some occurrences would prevent large
amount of glyphs from being packed correctly. (5788, 5829)
- Fonts: added a 'void* UserData' field in ImFontAtlas, as a convenience for use by
applications using multiple font atlases.
- Demo: simplified "Inputs" section, moved contents to Metrics->Inputs.
- Debug Tools: Metrics: added "Inputs" section, moved from Demo for consistency.
- Misc: fixed parameters to IMGUI_DEBUG_LOG() not being dead-stripped when building
with IMGUI_DISABLE_DEBUG_TOOLS is used. (5901) [Teselka]
- Misc: fixed compile-time detection of SSE features on MSVC 32-bits builds. (5943) [TheMostDiligent]
- Examples: DirectX10, DirectX11: try WARP software driver if hardware driver is not available. (5924, 5562)
- Backends: GLFW: Fixed mods state on Linux when using Alt-GR text input (e.g. German keyboard layout), which
could lead to broken text input. Revert a 2022/01/17 change were we resumed using mods provided by GLFW,
turns out they are faulty in this specific situation. (6034)
- Backends: Allegro5: restoring using al_draw_indexed_prim() when Allegro version is >= 5.2.5. (5937) [Espyo]
- Backends: Vulkan: Fixed sampler passed to ImGui_ImplVulkan_AddTexture() not being honored as we were using
an immutable sampler. (5502, 6001, 914) [martin-ejdestig, rytisss]


-----------------------------------------------------------------------

1.89.1

-----------------------------------------------------------------------

Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.1

Other changes:

- Scrolling, Focus: fixed SetKeyboardFocusHere()/SetItemDefaultFocus() during a window-appearing
frame (and associated lower-level functions e.g. ScrollToRectEx()) from not centering item. (5902)
- Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code
from accessing keys. (5888, 4921, 456)
- Inputs: fixed moving a window or drag and dropping from capturing mods. (5888, 4921, 456)
- Layout: fixed End()/EndChild() incorrectly asserting if users manipulates cursor position
inside a collapsed/culled window and IMGUI_DISABLE_OBSOLETE_FUNCTIONS is enabled. (5548, 5911)
- Combo: fixed selected item (marked with SetItemDefaultFocus()) from not being centered when
the combo window initially appears. (5902).
- ColorEdit: fixed label overlapping when using style.ColorButtonPosition == ImGuiDir_Left to
move the color button on the left side (regression introduced in 1.88 WIP 2022/02/28). (5912)
- Drag and Drop: fixed GetDragDropPayload() returning a non-NULL value if a drag source is
active but a payload hasn't been submitted yet. This is convenient to detect new payload
from within a drag source handler. (5910, 143)
- Backends: GLFW: cancel out errors emitted by glfwGetKeyName() when a name is missing. (5908)
- Backends: WebGPU: fixed validation error with default depth buffer settings. (5869, 5914) [kdchambers]


-----------------------------------------------------------------------

1.89

-----------------------------------------------------------------------

Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89

Breaking changes:

- Layout: Obsoleted using SetCursorPos()/SetCursorScreenPos() to extend parent window/cell boundaries. (5548)
This relates to when moving the cursor position beyond current boundaries WITHOUT submitting an item.
- Previously this would make the window content size ~200x200:
Begin(...) + SetCursorScreenPos(GetCursorScreenPos() + ImVec2(200,200)) + End();
- Instead, please submit an item:
Begin(...) + SetCursorScreenPos(GetCursorScreenPos() + ImVec2(200,200)) + Dummy(ImVec2(0,0)) + End();
- Alternative:
Begin(...) + Dummy(ImVec2(200,200)) + End();
Content size is now only extended when submitting an item.
With 'define IMGUI_DISABLE_OBSOLETE_FUNCTIONS' this will now be detected and assert.
Without 'define IMGUI_DISABLE_OBSOLETE_FUNCTIONS' this will silently be fixed until we obsolete it.
(This incorrect pattern has been mentioned or suggested in: 4510, 3355, 1760, 1490, 4152, 150,
threads have been amended to refer to this issue).
- Inputs: ImGuiKey is now a typed enum, allowing ImGuiKey_XXX symbols to be named in debuggers. (4921)
This will require uses of legacy backend-dependent indices to be casted, e.g.
- with imgui_impl_glfw: IsKeyPressed(GLFW_KEY_A) -> IsKeyPressed((ImGuiKey)GLFW_KEY_A);
- with imgui_impl_win32: IsKeyPressed('A') -> IsKeyPressed((ImGuiKey)'A')
- etc. however if you are upgrading code you might as well use the backend-agnostic IsKeyPressed(ImGuiKey_A) now.
- Renamed and merged keyboard modifiers key enums and flags into a same set: (4921, 456)
- ImGuiKey_ModCtrl and ImGuiModFlags_Ctrl -> ImGuiMod_Ctrl
- ImGuiKey_ModShift and ImGuiModFlags_Shift -> ImGuiMod_Shift
- ImGuiKey_ModAlt and ImGuiModFlags_Alt -> ImGuiMod_Alt
- ImGuiKey_ModSuper and ImGuiModFlags_Super -> ImGuiMod_Super
Kept inline redirection enums (will obsolete).
This change simplifies a few things, reduces confusion, and will facilitate upcoming
shortcut/input ownership apis.
- The ImGuiKey_ModXXX were introduced in 1.87 and mostly used by backends.
- The ImGuiModFlags_XXX have been exposed in imgui.h but not really used by any public api,
only by third-party extensions. They were however subject to a recent rename
(ImGuiKeyModFlags_XXX -> ImGuiModFlags_XXX) and we are exceptionally commenting out
the older ImGuiKeyModFlags_XXX names ahead of obsolescence schedule to reduce confusion
and because they were not meant to be used anyway.
- Removed io.NavInputs[] and ImGuiNavInput enum that were used to feed gamepad inputs.
Basically 1.87 already obsoleted them from the backend's point of view, but internally
our navigation code still used this array and enum, so they were still present.
Not anymore! (4921, 4858, 787, 1599, 323)
Transition guide:
- Official backends from 1.87+ -> no issue.
- Official backends from 1.60 to 1.86 -> will build and convert gamepad inputs, unless IMGUI_DISABLE_OBSOLETE_KEYIO is defined. Need updating!
- Custom backends not writing to io.NavInputs[] -> no issue.
- Custom backends writing to io.NavInputs[] -> will build and convert gamepad inputs, unless IMGUI_DISABLE_OBSOLETE_KEYIO is defined. Need fixing!
- TL;DR: Backends should call io.AddKeyEvent()/io.AddKeyAnalogEvent() with ImGuiKey_GamepadXXX values instead of filling io.NavInput[].
The ImGuiNavInput enum was essentially 1.60's attempt to combine keyboard and gamepad inputs with named
semantic, but the additional indirection and copy added complexity and got in the way of other
incoming work. User's code (other than backends) should not be affected, unless you have custom
widgets intercepting navigation events via the named enums (in which case you can upgrade your code).
- DragInt()/SliderInt(): Removed runtime patching of invalid "%f"/"%.0f" types of format strings.
This was obsoleted in 1.61 (May 2018). See 1.61 changelog for details.
- Changed signature of ImageButton() function: (5533, 4471, 2464, 1390)
- Added 'const char* str_id' parameter + removed 'int frame_padding = -1' parameter.
- Old signature: bool ImageButton(ImTextureID tex_id, ImVec2 size, ImVec2 uv0 = ImVec2(0,0), ImVec2 uv1 = ImVec2(1,1), int frame_padding = -1, ImVec4 bg_col = ImVec4(0,0,0,0), ImVec4 tint_col = ImVec4(1,1,1,1));
- used the ImTextureID value to create an ID. This was inconsistent with other functions, led to ID conflicts, and caused problems with engines using transient ImTextureID values.
- had a FramePadding override which was inconsistent with other functions and made the already-long signature even longer.
- New signature: bool ImageButton(const char* str_id, ImTextureID tex_id, ImVec2 size, ImVec2 uv0 = ImVec2(0,0), ImVec2 uv1 = ImVec2(1,1), ImVec4 bg_col = ImVec4(0,0,0,0), ImVec4 tint_col = ImVec4(1,1,1,1));
- requires an explicit identifier. You may still use e.g. PushID() calls and then pass an empty identifier.
- always uses style.FramePadding for padding, to be consistent with other buttons. You may use PushStyleVar() to alter this.
- As always we are keeping a redirection function available (will obsolete later).
- Removed the bizarre legacy default argument for 'TreePush(const void* ptr = NULL)'. (1057)
Must always pass a pointer value explicitly, NULL/nullptr is ok but require cast, e.g. TreePush((void*)nullptr);
If you used TreePush() replace with TreePush((void*)NULL);
- Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (255)
They only made sense before we could use IMGUI_USER_CONFIG.

Other Changes:

- Popups & Modals: fixed nested Begin() inside a popup being erroneously input-inhibited.
While it is unusual, you can nest a Begin() inside a popup or modal, it is occasionally
useful to achieve certain things (e.g. to implement suggestion popups 718, 4461).
- Inputs: Standard widgets now claim for key/button ownership and test for them.
- Fixes scenario where e.g. a Popup with a Selectable() reacting on mouse down
(e.g. double click) closes, and behind it is another window with an item reacting
on mouse up. Previously this would lead to both items reacting, now the item in the
window behind won't react on the mouse up since the mouse button ownership has already
been claimed earlier.
- Internals: There are MANY more aspects to this changes. Added experimental/internal APIs
to allow handling input/shorting routing and key ownership. Things will be moved into
public APIs over time. For now this release is a way to test the solidity of underlying
systems while letting early adopters adopters toy with internals.
(456, 2637, 2620, 2891, 3370, 3724, 4828, 5108, 5242, 5641)
- Scrolling: Tweak mouse-wheel locked window timer so it is shorter but also gets reset
whenever scrolling again. Modulate for small (sub-pixel) amounts. (2604)
- Scrolling: Mitigated issue where multi-axis mouse-wheel inputs (usually from touch pad
events) are incorrectly locking scrolling in a parent window. (4559, 3795, 2604)
- Scrolling: Exposed SetNextWindowScroll() in public API. Useful to remove a scrolling
delay in some situations where e.g. windows need to be synched. (1526)
- InputText: added experimental io.ConfigInputTextEnterKeepActive feature to make pressing
Enter keep the input active and select all text.
- InputText: numerical fields automatically accept full-width characters (U+FF01..U+FF5E)
by converting them to half-width (U+0021..U+007E).
- InputText: added ImGuiInputTextFlags_EscapeClearsAll flag: first press on Escape clears
text if any, second press deactivate the InputText(). (5688, 2620)
- InputText: added support for shift+click style selection. (5619) [procedural]
- InputText: clarified that callbacks cannot modify buffer when using the ReadOnly flag.
- InputText: fixed minor one-frame selection glitch when reverting with Escape.
- ColorEdit3: fixed id collision leading to an assertion. (5707)
- IsItemHovered: Added ImGuiHoveredFlags_DelayNormal and ImGuiHoveredFlags_DelayShort flags,
allowing to introduce a shared delay for tooltip idioms. The delays are respectively
io.HoverDelayNormal (default to 0.30f) and io.HoverDelayFast (default to 0.10f). (1485)
- IsItemHovered: Added ImGuiHoveredFlags_NoSharedDelay to disable sharing delays between items,
so moving from one item to a nearby one will requires delay to elapse again. (1485)
- Tables: activating an ID (e.g. clicking button inside) column doesn't prevent columns
output flags from having ImGuiTableColumnFlags_IsHovered set. (2957)
- Tables,Columns: fixed a layout issue where SameLine() prior to a row change would set the
next row in such state where subsequent SameLine() would move back to previous row.
- Tabs: Fixed a crash when closing multiple windows (possible with docking only) with an
appended TabItemButton(). (5515, 3291) [rokups]
- Tabs: Fixed shrinking policy leading to infinite loops when fed unrounded tab widths. (5652)
- Tabs: Fixed shrinking policy sometimes erroneously making right-most tabs stray a little out
bar boundaries (bug in 1.88). (5652).
- Tabs: Enforcing minimum size of 1.0f, fixed asserting on zero-tab widths. (5572)
- Window: Fixed a potential crash when appending to a child window. (5515, 3496, 4797) [rokups]
- Window: Fixed an issue where uncollapsed a window would show a scrollbar for a frame.
- Window: Auto-fit size takes account of work rectangle (menu bars eating from viewport). (5843)
- Window: Fixed position not being clamped while auto-resizing (fixes appearing windows without
.ini data from moving for a frame when using io.ConfigWindowsMoveFromTitleBarOnly). (5843)
- IO: Added ImGuiMod_Shortcut which is ImGuiMod_Super on Mac and ImGuiMod_Ctrl otherwise. (456)
- IO: Added ImGuiKey_MouseXXX aliases for mouse buttons/wheel so all operations done on ImGuiKey
can apply to mouse data as well. (4921)
- IO: Filter duplicate input events during the AddXXX() calls. (5599, 4921)
- IO: Fixed AddFocusEvent(false) to also clear MouseDown[] state. (4921)
- Menus: Fixed incorrect sub-menu parent association when opening a menu by closing another.
Among other things, it would accidentally break part of the closing heuristic logic when moving
towards a sub-menu. (2517, 5614). [rokups]
- Menus: Fixed gaps in closing logic which would make child-menu erroneously close when crossing
the gap between a menu item inside a window and a child-menu in a secondary viewport. (5614)
- Menus: Fixed using IsItemHovered()/IsItemClicked() on BeginMenu(). (5775)
- Menus, Popups: Experimental fix for issue where clicking on an open BeginMenu() item called from
a window which is neither a popup neither a menu used to incorrectly close and reopen the menu
(the fix may have side-effect and is labelld as experimental as we may need to revert). (5775)
- Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item
in parent window when the parent is not a popup. (5730)
- Menus, Nav: Fixed not being able to close a menu with Left arrow when parent is not a popup. (5730)
- Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple
BeginMenu() call with same names). (1207)
- Menus: Fixed a one-frame issue where SetNextWindowXXX data are not consumed by a BeginMenu()
returning false.
- Nav: Fixed moving/resizing window with gamepad or keyboard when running at very high framerate.
- Nav: Pressing Space/GamepadFaceDown on a repeating button uses the same repeating rate as a mouse hold.
- Nav: Fixed an issue opening a menu with Right key from a non-menu window.
- Text: Fixed wrapped-text not doing a fast-forward on lines above the clipping region,
which would result in an abnormal number of vertices created (was slower and more likely to
asserts with 16-bits ImDrawVtx). (5720)
- Fonts: Added GetGlyphRangesGreek() helper for Greek & Coptic glyph range. (5676, 5727) [azonenberg]
- ImDrawList: Not using alloca() anymore, lift single polygon size limits. (5704, 1811)
- Note: now using a temporary buffer stored in ImDrawListSharedData.
This change made it more visible than you cannot append to multiple ImDrawList from multiple
threads if they share the same ImDrawListSharedData. Previously it was a little more likely
for this to "accidentally" work, but was already incorrect. (6167)
- Platform IME: [Windows] Removed call to ImmAssociateContextEx() leading to freeze on some setups.
(2589, 5535, 5264, 4972)
- Misc: better error reporting for PopStyleColor()/PopStyleVar() + easier to recover. (1651)
- Misc: io.Framerate moving average now converge in 60 frames instead of 120. (5236, 4138)
- Debug Tools: Debug Log: Visually locate items when hovering a 0xXXXXXXXX value. (5855)
- Debug Tools: Debug Log: Added 'IO' and 'Clipper' events logging. (5855)
- Debug Tools: Metrics: Visually locate items when hovering a 0xXXXXXXXX value (in most places).
- Debug Tools: Item Picker: Mouse button can be changed by holding Ctrl+Shift, making it easier
to use the Item Picker in e.g. menus. (2673)
- Docs: Fixed various typos in comments and documentations. (5649, 5675, 5679) [tocic, lessigsx]
- Demo: Improved "Constrained-resizing window" example, more clearly showcase aspect-ratio. (5627)
- Demo: Added more explicit "Center window" mode to "Overlay example". (5618)
- Demo: Fixed Log & Console from losing scrolling position with Auto-Scroll when child is clipped. (5721)
- Examples: Added all SDL examples to default VS solution.
- Examples: Win32: Always use RegisterClassW() to ensure windows are Unicode. (5725)
- Examples: Android: Enable .ini file loading/saving into application internal data folder. (5836) [rewtio]
- Backends: GLFW: Honor GLFW_CURSOR_DISABLED by not setting mouse position. (5625) [scorpion-26]
- Backends: GLFW: Add glfwGetError() call on GLFW 3.3 to inhibit missing mouse cursor errors. (5785) [mitchellh]
- Backends: SDL: Disable SDL 2.0.22 new "auto capture" which prevents drag and drop across windows
(e.g. for multi-viewport support) and don't capture mouse when drag and dropping. (5710)
- Backends: Win32: Convert WM_CHAR values with MultiByteToWideChar() when window class was
registered as MBCS (not Unicode). (5725, 1807, 471, 2815, 1060) [or75, ocornut]
- Backends: OSX: Fixed mouse inputs on flipped views. (5756) [Nemirtingas]
- Backends: OSX: Fixed mouse coordinate before clicking on the host window. (5842) [maezawa-akira]
- Backends: OSX: Fixes to support full app creation in C++. (5403) [stack]
- Backends: OpenGL3: Reverted use of glBufferSubData(), too many corruptions issues were reported,
and old leaks issues seemingly can't be reproed with Intel drivers nowadays (revert earlier changes).
(4468, 4504, 3381, 2981, 4825, 4832, 5127).
- Backends: Metal: Use __bridge for ARC based systems. (5403) [stack]
- Backends: Metal: Add dispatch synchronization. (5447) [luigifcruz]
- Backends: Metal: Update deprecated property 'sampleCount'->'rasterSampleCount'. (5603) [dcvz]
- Backends: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symetry. (914, 5738).
- Backends: WebGPU: fixed rendering when a depth buffer is enabled. (5869) [brainlag]


-----------------------------------------------------------------------

Page 1 of 7

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.