Skip to content

v1.89.4

Compare
Choose a tag to compare
@ocornut ocornut released this 14 Mar 15:39
· 1230 commits to master since this release

1.89.4: Release cadence continues!

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.org/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! ❤️

Special thanks to @PathogenDavid and @GamingMinds-DanielC for their help with github answers.

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.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

TL;DR

  • Nav: Tab key goes through every items (when keyboard navigation is active).
  • Nav: Enter key works to activate most items (when keyboard navigation is active).
  • Added return value to BeginTooltip().
  • Examples: Activated keyboard and gamepad navigation by default in all examples.
  • Various other fixes related to: Nav, Tables, Drag and Drop, InputText.
  • Various improvements to Win32, SDL2, SDL3, GLFW backends.
  • Added a Debug Tools to facilitate testing user-code testing Begin/BeginChild return value.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2 and v1.89.3. 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.

Breaking Changes:

  • Renamed PushAllowKeyboardFocus()/PopAllowKeyboardFocus() to PushTabStop()/PopTabStop(). Kept inline redirection functions (will obsolete).
  • Moved the optional "courtesy maths operators" implementation from imgui_internal.h in imgui.h. Even though we encourage using your own maths types and operators by setting up IM_VEC2_CLASS_EXTRA, it has been frequently requested by people to use our own. We had an opt-in define which was previously fulfilled by imgui_internal.h. It is now fulfilled by imgui.h. (#6164, #6137, #5966, #2832)
    • OK: #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui.h" / #include "imgui_internal.h"
    • Error: #include "imgui.h" / #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui_internal.h"
    • Added a dedicated compile-time check message to help diagnose this.
  • Tooltips: Added 'bool' return value to BeginTooltip() for API consistency. Please only submit contents and call EndTooltip() if BeginTooltip() returns true. In reality the function will currently always return true, but further changes down the line may change this, best to clarify API sooner. Updated demo code accordingly.
  • Commented out redirecting enums/functions names that were marked obsolete two years ago:
    • ImGuiSliderFlags_ClampOnInput -> use ImGuiSliderFlags_AlwaysClamp
    • ImGuiInputTextFlags_AlwaysInsertMode -> use ImGuiInputTextFlags_AlwaysOverwrite
    • ImDrawList::AddBezierCurve() -> use ImDrawList::AddBezierCubic()
    • ImDrawList::PathBezierCurveTo() -> use ImDrawList::PathBezierCubicCurveTo()

Other Changes:

  • Nav: Tabbing now cycles through all items when ImGuiConfigFlags_NavEnableKeyboard is set. (#3092, #5759, #787)
    While this was generally desired and requested by many, note that its addition means that some types of UI may become more fastidious to use TAB key with, if the navigation cursor cycles through too many items. You can mark items items as not tab-spottable:
    • Public API: PushTabStop(false) / PopTabStop().
    • Internal: PushItemFlag(ImGuiItemFlags_NoTabStop, true);.
    • Internal: Directly pass ImGuiItemFlags_NoTabStop to ItemAdd() for custom widgets.
  • Nav: Tabbing/Shift-Tabbing can more reliably be used to step out of an item that is not tab-stoppable. (#3092, #5759, #787)
  • Nav: Made Enter key submit the same type of Activation event as Space key, allowing to press buttons with Enter. (#5606)
    (Enter emulates a "prefer text input" activation vs. Space emulates a "prefer tweak" activation which is to closer to gamepad controls).
  • Nav: Fixed an issue with Gamepad navigation when the movement lead to a scroll and frame time > repeat rate. Triggering a new move request on the same frame as a move result lead to an incorrect calculation and loss of navigation id. (#6171)
  • Nav: Fixed SetItemDefaultFocus() from not scrolling when item is partially visible. (#2814, #2812) [@DomGries]
  • Tables: Fixed an issue where user's Y cursor movement within a hidden column would have side-effects.
  • IO: Lifted constraint to call io.AddEventXXX functions from current context. (#4921, #5856, #6199)
  • InputText: Fixed not being able to use CTRL+Tab while an InputText() using Tab for completion or text data is active (regression from 1.89).
  • Drag and Drop: Fixed handling of overlapping targets when smaller one is submitted before and can accept the same data type. (#6183).
  • Drag and Drop: Clear drag and drop state as soon as delivery is accepted in order to avoid interferences. (#5817, #6183) [@DimaKoltun]
  • Debug Tools: Added io.ConfigDebugBeginReturnValueOnce / io.ConfigDebugBeginReturnValueLoop options to simulate Begin/BeginChild returning false to facilitate debugging user behavior.
  • Demo: Updated to test return value of BeginTooltip().
  • Backends: OpenGL3: Fixed restoration of a potentially deleted OpenGL program. If an active program was pending deletion, attempting to restore it would error. (#6220, #6224) [@Cyphall]
  • Backends: Win32: Use WM_NCMOUSEMOVE / WM_NCMOUSELEAVE to track mouse positions over non-client area (e.g. OS decorations) when app is not focused. (#6045, #6162)
  • Backends: SDL2, SDL3: Accept SDL_GetPerformanceCounter() not returning a monotonically increasing value. (#6189, #6114, #3644) [@adamkewley]
  • Backends: GLFW: Avoid using glfwGetError() and glfwGetGamepadState() on Emscripten, which recently updated its GLFW emulation layer to GLFW 3.3 without supporting those. (#6240)
  • Examples: Android: Fixed example build for Gradle 8. (#6229, #6227) [@duddel]
  • Examples: Updated all examples application to enable ImGuiConfigFlags_NavEnableKeyboard and ImGuiConfigFlags_NavEnableGamepad by default. (#787)
  • Internals: Misc tweaks to facilitate applying an explicit-context patch. (#5856) [@Dragnalith]

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
https://github.com/dearimgui/dear_bindings

Also note the release of Dear ImGui Bundle by @pthom
https://github.com/pthom/imgui_bundle

Gallery

Below a selection of screenshots from Gallery threads...

Rat GUI
The most convenient simulation tool for magnet engineers
https://rat-gui.ch/index.html
image

RTSA (Real-Time Spectrum Analyzer) Suite
https://aaronia.com/software/rtsa-suite/
picture21_2_full

Structural Mechanics software ObjectiveFrame
https://github.com/jonaslindemann/objectiveframe
2023-02-18 00_44_48-ObjectiveFrame

OpenSim Creator
https://github.com/ComputationalBiomechanicsLab/opensim-creator
OpenSim Creator

Fun thing, Quake 3 re-release using a Dear ImGui underlying logic for in-game menus:
image

Astro Duel 2
https://store.steampowered.com/app/655350/Astro_Duel_2/)
rustym: "Dear ImGui has been just instrumental to creating Astro Duel 2. We’ve built debug menus, inspectors, editors and production tools all atop this incredible open source framework. What an industry gem!"
Needle


See previous releases details.