1.89.8: August 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, 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/
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! ❤️
Ongoing work on Dear ImGui is currently financially supported by:
- Blizzard
- Supercell
- Planestate Software
- Pocketwatch Games
- G3DVu
- Terrible Toybox
- Asobo Studio
- 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. We can do regular B2B Invoicing.
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, v1.89.6, v1.89.7. 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 about 600 lines of changelog between 1.89 and 1.89.8.
Breaking Changes:
- IO: Obsoleted
io.ClearInputCharacters()
(added in 1.47) as it now ambiguous and often incorrect/misleading considering the existence of a higher-level input queue. This is automatically cleared byio.ClearInputsKeys()
. (#4921) - ImDrawData:
CmdLists[]
array is now owned, changed fromImDrawList**
toImVector<ImDrawList*>
. Majority of users shouldn't be affected, but you cannot compare to NULL nor reassign manually anymore. Instead useAddDrawList()
. Allocation count are identical. (#6406, #4879, #1878)
Other Changes:
- Fonts:
ImFontConfig::OversampleH
now defaults to 2 instead of 3, since the quality increase is largely minimal. - Fonts, imgui_freetype: Added support to render OpenType SVG fonts using lunasvg. Requires enabling
IMGUI_ENABLE_FREETYPE_LUNASVG
along withIMGUI_ENABLE_FREETYPE
, and providing headers/libraries for lunasvg. (#6591, #6607) [@sakiodre] ImDrawData: CmdLists[]
array is now an ImVector<> owned by ImDrawData rather than a pointer to internal state.- This makes it easier for user to create their own or append to an existing draw data. Added a
ImDrawData::AddDrawList()
helper function to do that. (#6406, #4879, #1878) - This makes it easier to perform a deep-swap instead of a deep-copy, as array ownership is now clear. (#6597, #6475, #6167, #5776, #5109, #4763, #3515, #1860)
- Syntax and allocation count are otherwise identical.
- This makes it easier for user to create their own or append to an existing draw data. Added a
- Fixed CTRL+Tab dimming background assert when target window has a callback in the last
ImDrawCmd
. (#4857, #5937) - IsItemHovered: Fixed
ImGuiHoveredFlags_ForTooltip
for Keyboard/Gamepad navigation, got broken prior to 1.89.7 due to an unrelated change making flags conflict. (#6622, #1485) - InputText: Fixed a case where deactivation frame would write to underlying buffer or call
CallbackResize
although unnecessary, in a frame where the return value was false. - Tables: fixed
GetContentRegionAvail().y
report not taking account of lower cell padding or of usingImGuiTableFlags_NoHostExtendY
. Not taking it into account would make the idiom of creating vertically bottom-aligned content (e.g. a child window) inside a table make the parent window erroneously have a scrollbar. (#6619) - Tables: fixed calculation of multi-instance shared decoration/scrollbar width of scrolling tables, to avoid flickering width variation when resizing down a table hosting a child window. (#5920, #6619)
- Scrollbar: layout needs to take account of window border size, so a border size will slightly reduce scrollbar size. Generally we tried to make it that window border size has no incidence on layout but this can't work with thick borders. (#2522)
- IO: Added
io.ClearEventsQueue()
to clear incoming inputs events. (#4921)
May be useful in conjunction withio.ClearInputsKeys()
if you need to clear both current inputs state and queued events (e.g. when using blocking native dialogs such as Windows's ::MessageBox() or ::GetOpenFileName()). - IO: Changed
io.ClearInputsKeys()
specs to also clear current frame character buffer (what now obsoletedio.ClearInputCharacters()
did), as this is effectively the desirable behavior. - Misc: Added
IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION
config macro to disable stb_sprintf implementation when using IMGUI_USE_STB_SPRINTF. (#6626) [@septag] - Misc: Avoid stb_textedit.h reincluding string.h while in a namespace, which messes up with building with Clang Modules. (#6653, #4791) [@JohelEGP]
- Demo: Better showcase use of
SetNextItemAllowOverlap()
. (#6574, #6512, #3909, #517) - Demo: Showcase a few more
InputText()
flags. - Backends: Made all backends sources files support global
IMGUI_DISABLE
. (#6601) - Backends: GLFW: Revert ignoring mouse data on
GLFW_CURSOR_DISABLED
as it can be used differently. User may setImGuiConfigFlags_NoMouse
if desired. (#5625, #6609) [@scorpion-26] - Backends: WebGPU: Update for changes in Dawn. (#6602, #6188) [@williamhCode]
- Examples: Vulkan: Creating minimal descriptor pools to fit only what is needed by example. (#6642) [@SaschaWillem]
Changes from 1.89.7 to 1.89.8 related to the docking branch (multi-viewport and docking features):
- Docking, Style: resizing separators use same colors as window borders (
ImGuiCol_Border
) for consistency. With default styles it doesn't make a big difference. (#2522) [@rmitton] In the future if we promote using thick value for inner/outer docking padding we may need to introduce new colors for it. - Docking: added
style.DockingSeparatorSize
,ImGuiStyleVar_DockingSeparatorSize
. Now also scaled bystyle.ScaleAllSizes()
. (#3481, #4721, #2522) [@PossiblyAShrub, @wobbier] - Docking: fixed rendering of docked-window scrollbar above outer border. (#2522)
Changes from 1.89.7 to 1.89.8 related to the range-select branch:
This is hopefully the last batch of breaking changes before merging this in 1.90:
- RangeSelect/MultiSelect: (BREAKING)
BeginMultiSelect()
doesn't need two last params maintained by users. Moving some storage from user to core. - RangeSelect/MultiSelect: Added fields in
ImGuiMultiSelectIO
to facilitate implementing deletion while providing correct scrolling/focus. - RangeSelect/MultiSelect: Added multi-select deletion 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...
@ThFriedrich: riCOM is a software used in electron microscopy. It interfaces with direct electron cameras for the real-time creation of atomic resolution microscopy images from 4-dimensional data.
@msnh2012: A custom application. (TCP debugger)
@sakiodre : I'm developing a ghidra decompiler plugin [...] ended up writing my own editor from scratch.
@FuXiii: Online Shader Compiler
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