1.89.6: May release! (*)
(*) Technically it is still May!
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, sometimes randomly clipped by GitHub..
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
FAQ: https://www.dearimgui.com/faq/
Issues: https://github.com/ocornut/imgui/issues
Did you know? We have a Wiki!
It has sections such as this Useful Extensions Gallery! 👌
Thank you! ❤️
Ongoing work on Dear ImGui is currently financially supported by:
- Blizzard
- Supercell
- G3DVu
- Asobo Studio
- Tuxedo Labs
- And more Individual contributions.
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.
Dear ImGui is funded by your contributions and needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.
Changes
This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5. 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.
I have been stubbornly deferring tagging 1.90 for while because I wanted to include the range-select feature in it, but it's not done... But there are nearly 500 lines of changelog between 1.89 and 1.89.6.
Breaking Changes:
- Clipper: Commented out obsolete redirection constructor which was marked obsolete in 1.79:
ImGuiListClipper(int items_count, float items_height)
--> UseImGuiListClipper() + clipper.Begin()
.
- Clipper: Renamed
ForceDisplayRangeByIndices()
toIncludeRangeByIndices()
, kept inline redirection function (introduced in 1.86 and rarely used). (#6424, #3841) - Commented out obsolete/redirecting functions that were marked obsolete more than two years ago:
ListBoxHeader()
-> useBeginListBox()
ListBoxFooter()
-> useEndListBox()
- Note how two variants of
ListBoxHeader()
existed. Check commented versions in imgui.h for refeence.
- Backends: SDL_Renderer: Renamed 'imgui_impl_sdlrenderer.h/cpp' to 'imgui_impl_sdlrenderer2.h/cpp',
in order to accomodate for upcoming SDL3 and change in its SDL_Renderer API. (#6286) - Backends: GLUT: Removed call to
ImGui::NewFrame()
fromImGui_ImplGLUT_NewFrame()
. It needs to be called from the main app loop, like with every other backends. (#6337) [@GereonV]
Other Changes:
- Window: Fixed resizing from upper border when
io.ConfigWindowsMoveFromTitleBarOnly
is set. (#6390) - Tables: Fixed a small miscalculation in
TableHeader()
leading to an empty tooltip showing when a sorting column has no visible name. (#6342) [@lukaasm] - Tables: Fixed command merging when compiling with VS2013 (one array on stack was not initialized on VS2013. Unsure if due to a bug or UB/standard conformance). (#6377)
- InputText: Avoid setting
io.WantTextInputNextFrame
during the deactivation frame. (#6341) [@lukaasm] - Drag, Sliders: if the format string doesn't contain any
%
, CTRL+Click to input text will use the default format specifier for the type. Allow display/input of raw value when using "enums" patterns (display label instead of value) + allow using when value is hidden. (#6405) - Nav: Record/restore preferred position on each given axis after a movement on that axis, then score movement on the other axis using this as a bias. This allows going up and down between e.g. a large header spanning horizontal space and three-ways-columns, landing on the same column as before.
- Nav: Fixed navigation within tables/columns where item boundaries goes beyond columns limits, unclipped bounding boxes would interfere with other columns. (#2221) [@zzzyap, @ocornut]
- Nav: Fixed CTRL+Tab into a root window with only childs with
_NavFlattened
flags erroneously initializing default nav layer to menu layer. - Menus: Fixed an issue when opening a menu hierarchy in a given menu-bar would allow opening another via simple hovering. (#3496, #4797)
- Fonts: Fixed crash when merging fonts and the first font has no valid glyph. (#6446) [@JaedanC]
- Fonts: Fixed crash when manually specifying an EllipsisChar that doesn't exist. (#6480)
- Misc: Added
ImVec2
unary minus operator. (#6368) [@koostosh] - Debug Tools: Debug Log: Fixed not parsing 0xXXXXXXXX values for geo-locating on mouse hover hover when the identifier is at the end of the line. (#5855)
- Debug Tools: Added
io.ConfigDebugIgnoreFocusLoss
option to disableio.AddFocusEvent(false)
handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data. (#4388, #4921) - Backends: Clear bits sets
io.BackendFlags
on backendShutdown()
. (#6334, #6335] [@GereonV]
Potentially this would facilitate switching runtime backend mid-session. - Backends: Win32:
Added ImGui_ImplWin32_InitForOpenGL()
to facilitate combining raw Win32/Winapi with OpenGL. (#3218) - Backends: OpenGL3: Restore front and back polygon mode separately when supported by context (Desktop 3.0, 3.1, or 3.2+ with compat bit). (#6333) [@GereonV]
- Backends: OpenGL3: Support for
glBindSampler()
backup/restore on ES3. (#6375) [@jsm174] - Backends: SDL3: Fixed build on Emscripten/iOS/Android. (#6391) [@jo-codegirl]
- Backends: SDLRenderer3: Added SDL_Renderer for SDL3 backend. (#6286) [@Carcons, @ocornut]
- Examples: Added native Win32+OpenGL3 example. We don't recommend using this setup but we provide it for completeness. (#3218, #5170, #6086, #2772, #2600, #2359, #2022, #1553) [@learn-more]
- Examples: Vulkan: Use integrated GPU if nothing else is available. (#6359) [@kimidaisuki22]
- Examples: DX9, DX10, DX11: Queue framebuffer resize instead of processing in WM_SIZE, as some drivers tends to only cleanup after existing the native resize modal loop. (#6374)
- Examples: Added SDL3+SDL_Renderer example. (#6286)
- Examples: Updated all Visual Studio projects and batches to use /utf-8 argument.
Changes from 1.89.5 to 1.89.6 related to the docking branch (multi-viewport and docking features) include:
- Viewports: Fixed platform-side focus (e.g. Alt+Tab) from leading to accidental closure of Modal windows. Regression from 1.89.5. (#6357, #6299)
- Viewports: Fixed erroneous popup closure on closing a previous popup. (#6462, #6299)
- Viewports: Fixed loss of imgui-side focus when dragging a secondary viewport back in main viewport, due to platform-side handling changes. Regression from 1.89.5 (#6299)
- Viewports: Added
void* ImGuiPlatformMonitor::PlatformHandle
field (backend-dependant), for usage by user code. - Backends: GLFW: Preserve monitor list when there are no monitor, may briefly happen when recovering from macOS sleeping mode. (#5683) [@Guistac]
- Backends: SDL2: Update monitor list when receiving a display event. (#6348) Note however that SDL2 currently doesn't have an event for a DPI/Scaling change, so monitor data won't be updated in this situation.
- Backends: SDL3: Update monitor list when receiving a display event. (#6348)
Changes from 1.89.5 to 1.89.6 related to the range-select branch: (aimed to finish, apply some api changes and merge in 1.90):
- RangeSelect/MultiSelect: (BREAKING) Renamed
ImGuiMultiSelectData
toImGuiMultiSelectIO
. - RangeSelect/MultiSelect: Made
SetNextItemSelectionData()
optional to allow disjoint selection (e.g. with a CollapsingHeader between items). - RangeSelect/MultiSelect: Enter can alter selection if current item is not selected.
- RangeSelect/MultiSelect: Removed DragDropActive/preserve_existing_selection logic which seems unused + comments.
- RangeSelect/MultiSelect: Demo tweak. Removed multi-scope from Advanced (too messy), made it a separate mini-demo
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
Gallery
Below a selection of screenshots from Gallery threads...
@DickyQi
"MediaEditor Community (MEC) is a highly integrated and easy to learn application software that can be used to create, edit, and produce high-quality videos. [...] Support complete timeline editing functions, including move, crop, cut, thumbnail preview, scale and delete. [...] Support more flexible and easily blueprint system. Blueprint💫 is represented in the form of nodes, which can handle complex functions through nodes and flows. [...]Support about 30+ built-in media filters and 60+ built-in media fusions [...] Support about 10 video and audio analysis tools [...] Support audio mixing, including mixer, pan, equalizer, gate, limiter and compressor. "
https://github.com/opencodewin/MediaEditor
@kem0x
VPN Client
@aloneguid
Browser profile proxy/redirector
https://www.aloneguid.uk/projects/bt
@XorJS
"git-whale is a Windows tool to synchronize git and github repositories (done in C++ and ImGui)."
https://www.jsr-productions.com/git-whale.html)
Spotted in this GDC Talk for God of War: Ragnarok some uses of Dear ImGui:
https://www.gdcvault.com/play/1028846/Rendering-God-of-War-Ragnark
@psyq321: "DigiCortex v2 (artificial brain simulator) is using Dear ImGui"
@EddieEldridge: _"Some GUI's made using ImGUI (as part of the Engine Overhaul Project for Medieval II: Total War)"
https://youneuoy.github.io/M2TWEOP-library
@Vasili-Sk: "Made configuration app for my CAN-bus devices, never been so easy! Main app on C#"
@Hunternif: "I'm building a 3d editor for procedural generation of blocky buildings, a la Minecraft :)"
@morgongad: "Bit Animation Editor: A pixelart composition tool for game developers (with export to Unreal 5)"
https://store.steampowered.com/app/1370650/Bit__Animation_Editor/
@Froyok: "I have been working with Dear ImGui for a few years now, it's always my goto library to build UI nowamdays (I presume I'm not the only one). I love it and wanted to share my many and sincere thanks for it. It's such a pleasure to work with !"
"I have been using Dear ImGui as the window management and behavior for the UI of a little RPG project. It uses custom drawing, but widget placement, sizing and state is driven by Dear ImGui underneath."
"I'm currently working on my own game engine called Ombre, the debug UI is also driven by Dear ImGui. The editor/in-game UI will likely be using it too." [...] "I like to push as far as I can the customization of the look, without editing the original library (since I use wrappers,notably Python and LUA ones). :)"
Drag Your GAN (technical paper/demo)
https://vcai.mpi-inf.mpg.de/projects/DragGAN/
https://github.com/XingangPan/DragGAN
@AlonsoCerpa: "First of all, thank you very much ocornut and all the contributors for Dear ImGui. I will share with you my simple 3D Game Engine called "Neon Engine" that I implemented with Dear ImGui, OpenGL, glm and Assimp."
Yacht Club Games (Shovel Knight & co) posted about their tech for Mina The Hollower:
Tweet: https://twitter.com/YachtClubGames/status/1662139803541082112
Blog: https://www.yachtclubgames.com/blog/engine-sneak-peek
They are full GIF on the Blog page, some stills: