Skip to content

v1.89.5

Compare
Choose a tag to compare
@ocornut ocornut released this 13 Apr 14:33
· 596 commits to master since this release

1.89.5: April 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/
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

Changes

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

All Changes:

  • InputText: Reworked prev/next-word behavior to more closely match Visual Studio text editor. Include '.' as a delimiter and alter varying subtle behavior with how blanks and separators are treated when skipping words. (#6067) [@ajweeks]
  • InputText: Fixed a tricky edge case, ensuring value is always written back on the frame where IsItemDeactivated() returns true, in order to allow usage without user retaining underlying data. While we don't really want to encourage user not retaining underlying data, in the absence of a "late commit" behavior/flag we understand it may be desirable to take advantage of this trick. (#4714)
  • Drag, Sliders: Fixed parsing of text input when '+' or '#' format flags are used in the format string. (#6259) [@idbrii]
  • Nav: Made Ctrl+Tab/Ctrl+Shift+Tab windowing register ownership to held modifier so it doesn't interfere with other code when remapping those actions. (#4828, #3255, #5641)
  • Nav: Made PageUp/PageDown/Home/End navigation also scroll parent windows when necessary to make the target location fully visible (same as e.g. arrow keys).
  • ColorEdit: Fixed shading of S/V triangle in Hue Wheel mode. (#5200, #6254) [@jamesthomasgriffin]
  • TabBar: Tab-bars with ImGuiTabBarFlags_FittingPolicyScroll can be scrolled with horizontal mouse-wheel (or Shift + WheelY). (#2702)
  • Rendering: Using adaptive tessellation for RadioButton, ColorEdit preview circles, Windows Close and Collapse Buttons.
  • ButtonBehavior: Fixed an edge case where changing widget type/behavior while active and using same id could lead to an assert. (#6304)
  • Misc: Fixed ImVec2 operator[] violating aliasing rules causing issue with Intel C++ compiler. (#6272) [@BayesBug]
  • IO: Input queue trickling adjustment for touch screens. Fixes single-tapping to move simulated mouse and immediately click on a widget that is using the ImGuiButtonFlags_AllowItemOverlap policy. (#2702, #4921)
    • This only works if the backend can distinguish TouchScreen vs Mouse. See 'Demo->Tools->Metrics->Inputs->Mouse Source' to verify.
    • Fixed tapping on BeginTabItem() on a touch-screen. (#2702)
    • Fixed tapping on CollapsingHeader() with a close button on a touch-screen.
    • Fixed tapping on TreeNode() using ImGuiTreeNodeFlags_AllowItemOverlap on a touch-screen.
    • Fixed tapping on Selectable() using ImGuiSelectableFlags_AllowItemOverlap on a touch-screen.
    • Fixed tapping on TableHeader() on a touch-screen.
  • IO: Added io.AddMouseSourceEvent() and ImGuiMouseSource enum. This is to allow backend to specify actual event source between Mouse/TouchScreen/Pen. (#2702, #2334, #2372, #3453, #5693)
  • IO: Fixed support for calling io.AddXXXX functions from inactive context (wrongly advertised as supported in 1.89.4). (#6199, #6256, #5856) [@cfillion]
  • Backends: OpenGL3: Fixed GL loader crash when GL_VERSION returns NULL. (#6154, #4445, #3530)
  • Backends: OpenGL3: Properly restoring "no shader program bound" if it was the case prior to running the rendering function. (#6267, #6220, #6224) [@BrunoLevy]
  • Backends: Win32: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. (#2334, #2702)
  • Backends: SDL2/SDL3: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen. This is relying on SDL passing SDL_TOUCH_MOUSEID in the event's 'which' field. (#2334, #2702)
  • Backends: SDL2/SDL3: Avoid calling SDL_StartTextInput()/SDL_StopTextInput() as they actually block text input input and don't only pertain to IME. It's unclear exactly what their relation is to other IME function such as SDL_SetTextInputRect(). (#6306, #6071, #1953)
  • Backends: GLFW: Added support on Win32 only for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. (#2334, #2702)
  • Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick]
  • Backends: Android: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. (#6315) [@PathogenDavid]
  • Backends: OSX: Added support for io.AddMouseSourceEvent() to discriminate Mouse/Pen. (#6314) [@PathogenDavid]
  • Backends: WebGPU: Align buffers. Use WGSL shaders instead of SPIR-V. Add gamma uniform. (#6188) [@eliemichel]
  • Backends: WebGPU: Reorganized to store data in io.BackendRendererUserData like other backends.
  • Examples: Vulkan: Fixed validation errors with newer VulkanSDK by explicitly querying and enabling "VK_KHR_get_physical_device_properties2", "VK_KHR_portability_enumeration", and
    VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR. (#6109, #6172, #6101)
  • Examples: Windows: Added misc/debuggers/imgui.natstepfilter file to all Visual Studio projects, now that VS 2022 17.6 Preview 2 support adding Debug Step Filter spec files into projects.
  • Examples: SDL3: Updated for latest WIP SDL3 branch. (#6243)
  • TestSuite: Added variety of new regression tests and improved/amended existing ones
    in imgui_test_engine/ repository. [@PathogenDavid, @ocornut]

Changes from 1.89.4 to 1.89.5 related to the docking branch (multi-viewport and docking features) include:

  • Viewports: Setting focus from Platform/OS (e.g. via decoration, or Alt-Tab) sets corresponding focus at Dear ImGui level (generally last focused window in the viewport). (#6299)
  • Docking: Fixed using GetItemXXX() or IsItemXXX() functions after a DockSpace() call. (#6217)
  • Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick]
  • Backends: GLFW: Fixed Emscripten erroneously enabling multi-viewport support, leading to assert. (#5683)
  • Backends: SDL2/SDL3: Fixed IME text input rectangle position with viewports. (#6071, #1953)
  • Backends: SDL3: Fixed for compilation with multi-viewports. (#6255) [@P3RK4N]

Changes from 1.89.4 to 1.89.5 related to the range-select branch: (aimed to finish, apply some api changes and merge in 1.90):

  • RangeSelect/MultiSelect: Fixed 'Enter' to never alter selection (unlike Space).
  • RangeSelect/MultiSelect: Fixed needing to set RangeSrcPassedBy when not using clipper.
  • RangeSelect/MultiSelect: Added ImGuiMultiSelectFlags_ClearOnClickWindowVoid.
  • RangeSelect/MultiSelect: Added ImGuiMultiSelectFlags_ClearOnEscape.

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

Gallery

Below a selection of screenshots from Gallery threads...

thpp by @rodan:
https://github.com/rodan/thpp
"I wanted to try out Dear ImGui, so I wrote a thermal image processing software around it. I really loved every minute, thanks!"
"The rendering loop is event-driven (without poking ImGui's code) - based on great work done in #2749"

thpp_realsr_interpolation

Spotted in Counter-Strike 2 dev video.
image

Spotted in Halo Infinite dev talk (from https://www.gdcvault.com/play/1027689/Thinking-Like-Players-How-Halo)
halo infinite-02

In-house AI System by @abvadabra
"In-house AI system, with editor and debugger. Architectured on combination of behaviour trees and hierarhical state machines.
Uses node editor by thedmd, written in java using imgui-java by Spair"

image

@alexeykarnachev: "A little 2d sandbox to play with genetic AI training with several fancy features (dynamic light, pseudo 3d materials, game engine-like editor)"
https://github.com/alexeykarnachev/crossover
image

@Chaojimengnan: "A video progress bar"
2ecdd735-4206-424b-b282-b54e8379e6a8

@vdweller84 "Code editor in an ImGui-powered engine. It has a few more features than ImGuiColorTextEdit and uses Google's RE2 for fast regex tokenization/search. Unlimited Undo/Redo, copy/paste, comment/string blocks, obvious basic functions. Also undo/redo groups words instead of adding/removing single characters." [...]
image

@inobelar "C++ web app (yep - emscripten, wasm, webgl), ImGui-based interactive Yoga Playground."
Web Demo (sources)
image


See previous releases details.