Skip to content

v1.89.8

Compare
Choose a tag to compare
@ocornut ocornut released this 01 Aug 11:16
· 1096 commits to master since this release

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:

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 by io.ClearInputsKeys(). (#4921)
  • ImDrawData: CmdLists[] array is now owned, changed from ImDrawList** to ImVector<ImDrawList*>. Majority of users shouldn't be affected, but you cannot compare to NULL nor reassign manually anymore. Instead use AddDrawList(). 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 with IMGUI_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.
  • 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 using ImGuiTableFlags_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 with io.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 obsoleted io.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 set ImGuiConfigFlags_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 by style.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.

riCOM

@msnh2012: A custom application. (TCP debugger)
tcp debugger

Remedy's Northlight Engine
image

@sakiodre : I'm developing a ghidra decompiler plugin [...] ended up writing my own editor from scratch.

@FuXiii: Online Shader Compiler
9BJ44G8(5E3}PIHWNZGQ9JV


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