v1.90.9
1.90.9: Last shy version increment before 1.91!
Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!
📣 Click version number above to display full release note contents, otherwise it is clipped by GitHub!
Links: Homepage - Release notes - FAQ - Issues, Q&A. Also see our Wiki with sections such as..
- Getting Started (~25 lines in an existing app)
- Useful Extensions/Widgets
- Software using Dear ImGui
- Bindings & Backends
- and more! 👌
Consider reading the foreword for v1.90.5. If you contacted me in March consider following up :)
Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations.
If your company uses Dear ImGui, please reach out. See Funding & Sponsors page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and that will contribute to fund Dear ImGui.
In the last years, Dear ImGui has been financially supported by: Aras Pranckevičius / Arkane Lyon / Asobo Studio / Avalanche Studios Group / BeamNG / Blizzard / Esoterica Engine / G3Dvu / Lucid Games / Noel Berry / Mobigame / Planestate Software / Pocketwatch Games / Remedy Entertainment / Supercell / Terrible Toybox / Tuxedo Labs / Wonderland Engine and many individual contributors. Thank you for allowing Dear ImGui to stay on its path.
Special thanks to @cfillion, @GamingMinds-DanielC, @PathogenDavid & more for for their help with patches and answers!
Changes
Breaking Changes:
- Removed old nested structure: renaming
ImGuiStorage::ImGuiStoragePair
type toImGuiStoragePair
(simpler for many languages). No significant nested type left. - BeginChild: added
ImGuiChildFlags_NavFlattened
as a replacement for the window flagImGuiWindowFlags_NavFlattened
: the feature only ever made sense for BeginChild() calls anyhow. (#7687) [@cfillion]- old:
BeginChild("Name", size, 0, ImGuiWindowFlags_NavFlattened);
- new:
BeginChild("Name", size, ImGuiChildFlags_NavFlattened, 0)
Kept inline redirection flag (will obsolete).
- old:
- 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 addedio.ClearInputMouse()
does. (#4921) - Drag and Drop: renamed
ImGuiDragDropFlags_SourceAutoExpirePayload
toImGuiDragDropFlags_PayloadAutoExpire
. Kept inline redirecting enum (will obsolete). (#1725, #143)
Other Changes
- IO: do not disable
io.ConfigWindowsResizeFromEdges
(which allow resizing from borders and lower-left corner) whenImGuiBackendFlags_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 setImGuiBackendFlags_HasMouseCursors
and honor changes ofImGui::GetMouseCursor()
value. (#1495) - 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. (#1392) [@Moka42] - IO: Added
io.ClearInputMouse()
to clear mouse state. (#4921) - Windows: BeginChild(): fixed a glitch when during a resize of a child window which is tightly close to the boundaries of its parent (e.g. with zero
WindowPadding
), the child position could have temporarily be moved around by erroneous padding application. (#7706) - TabBar, Style: added
ImGuiTabBarFlags_DrawSelectedOverline
option to draw an horizontal line over selected tabs to increase visibility. This is used by docking. Added correspondingImGuiCol_TabSelectedOverline
andImGuiCol_TabDimmedSelectedOverline
colors. - Tables: added
TableGetHoveredColumn()
to public API, as an alternative to testing forTableGetColumnFlags(column) & ImGuiTableColumnFlags_IsHovered
on each column. (#3740) - Disabled, Inputs: fixed using
Shortcut()
orSetNextItemShortcut()
within a disabled block bypassing the disabled state. (#7726) - Disabled: Reworked 1.90.8 behavior of
Begin()
not inheriting currentBeginDisabled()
state, to make it that only tooltip windows are temporarily clearing it. (#211, #7640) - Drags: added
ImGuiSliderFlags_WrapAround
flag forDragInt()
,DragFloat()
etc. (#7749) - Drag and Drop:
BeginDragDropSource()
withImGuiDragDropFlags_SourceExtern
sets active id so a multi-frame extern source doesn't interfere with hovered widgets. (#143) - Drag and Drop:
BeginDragDropSource()
withImGuiDragDropFlags_SourceExtern
does not assume a mouse button being pressed. Facilitate implementing cross-context drag and drop. (#143) - Drag and Drop: Added
ImGuiDragDropFlags_PayloadNoCrossContext
/ImGuiDragDropFlags_PayloadNoCrossProcess
flags as metadata to specify that a payload may not be copied outside the context/process by some logic aiming to copy payloads around. - Drag and Drop: Fixes an issue when elapsing payload would be based on last payload frame instead of last drag source frame, which makes a difference if not resubmitting payload every frame. (#143)
- Debug Tools: Metrics/Debugger: Browsing a Storage perform hover lookup on identifier.
- Viewports: Backported
void* ImGuiViewport::PlatformHandle
from docking branch for use by backends. - imgui_freetype: Fixed divide by zero while handling
FT_PIXEL_MODE_BGRA
glyphs. (#7267, #3369) - Backends: OpenGL2, OpenGL3:
ImGui_ImplOpenGL3_NewFrame()
recreates font texture if it has been destroyed byImGui_ImplOpenGL3_DestroyFontsTexture()
. (#7748) [@mlauss2] - Backends: SDL3: Update for API removal of keysym field in
SDL_KeyboardEvent
. (#7728) - Backends: SDL3: Update for
SDL_StartTextInput()
/SDL_StopTextInput()
API changes. (#7735) - Backends: SDL3: Update for
SDL_SetTextInputRect()
API rename. (#7760, #7754) [@maxortner01] - Backends: SDLRenderer3: Update for
SDL_RenderGeometryRaw()
API changes. (SDL#9009). - Backends: Vulkan: Remove
Volk/
fromvolk.h
#include directives. (#7722, #6582, #4854) [@martin-ejdestig] - Examples: SDL3: Remove use of
SDL_HINT_IME_NATIVE_UI
since newSDL_HINT_IME_IMPLEMENTED_UI
values has a more suitable default for our case case. - Examples: GLFW+Vulkan, SDL+Vulkan: handle swap chain resize even without Vulkan returning
VK_SUBOPTIMAL_KHR
, which doesn't seem to happen on Wayland. (#7671) [@AndreiNego, @ocornut]
Changes from 1.90.8 to 1.90.9 related to the Docking branch: (aimed to merge in 1.91)
- Windows, Menus: Fixed an issue where the size of sub-menu in their own viewport would be erroneously clamped to the size of main viewport. (#7730)
- Merged
GetBackgroundDrawList()
andGetBackgroundDrawList(ImGuiViewport* viewport)
api entry points into a same oneGetBackgroundDrawList(ImGuiViewport* viewport = NULL);
- Merged
GetForegroundDrawList()
andGetForegroundDrawList(ImGuiViewport* viewport)
api entry points into a same oneGetForegroundDrawList(ImGuiViewport* viewport = NULL);
- Backends: SDL3: Update for introduction of SDL_GLContext type from void*. (#7701, #7702) [@bcsanches]
- Backends: Win32: Secondary viewports WndProc handler retrieve/set imgui context from the HWND, allowing WndProc dispatch to work in multi-context setups.
Changes from 1.90.8 to 1.90.9 related to the Multi-Select/Range-Select branch: (aimed to merge in 1.91)
https://github.com/ocornut/imgui/wiki/Multi-Select
- MultiSelect: provide RangeDirection to allow selection handler to handler backward shift+click if they wish to make use of that order.
- MultiSelect: Shift+Tab doesn't enable Shift select on landing item.
- MultiSelect: added courtesy
ImGuiMultiSelectFlags_NavWrapX
flag so we can demo this until a nav api is designed. - MultiSelect: added
ImGuiMultiSelectFlags_NoAutoClearOnReselect
. (#7424) - MultiSelect: BoxSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect2d. Which include not assuming one flag imply the other.
- MultiSelect: BoxSelect: uses
SetActiveIdUsingAllKeyboardKeys()
to avoid nav interference, much like most drag operations. - MultiSelect: BoxSelect: made Escape disable box-select and clear selection.
- MultiSelect: ImGuiSelectionBasicStorage: rework to accept massive selections requests without flinching.
- MultiSelect: ImGuiSelectionBasicStorage: added
GetNextSelectedItem()
to abstract selection storage from user. - MultiSelect: ImGuiSelectionBasicStorage: added PreserveOrder, maintain implicit order data in storage.
- Demo: Assets Browser: added a way to disable sorting and hide sorting options.
- Demo: Assets Browser: amend demo to handle drag and drop correctly.
Gallery
ImNES = NES Emulator + Rust + ImGui by @gordnzhou
https://github.com/gordnzhou/imnes-emulator
vīcĭus updater agent
https://github.com/nefarius/vicius
@native-m "continuation from this last post: #6897 (comment)"
"An update of my toy DAW... Really love Dear ImGui!"
https://github.com/native-m/whitebox
Chronicles IV: Ebonheim
https://mastodon.gamedev.place/@britown
https://www.reddit.com/r/roguelikedev/comments/1d8vvbt/introducing_chronicles_iv_ebonheim/
@alektron: "Engine/Editor/Runtime for my VR game "Fear of Falling":"
https://alektron.itch.io/fear-of-falling
@dromer "The past year we've been creating audio plugins using Imgui for their interface. Our most extensive UI so far is M3NGLR, a multi-band "modular distortion" plugin:"
https://github.com/Wasted-Audio/wstd-m3nglr
Also see previous releases details.
Note that GitHub are now clamping release notes sometimes really badly, click on a header/title to read full notes.
Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations.
If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Funding/Sponsors page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and that will contribute to fund Dear ImGui.