Recent Releases
1.91.529 Nov 2024 04:45
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.5
Breaking changes:
Commented out pre-1.87 IO system (equivalent to using IMGUI_DISABLE_OBSOLETE_KEYIO or IMGUI_DISABLE_OBSOLETE_FUNCTIONS before).
- io.KeyMap and io.KeysDown are removed (obsoleted February 2022).
- io.NavInputs and ImGuiNavInput are removed (obsoleted July 2022).
- Pre-1.87 backends are not supported:
- backends need to call io.AddKeyEvent(), io.AddMouseEvent() instead of writing to io.KeysDown , io.MouseDown fields.
- backends need to call io.AddKeyAnalogEvent() for gamepad values instead of writing to io.NavInputs fields.
- For more references:
- read 1.87 and 1.88 part of API BREAKING CHANGES in imgui.cpp or read Changelog for 1.87 and 1.88.
- read https://github.com/ocornut/imgui//4921.
- If you have trouble updating a very old codebase using legacy backend-specific key codes:
consider updating to 1.91.4 first, then #define IMGUI_DISABLE_OBSOLETE_KEYIO, then update to latest.
- Obsoleted ImGuiKey_COUNT (it is unusually error-prone/misleading since valid keys don't start at 0).
Probably use ImGuiKey_NamedKey_BEGIN/ImGuiKey_NamedKey_END?.
Fonts: removed const qualifiers from most font functions in prevision for upcoming fonts improvements.
Other changes:
Selectable: selected Selectables use ImGuiCol_Header instead of an arbitrary lerp
between _Header and _HeaderHovered which was introduced v1.91.
Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use
PressedOnClick instead of PressedOnClickRelease when unspecified.
InputText: a (regression in 1.91.2) where modifying text buffer within
a callback would sometimes prevents further appending to the buffer.
Tabs, Style: made ImGuiCol_TabDimmedSelectedOverline alpha 0 (not visible) in default
styles as the current look is not right (but ImGuiCol_TabSelectedOverline stays the same).
Log/Capture: added experimental io.ConfigWindowsCopyContentsWithCtrlC option to
automatically copy
1.91.326 Nov 2024 07:25
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.3
Breaking changes:
Drags: treat v_min==v_max as a valid clamping range when != 0.0f. Zero is still a special
value due to legacy reasons, unless using ImGuiSliderFlags_ClampZeroRange..
Drags: extended behavior of ImGuiSliderFlags_AlwaysClamp to include _ClampZeroRange.
It considers v_min==v_max==0.0f as a valid clamping range (aka edits not allowed).
Although unlikely, it you wish to only clamp on text input but want v_min==v_max==0.0f
to mean unclamped drags, you can use _ClampOnInput instead of _AlwaysClamp..
Other changes:
Error Handling: Enabled/improved error recovery systems..
- Error recovery is provided as a way to facilitate:
- Recovery after a programming error. Native code or scripting language (the later
tends to facilitate iterating on code while running).
- Recovery after running an exception handler or any error processing which may skip code
after an error has been detected.
- Error recovery is not perfect nor guaranteed! It is a feature to ease development.
You not are not supposed to rely on it in the course of a normal application run.
- Functions that support error recovery are using IM_ASSERT_USER_ERROR() instead of IM_ASSERT().
- By design, we do not allow error recovery to be 100 silent. One of the options needs to be enabled!.
- Possible usage: facilitate recovery from errors triggered from a scripting language or
after specific exceptions handlers. Surface errors to programmers in less aggressive ways.
- Always ensure that on programmers seats you have at minimum Asserts or Tooltips enabled
when making direct imgui API calls! Otherwise it would severely hinder your ability to
catch and correct mistakes!.
- Added io.ConfigErrorRecovery to enable error recovery support.
- Added io.ConfigErrorRecoveryEnableAssert to assert on recoverable errors.
- Added io.ConfigErrorRecoveryEnableDeLog to output to delog on recoverable errors.
- Added io.ConfigErrorR
1.91.224 Nov 2024 18:25
minor bugfix:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.2
Other changes:
Added io.ConfigDeHighlightIdConflicts defeature!
THIS DETECTS THE MOST COMMON USER ERROR BY FIRST-TIME DEAR IMGUI PROGRAMMERS!.
- The tool detects when multiple items are sharing the same identifier, due to not
using PushID/PopID in loops, or not using ID stack facilities such as "##" suf.
Very frequently it happens when using empty "" labels.
- When hovering an item with a conflicting ID, all visible items with the same ID will
be highlighted and an explanatory tooltip is made visible.
- The feature may be disabled and is exposed in Demo- Tools menu.
- I've been wanting to add this tool for a long time, but was stalled by finding a way to
not make it spammy + make it practically zero cost. After @pthom made various proposals to
solve the same problem, I decided it was time to finish it.
- Added ImGuiItemFlags_AllowDuplicateId to use with PushItemFlag()/PopItemFlag() if for some
reason you intend to have duplicate identifiers.
-.
Nav: pressing any keyboard key while holding Alt disable toggling nav layer on Alt release..
MultiSelect+Tables: an where box-select would skip items while drag-scrolling
in a table with outer borders.
Inputs: SetNextItemShortcut() with ImGuiInputFlags_Tooltip doesn't show tooltip when item is active.
InputText: internal refactoring to simplify and optimize the code. The ImWchar buffer has been
removed. Simplifications allowed to implement new optimizations for handling very large text buffers.
(e.g. in our testing, handling of a 1 MB text buffer is now 3 times faster in VS2022 Debuild).
This is the first step toward more refactoring. @alektron, @ocornut .
InputText: added CJK double-width punctuation to list of separators considered for CTRL+Arrow.
Tables: auto-width columns when using synced-instances of same table. The previous done in v1.90.5 was incomplete..
Tables: assertion related to inconsistent outer clipping when s
1.91.123 Nov 2024 05:25
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.1
Breaking changes:
BeginChild(): renamed ImGuiChildFlags_Border to ImGuiChildFlags_Borders for consistency. @cfillion
Kept inline redirection flag (will obsolete).
IO: moved clipboard functions from ImGuiIO to ImGuiPlatformIO:
- io.GetClipboardTextFn - platform_io.Platform_GetClipboardTextFn.
- io.SetClipboardTextFn - platform_io.Platform_SetClipboardTextFn.
- in function signatures, changed 'void user_data' to 'ImGuiContext ctx' for consistency
with other functions. Pull your user data from platform_io.ClipboardUserData if used.
- as this is will affect all users of custom engines/backends, we are providing proper
legacy redirection (will obsolete).
IO: moved other functions from ImGuiIO to ImGuiPlatformIO:
- io.PlatformOpenInShellFn - platform_io.Platform_OpenInShellFn.
- io.PlatformSetImeDataFn - platform_io.Platform_SetImeDataFn.
- io.PlatformLocaleDecimalPoint - platform_io.Platform_LocaleDecimalPoint.
- access those via GetPlatformIO() instead of GetIO().
(Because PlatformOpenInShellFn and PlatformSetImeDataFn were introduced very recently and
often automatically set by core library and backends, we are exceptionally not maintaining
a legacy redirection symbol for those two.).
Commented the old ImageButton() signature obsoleted in 1.89 ( August 2022)..
- old ImageButton() used ImTextureId as item id (created with e.g. multiple buttons in same scope, transient texture id values, opaque computation of ID).
- new ImageButton() requires an explicit 'const char str_id'.
- old ImageButton() had frame_padding' override argument.
- new ImageButton() always use style.FramePadding, which you can modify using PushStyleVar()/PopStyleVar().
Other changes:
IO: Added GetPlatformIO() and ImGuiPlatformIO, pulled from 'docking' branch, which
is a centralized spot to connect os/platform/renderer related functions.
Clipboard, IME and OpenInShell hooks
1.91.419 Oct 2024 23:05
major feature:
Breaking Changes:
Style: renamed ImGuiCol_NavHighlight to ImGuiCol_NavCursor, for consistency with newly exposed and reworked features. Kept inline redirection enum (will obsolete).
The typedef for ImTextureID now defaults to ImU64 instead of void*. (#1641)
This removes the requirement to redefine it for backends which are e.g. storing descriptor sets or other 64-bits structures when building on 32-bits archs (namely our DX12 and Vulkan backends). It therefore simplify various building scripts/helpers.
You may have compile-time warnings if you were casting to void* instead of ImTextureID when passing your types to functions taking ImTextureID values, e.g. ImGui::Image(). In doubt it is almost always better to do an intermediate intptr_t cast, since it allows casting any pointer/integer type without warning:
May warn: ImGui::Image((void*)MyTextureData, ...);
May warn: ImGui::Image((void*)(intptr_t)MyTextureData, ...);
Won't warn: ImGui::Image((ImTextureID)(intptr_t)MyTextureData), ...);
Note that you can always #define ImTextureID to be your own high-level structures (with dedicated constructors and extra render parameters) if you like.
IO: moved ImGuiConfigFlags_NavEnableSetMousePos to standalone io.ConfigNavMoveSetMousePos bool.
IO: moved ImGuiConfigFlags_NavNoCaptureKeyboard to standalone io.ConfigNavCaptureKeyboard bool (note the inverted value!). (#2517, #2009). Kept legacy names (will obsolete) + code that copies settings once the first time. Dynamically changing the old value won't work. Switch to using the new value!
Other changes:
IO: added void* platform_io.Renderer_RenderState which is set during the ImGui_ImplXXXX_RenderDrawData() of standard backends to expose selected render states to your draw callbacks. (#6969, #5834, #7468, #3590)
IO: io.WantCaptureKeyboard is never set when ImGuiConfigFlags_NoKeyboard is enabled. (#4921)
Error Handling: turned a few more funct
1.91.028 Aug 2024 15:45
major feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.0
Breaking changes:
IO, IME: renamed platform IME hook and added explicit context for consistency and future-proofness.
- old: io.SetPlatformImeDataFn(ImGuiViewport viewport, ImGuiPlatformImeData data);.
- new: io.PlatformSetImeDataFn(ImGuiContext ctx, ImGuiViewport viewport, ImGuiPlatformImeData data);
It is expected that for a vast majority of users this is automatically set by core
library and/or platform backend so it won't have any effect.
Obsoleted GetContentRegionMax(), GetWindowContentRegionMin() and GetWindowContentRegionMax().
You should never need those functions! You can do everything in less a confusing manner by only
using GetCursorScreenPos() and GetContentRegionAvail(). Also always consider that if you are using
GetWindowPos() and GetCursorPos() you may also be making things unnecessarily complicated.
I repeat: You can do everything with GetCursorScreenPos() and GetContentRegionAvail()!.
- GetWindowContentRegionMax().x - GetCursorPos().x -- GetContentRegionAvail().x.
- GetWindowContentRegionMax().x + GetWindowPos().x -- GetCursorScreenPos().x + GetContentRegionAvail().x // when called from left edge of window.
- GetContentRegionMax() -- GetContentRegionAvail() + GetCursorScreenPos() - GetWindowPos() // right edge in local coordinates.
- GetWindowContentRegionMax().x - GetWindowContentRegionMin().x -- GetContentRegionAvail() // when called from left edge of window.
Item flag changes:
- Obsoleted PushButtonRepeat()/PopButtonRepeat() in favor of using new PushItemFlag()/PopItemFlag()
with ImGuiItemFlags_ButtonRepeat. Kept inline redirecting functions (will obsolete).
- Obsoleted PushTabStop()/PopTabStop() in favor of using new PushItemFlag()/PopItemFlag()
with ImGuiItemFlags_NoTabStop. Kept inline redirecting functions (will obsolete).
- R
1.90.902 Jul 2024 03:16
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.9
Breaking changes:
Removed old nested structure: renaming ImGuiStorage::ImGuiStoragePair type to
ImGuiStoragePair (simpler for many languages). No significant nested type left.
BeginChild: added ImGuiChildFlags_NavFlattened as a replacement for the window
flag ImGuiWindowFlags_NavFlattened: the feature only ever made sense for
BeginChild() calls anyhow. @cfillion .
- old: BeginChild("Name", size, 0, ImGuiWindowFlags_NavFlattened);.
- new: BeginChild("Name", size, ImGuiChildFlags_NavFlattened, 0)
Kept inline redirection flag (will obsolete).
Style: renamed tab colors for clarity and consistency with other changes: (#261, #351).
- ImGuiCol_TabActive - ImGuiCol_TabSelected.
- ImGuiCol_TabUnfocused - ImGuiCol_TabDimmed.
- ImGuiCol_TabUnfocusedActive - ImGuiCol_TabDimmedSelected
Kept inline redirecting enums (will obsolete).
IO: io.ClearInputKeys() (first exposed in 1.89.8) doesn't clear mouse data.
Newly added io.ClearInputMouse() does..
Drag and Drop: renamed ImGuiDragDropFlags_SourceAutoExpirePayload to
ImGuiDragDropFlags_PayloadAutoExpire. Kept inline redirecting enum (will obsolete)..
Other changes:
IO: do not disable io.ConfigWindowsResizeFromEdges (which allow resizing from borders
and lower-left corner) when ImGuiBackendFlags_HasMouseCursors is not set by backend.
The initial reasoning is that resizing from borders feels better when correct mouse cursor
shape change as honored by backends. Keeping this enabling will hopefully increase pressure
on third-party backends to set ImGuiBackendFlags_HasMouseCursors and honor changes of
ImGui::GetMouseCursor() value..
IO: do not claim io.WantCaptureMouse=true on the mouse release frame of a button
which was pressed over void/underlying app, which is consistent/needed to allow the
mouse up event of a drag over void/underlying app to catch release. @Moka42 .
IO: Added io.ClearInputMouse() to clear
1.90.808 Jun 2024 02:05
minor bugfix:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.8
Breaking changes:
Reordered various ImGuiInputTextFlags values. This should NOT be breaking unless
you are using generated headers that have values not matching the main library.
Removed ImGuiButtonFlags_MouseButtonDefault_ = ImGuiButtonFlags_MouseButtonLeft
from imgui.h, was mostly unused and misleading.
Other changes:
Inputs: IsMouseClicked(..., repeat=true); broken in 1.90.7 on 2024/05/22.
(due to an internal api parameter swap, repeat wouldn't be honored and
ownership would be accidentally checked even though this api is meant to not
check ownership). @korenkonder .
Windows: altering FramePadding mid-frame not correctly affecting logic
responsible for honoring io.ConfigWindowsMoveFromTitleBarOnly..
Scrollbar: made scrolling logic more standard: clicking above or below the
grab scrolls by one page, holding mouse button repeats scrolling..
Scrollbar: miscalculation of vertical scrollbar visibility when required
solely by the presence of an horizontal scrollbar..
InputScalar, InputInt, InputFloat: added ImGuiInputTextFlags_ParseEmptyRefVal
to parse an empty field as zero-value. @supermerill, @ocornut .
InputScalar, InputInt, InputFloat: added ImGuiInputTextFlags_DisplayEmptyRefVal
to display a zero-value as empty. @supermerill, @ocornut .
Popups: an preventing to a popup opened over a modal by clicking
over void (it required clicking over the visible part of the modal)..
Tables: an where ideal size reported to parent container wouldn't
correctly take account of inner scrollbar, affecting potential auto-resize of
parent container..
Tables: a where after disabling the ScrollY flag for a table,
previous scrollbar width would be accounted for..
Combo: simplified Combo() API uses a list clipper (due to its api it wasn't
previously trivial before we added clipper.IncludeItemByIndex() function).
Disabled: nested tooltips or other non-child window within a BeginDi
1.90.728 May 2024 11:05
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.7
Breaking changes:
Inputs: on macOS X, Cmd and Ctrl keys are now automatically swapped by io.AddKeyEvent(),
as this naturally align with how macOS X uses those keys..
- Effectively it means that e.g. ImGuiMod_Ctrl ImGuiKey_C is a valid idiomatic shortcut
for both Windows and Mac style users.
- It shouldn't really affect your code unless you had explicit/custom shortcut swapping in
place for macOS X apps in your input logic.
- Removed ImGuiMod_Shortcut which was previously dynamically remapping to Ctrl or Cmd/Super.
It is now unnecessary to specific cross-platform idiomatic shortcuts.
Kept symbols redirecting ImGuiMod_Shortcut to ImGuiMod_Ctrl (will obsolete).
Commented out obsolete symbols renamed in 1.88 (May 2022):
CaptureKeyboardFromApp() - SetNextFrameWantCaptureKeyboard()
CaptureMouseFromApp() - SetNextFrameWantCaptureMouse().
Backends: SDL_Renderer2/SDL_Renderer3: ImGui_ImplSDLRenderer2_RenderDrawData() and
ImGui_ImplSDLRenderer3_RenderDrawData() now takes a SDL_Renderer parameter. This was previously
overlooked from the API but it will allow eventual support for multi-viewports.
Other changes:
Windows: BeginChild(): visibility of fully clipped child windows and tables to Test Engine.
Windows: BeginChild(): auto-fit calculation when using either (not both) ResizeX/ResizeY
and double-clicking on a border. Calculation incorrectly didn't always account for scrollbar as
it assumed the other axis would also be auto-fit..
Inputs: added shortcut and routing system in public API. BETA .
- The general idea is that several callers may register interest in a shortcut, and only one owner gets it.
- in Parent: call Shortcut(Ctrl+S) // When Parent is focused, Parent gets the shortcut.
- in Child1: call Shortcut(Ctrl+S) // When Child1 is focused, Child1 gets the shortcut (Child1 overrides Parent shortcuts).
- in Child2: no call // When Child2 is fo
1.90.609 May 2024 22:05
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.6
Breaking changes:
TreeNode: a layout inconsistency when using a empty/hidden label followed
by a SameLine() call.
Before: TreeNode("##Hidden"); SameLine(); Text("Hello");.
// This was actually incorrect! BUT appeared to look ok with the default style.
// where ItemSpacing.x == FramePadding.x 2 (it didn't look aligned otherwise).
After: TreeNode("##Hidden"); SameLine(0, 0); Text("Hello");.
// This is correct for all values in style.
With the, IF you were successfully using TreeNode("")+SameLine(); you will now
have extra spacing between your TreeNode and the following item. You'll need to change
the SameLine() call to SameLine(0,0) to remove this extraneous spacing.
This seemed like the more sensible that's not making things less consistent.
(Note: when using this idiom you are likely to also use ImGuiTreeNodeFlags_SpanAvailWidth).
Other changes:
Windows: Changed default ClipRect to extend to windows' left and right borders,
instead of adding arbitrary WindowPadding.x 0.5f space on left and right.
That ClipRect half-padding was arbitrary/confusing and inconsistent with Y axis.
It also made it harder to draw items covering whole window without pushing an
extended ClipRect. Some items near windows left and right edge that used to be clipped
may be partly more visible..
Windows: subsequent Begin() append calls from setting last item information
for title bar, making it impossible to use IsItemHovered() on a Begin()-to-append,
and causing bypassing hover detection on collapsed windows..
Fonts: font ascent and descent calculation when a font hits exact integer values.
It is possible that some prior manual use of ImFontConfig::GlyphOffset may become
duplicate with this. @GamingMinds-DanielC .
TreeNode: Added ImGuiTreeNodeFlags_SpanTextWidth to make hitbox and highlight only
cover the label. @dimateos .
Tables: Angled headers: multi-line label display when angle is flip
1.90.512 Apr 2024 11:45
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.5
Breaking changes:
More formally obsoleted GetKeyIndex() when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is set.
It has been unnecessary and a no-op since 1.87 (it returns the same value as passed
when used with a 1.87+ backend using io.AddKeyEvent() function)..
- IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) -- IsKeyPressed(ImGuiKey_XXX).
ImDrawList: Merged the radius_x/radius_y parameters in AddEllipse(), AddEllipseFilled()
and PathEllipticalArcTo() into a single ImVec2 parameter. Exceptionally, because those
functions were added recently in 1.90, we are not adding inline redirection functions.
The transition is easy and should affect few users. @cfillion .
Other changes:
Windows: Scrollbar visibility decision uses current size when both size and contents
size are submitted by API..
Windows: Double-click to collapse may be disabled via key-ownership mechanism..
Windows: BeginChild(): Extend outer resize borders to the edges when there are no corner
grips. Essentially affects resizable child windows. @cfillion .
Windows: BeginChild(): Resizing logic for child windows evaluates whether per-axis clamping
should be applied based on parent scrollbars, not child scrollbars. @cfillion
Adjust those resizing limits to match window padding rather than inner clipping rectangle.
Tables: auto-width columns when using synced-instances of same table, width of
one instance would bleed into next one instead of sharing their widths..
Tables: Angled headers: border hit box extending beyond when used within
non-scrollable tables. @cfillion .
Tables: Angled headers: borders not moving back up after TableAngleHeadersRow()
stops being called. @cfillion .
Tables: Angled headers: rounding header size to nearest integers, some when using clipper.
Menus, Popups: an where sibling menu popups re-opening in successive
frames would erroneously the window. While it is technically a popup it woul
1.90.424 Feb 2024 03:05
minor bugfix:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.4
Other changes:
Nav: SetKeyboardFocusHere() or programmatic tabbing API from not working on
windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which
among other things broke imgui_memory_editor).
Menus, Popups: an where hovering a parent-menu upward would
erroneously the window..
Popups: resizable popup minimum size being too small. Standardized minimum
size logic.
Modals: Temporary changes of ImGuiCol_ModalWindowDimBg are properly handled by
BeginPopupModal()..
Tables: Angled headers: support for multi-line labels..
Tables: Angled headers: various to accurately handle CellPadding changes..
Tables: Angled headers: properly registers horizontal component of angled headers
for auto-resizing of columns..
Tables: Angled headers: TableAngledHeadersRow() incorrect background fill
drawn too low, particularly visible with tables that have no scrolling..
ProgressBar: a minor tesselation when rendering rounded progress bars,
where in some situations the rounded section wouldn't follow regular tesselation rules.
DeTools: Item Picker: Promoted ImGui::DetartItemPicker() to public API..
DeTools: Item Picker: Menu entry visible in Demo- Tools but greyed out unless
io.ConfigDeIsDegerPresent is set..
Misc: Added optional alpha multiplier parameter to GetColorU32(ImU32) variant.
Demo: Custom Rendering: better demonstrate PathArcTo(), PathBezierQuadraticCurveTo(),
PathBezierCubicCurveTo(), PathStroke(), PathFillConvex() functions.
.
1.90.315 Feb 2024 19:05
minor feature:
Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.3
Breaking changes:
Backends: SDL2: Removed obsolete ImGui_ImplSDL2_NewFrame(SDL_Window*) signature which
was obsoleted in 1.84. Calling ImGui_ImplSDL2_NewFrame() is fine.
Backends: Vulkan: Moved RenderPass parameter from ImGui_ImplVulkan_Init() function to
ImGui_ImplVulkan_InitInfo structure. Not required when using dynamic rendering. @shawnhatori .
Backends: Vulkan: Using dynamic rendering now require filling the PipelineRenderingCreateInfo
structure in ImGui_ImplVulkan_InitInfo, allowing to configure color/depth/stencil formats.
Removed ColorAttachmentFormat field previously provided for dynamic rendering.
@shawnhatori .
Other changes:
Menus, Popups: menus and popups with ChildWindow flag erroneously not displaying
a scrollbar when contents is over parent viewport size. @ZingBallyhoo .
Backends: SDL2, SDL3: Handle gamepad disconnection + increasing gamepad reference
counter continuously. Added support for multiple simultaneous gamepads.
Added ImGui_ImplSDL2_SetGamepadMode()) function to select whether to automatically pick
first available gamepad, all gamepads, or specific gamepads.
@ocornut, @lethal-guitar, @wn2000, @bog-dan-ro .
BackendsL SDL3: gamepad handling. @bog-dan-ro .
Backends: SDLRenderer3: query newly added SDL_RenderViewportSet() to not restore
a wrong viewport if none was initially set.
Backends: DirectX9: Using RGBA format when allowed by the driver to avoid CPU side
conversion. @Demonese .
Internals: ImFileOpen not working before context is created, preventing creation
of a font atlas before main context creation. @PathogenDavid, @ocornut .
.
1.90.210 Feb 2024 00:03
major bugfix:
Breaking changes:
- Commented out ImGuiIO::ImeWindowHandle obsoleted in 1.87 in favor of writing
to 'void* ImGuiViewport::PlatformHandleRaw'.
- Backends: WebGPU: ImGui_ImplWGPU_Init() now takes a ImGui_ImplWGPU_InitInfo structure
instead of variety of parameters, allowing for easier further changes. (#7240)
Other changes:
- Nav: keyboard/gamepad activation mark widgets as held to give better visual feedback.
- Nav: tweak to logic marking navigated item as hovered when using keyboard, allowing
the hover highlight to stay even while another item is activated.
- Nav: Fixed SetKeyboardFocusHere() not working when current nav focus is in different scope,
regression from 1.90.1 related to code scoping Tab presses to local scope. (#7226) @bratpilz
- Nav: Fixed pressing Escape while in a child window with _NavFlattened flag. (#7237)
- Nav: Improve handling of Alt key to toggle menu so that key ownership may be claimed on
individual left/right alt key without interfering with the other.
- Nav, Menus: Fixed click on a BeginMenu() followed by right-arrow from making the child menu
reopen and flicker (using ImGuiPopupFlags_NoReopen).
- Nav: ImGuiWindowFlags_NoNavInputs is tested during scoring so NavFlattened windows can use it.
- Popups: OpenPopup(): added ImGuiPopupFlags_NoReopen flag to specifically not close and reopen
a popup when it is already open. (#1497, #1533)
(Note that this differs from specific handling we already have in place for the case of calling
OpenPopup() repeatedly every frame: we already didn't reopen in that specific situation, otherwise
the effect would be very disastrous in term of confusion, as reopening would steal focus).
- Popups: Slight change to popup closing logic (e.g. after focusing another window) which skipped
over popups that are also child windows.
- Combo: Fixed not reusing windows optimally when used inside a popup stack.
- Debug Tools: Metrics: Fixed debug break in SetShortcutRouting() not handling ImGuiMod_Sh