v1.89.5
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:
- 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.
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()
usingImGuiTreeNodeFlags_AllowItemOverlap
on a touch-screen. - Fixed tapping on
Selectable()
usingImGuiSelectableFlags_AllowItemOverlap
on a touch-screen. - Fixed tapping on
TableHeader()
on a touch-screen.
- IO: Added
io.AddMouseSourceEvent()
andImGuiMouseSource
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 passingSDL_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 asSDL_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()
orIsItemXXX()
functions after aDockSpace()
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"
Spotted in Counter-Strike 2 dev video.
Spotted in Halo Infinite dev talk (from https://www.gdcvault.com/play/1027689/Thinking-Like-Players-How-Halo)
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"
@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
@Chaojimengnan: "A video progress bar"
@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." [...]
@inobelar "C++ web app (yep - emscripten, wasm, webgl), ImGui-based interactive Yoga Playground."
Web Demo (sources)