1.90.1: Happy new year release!
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!
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
FAQ: https://www.dearimgui.com/faq/
Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started
Issues: https://github.com/ocornut/imgui/issues
Did you know? We have a Wiki!
It has sections such as this Getting Started and Useful Extensions Gallery! 👌
Thank you! ❤️
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 Sponsors page.
In 2023, Dear ImGui was financially supported by:
- Avalanche Studios Group
- BeamNG
- Blizzard
- Esoterica Engine
- Planestate Software
- Pocketwatch Games
- Supercell
- Wonderland Engine
- And more Individual contributions! (Daniel, Geoffrey, Nathaniel, Martin & more).
Special thanks to @GamingMinds-DanielC, @PathogenDavid, @sakiodre, for their help with github answers.
Huge thank you to all past and present supporters!
Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.
Changes
Past releases include v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8, v1.89.9, v1.90 .We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently. Remember that our policy is to comment out obsolete names/symbols after 24 months, so at minimum you must update once year to reduce update complexity, but the most frequently you update the easier it will be.
TL;DR
- New "Debug Break" buttons appearing when
io.ConfigDebugIsDebuggerPresent
is enabled. See Debug Tools. - Can manually input nan/inf values in scalar widgets.
- Native OSX backend (without GLFW/SDL etc) now handle multi-monitors/viewports decently.
- 30+ other improvements fixes.
Breaking Changes:
- imgui_freetype: commented out
ImGuiFreeType::BuildFontAtlas()
obsoleted in 1.81. Prefer using#define IMGUI_ENABLE_FREETYPE
or see commented code for manual runtime calls. - Removed CalcListClipping() marked obsolete in 1.86. (#3841). Prefer using
ImGuiListClipper
which can return non-contiguous ranges. - Internals, Columns: commented out legacy
ImGuiColumnsFlags_XXX
symbols redirecting toImGuiOldColumnsFlags_XXX
, obsoleted from imgui_internal.h in 1.80. - Commented out obsolete
ImGuiKey_KeyPadEnter
redirection toImGuiKey_KeypadEnter
. (#2625, #7143)
Other Changes:
- Windows:
BeginChild()
: Fixed auto-resizing erroneously limiting size to host viewport minus padding. There are no limit to a child width/height. (#7063) [@Devyre]BeginChild()
: Resize borders rendered even whenImGuiWindowFlags_NoBackground
is specified. (#1710, #7194)- Fixed some auto-resizing path using
style.WindowMinSize.x
(instead of x/y) for both axises since 1.90. (#7106) [@n0bodysec] - Scrolling: internal scrolling value is rounded instead of truncated, as a way to reduce speed asymmetry when (incorrectly) attempting to scroll by non-integer amount. (#6677)
- Navigation (Keyboard/gamepad):
- Drag and Drop:
- InputText:
InputTextMultiline()
: Fixed Tab character input not repeating (1.89.4 regression).InputTextMultiline()
: Tabbing through a multi-line text editor which allows Tab character inputs (using theImGuiInputTextFlags_AllowTabInput
flag) doesn't automatically activate it, in order to allow passing through multiple widgets easily. (#3092, #5759, #787)
- Drags, Sliders, Inputs:
- DragScalarN, SliderScalarN, InputScalarN: Fixed incorrect pushes into ItemWidth stack when number of components is 1. [#7095] [@Nahor]
- Drags, Sliders, Inputs: removed all attempts to filter non-numerical characters during text editing. Invalid inputs not applied to value, visibly reverted after validation. (#6810, #7096)
- Drags, Sliders, Inputs: removal of filter means that "nan" and "inf" values may be input. (#7096)
- DragScalarN, SliderScalarN, InputScalarN, PushMultiItemsWidths: improve multi-components width computation to better distribute the error. (#7120, #7121) [@Nahor]
- Menus:
- Color Editors:
- Tabs: Added
ImGuiTabItemFlags_NoAssumedClosure
to enable app to react on closure attempt, without having to draw an unsaved document marker (ImGuiTabItemFlags_UnsavedDocument
sets_NoAssumedClosure
automatically). (#7084) - Debug Tools:
- Added
io.ConfigDebugIsDebuggerPresent
option. When enabled, this adds buttons in various locations of Metrics/Debugger to manually request a debugger break: (see Debug Tools Wiki Page)- Request a debug break in a
Begin()
call. - Request a debug break in a
ItemAdd()
call via debug log and hovering 0xXXXXXX identifiers. - Request a debug break in a
BeginTable()
call. - Request a debug break in a
SetShortcutRouting()
/Shortcut()
call. [Internal]
- Request a debug break in a
- Metrics: Reorganize Tools menu.
- Added
DebugFlashStyleColor()
to identify a style color. Added to Style Editor. - Debug Log: Hide its own clipper log to reduce noise in the output. (#5855)
- Debug Log: Clicking any filter with SHIFT held enables it for 2 frames only, making it easier when dealing with spammy logs. (#5855)
- Added
- Settings: Fixed an issue marking settings as dirty when merely clicking on a border or resize grip without moving it.
- Misc: Added
IMGUI_USER_H_FILENAME
to change the path included when usingIMGUI_INCLUDE_IMGUI_USER_H
.. (#7039) [@bryceberger] - Misc: Rework debug display of texture id in Metrics window to avoid compile-error when ImTextureID is defined to be larger than 64-bits. (#7090)
- Misc: Added extra courtesy ==/!= operators when
IMGUI_DEFINE_MATH_OPERATORS
is defined. - Misc: Fixed text functions fast-path for handling "%s" and "%.*s" to handle null pointers gracefully, like most printf implementations. (#7016, #3466, #6846) [@codefrog2002]
- Misc: Renamed some defines in imstb_textedit.h to avoid conflicts when using unity/jumbo builds on a codebase where another copy of the library is used.
- Misc: During shutdown, check that
io.BackendPlatformUserData
andio.BackendRendererUserData
are NULL in order to catch cases where backend was not shut down. (#7175) - Misc: Reworked Issue Template to a shinier and better form. (#5927) [@Panquesito7, @PathogenDavid, @ocornut]
- Backends:
- GLFW, Emscripten: Added
ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback()
to register canvas selector and auto-resize GLFW window. (#6751) [@Traveller23, @ypujante] - GLFW: Fixed Windows specific hooks to use Unicode version of WndProc even when compiling in MBCS mode. (#7174) [@kimidaisuki22]
- OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load libGL.so variants in case of missing symlink. Fix 1.90 regression for some distros. (#6983)
- Vulkan: Fixed mismatching allocator passed to
vkCreateCommandPool()
vsvkDestroyCommandPool()
. (#7075) [@FoonTheRaccoon] - Vulkan: Added
MinAllocationSize
field inImGui_ImplVulkan_InitInfo
to workaround zealous "best practice" validation layer. (#7189, #4238) [@philae-ael] - Vulkan: Stopped creating command pools with
VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
as we don't reset them. - WebGPU: Fixed
wgpuRenderPassEncoderSetScissorRect()
crash when rendering modal window's dimming layer, which has an unclipped value inImDrawCmd::ClipRect
. (#7191) [@aparis69]
- GLFW, Emscripten: Added
- Examples:
- Examples: GLFW+Emscripten: Fixed examples not consistently resizing according to host canvas. (#6751) [@Traveller23, @ypujante]
- Examples: SDL3: Minor fixes following recent SDL3 in-progress development.
Changes from 1.90 to 1.90.1 related to the docking branch (multi-viewport and docking features):
- Backends: OSX: Fixed monitor and window position by correctly transforming Y origin on multi-viewports multi-monitor setups. (#7028, #7101, #6009, #6432) [@dmirty-kuzmenko, @734vin]
- Backends: OSX: Fixed IME position in multi-monitor multi-viewports setups. (#7028) [@734vin]
- Backends: DX12: Changed swapchain scaling mode to DXGI_SCALING_NONE to reduce artifacts as queued frames aren't synchronized with platform window resizes. (#7152, #7153) [@SuperWangKai]
- Windows: Fixed ImGuiCol_TitleBg/Active alpha being used for viewport-owned windows. (#7181) [@PathogenDavid]
Changes from 1.90 to 1.90.0 related to the range-select branch:
This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. I know I said this API would have been stabilized by now, but it's not! I expect that the latest major API breaking changes are now done. Hopefully this is on track to be stable and merged in 1.91.
Open for details of Multi-Select/Range-Select changes
BeginMultiSelect()
.
ImGuiSelectionBasicStorage
helper.
ImGuiMultiSelectFlags_BoxSelect2d
support. Enabled in Asset Browser. Selectable() supports it.
Thank you for reading this changelog!
New exciting projects!
Since 1.89 we semi-sneakily soft launched two new entire projects!
Dear ImGui Automation/Test Engine & Test Suite
https://github.com/ocornut/imgui_test_engine
Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui).
https://github.com/dearimgui/dear_bindings
Some interesting new third-party projects:
- see Useful extensions wiki page for more.
Gallery
@sakiodre: "Spotted in a LTT's video, Bigscreen Beyond uses dear imgui for their driver utility interface."
@AlpyneDreams: "We recently updated our in-engine realtime lighting editor to use ImGui for the Source Engine branch used by Portal 2: Desolation. This replaces the old VGUI light editor which was somewhat cumbersome to use. We also support placing area lights and projected cubemap light probes."
@kyle-sylvestre: MightyGrep is a simple file searching application
preview.mp4
@r5r6ty "I use imgui for my Unity game development a video
use this repo: Uimgui
@werwolf: "I've posted some pictures here before but it's been close to 3 years of development now and A LOT has change since.
Here's some new pictures of ImHex, the Hex Editor / Reverse Engineering Suite I've been developing using ImGui"
https://imhex.werwolv.net / https://web.imhex.werwolv.net
Data Information view displaying various stats about the file
@arabine "A Story Editor to build stories for a home made story teller device (for children). "
https://github.com/arabine/open-story-teller / https://www.openstoryteller.org
@foxnne "I posted a much older version of this, but this is my pixel art project, Pixi."
@xhighway999 "Again just another game engine called ITERO for our inhouse project"
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 Sponsors page.