1.89.3: Release cadence intensifies!
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:
- Blizzard
- Supercell
- G3DVu
- Asobo Studio
- And 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
- Renamed SDL2 backend files (+ Added experimental SDL3 backend).
- Fixed wrapping text regression from previous versions.
- Added SeparatorText().
- Lifted limit on table columns count.
- Fixed to horizontal scrolling wheel in many backends.
- More Emscripten examples + fixes for Emscripten.
- Many other tweaks/fixes.
Changes
This is a followup to v1.89, v1.89.1 and v1.89.2. 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:
- Backends+Examples: SDL2: renamed all unnumbered references to "sdl" to "sdl2". This is in prevision for the future release of SDL3 and its associated backend. (#6146)
imgui_impl_sdl.cpp
->imgui_impl_sdl2.cpp
imgui_impl_sdl.h
->imgui_impl_sdl2.h
example_sdl_xxxx/
->example_sdl2_xxxx/
(folders and projects)
Other Changes:
- SeparatorText(): Added
SeparatorText()
widget. (#1643) [@phed, @ocornut]- Added to style:
float SeparatorTextBorderSize
. - Added to style:
ImVec2 SeparatorTextAlign
,ImVec2 SeparatorTextPadding
.
- Added to style:
- Tables: Raised max Columns count from 64 to 512. The previous limit was due to using 64-bit integers but we moved to bits-array and tweaked the system enough to ensure no performance loss. (#6094, #5305, #4876, #3572)
- Tables: Solved an ID conflict issue with multiple-instances of a same table, due to how unique table instance id was generated. (#6140) [@ocornut, @rodrigorc]
- Inputs, Scrolling: Made horizontal scroll wheel and horizontal scroll direction consistent across backends/os. (#4019, #6096, #1463) [@PathogenDavid, @ocornut, @rokups]
- Clarified that 'wheel_y > 0.0f' scrolls Up, 'wheel_y > 0.0f' scrolls Down.
- Clarified that 'wheel_x > 0.0f' scrolls Left, 'wheel_x > 0.0f' scrolls Right.
- Backends: Fixed horizontal scroll direction for Win32 and SDL backends. (#4019)
- Shift+WheelY support on non-OSX machines was already correct. (#2424, #1463) (whereas on OSX machines Shift+WheelY turns into WheelX at the OS level).
- If you use a custom backend, you should verify horizontal wheel direction.
- Axises are flipped by OSX for mouse & touch-pad when 'Natural Scrolling' is on.
- Axises are flipped by Windows for touch-pad when 'Settings->Touchpad->Down motion scrolls up' is on.
- You can use
Demo->Tools->Debug Log->IO
to visualize values submitted to Dear ImGui.
- Known issues remaining with Emscripten:
- The magnitude of wheeling values on Emscripten was improved but isn't perfect. (#6096)
- When running the Emscripten app on a Mac with a mouse, SHIFT+WheelY doesn't turn into WheelX. This is because we don't know that we are running on Mac and apply our own Shift+swapping on top of OSX' own swapping, so wheel axises are swapped twice. Emscripten apps may need to find a way to detect this and set
io.ConfigMacOSXBehaviors
manually (if you know a way let us know!), or offer the "OSX-style behavior" option to their user.
- Window: Avoid rendering shapes for hidden resize grips.
- Text: Fixed layouting of wrapped-text block skipping successive empty lines, regression from the fix in 1.89.2. (#5720, #5919)
- Text: Fixed clipping of single-character "..." ellipsis (U+2026 or U+0085) when font is scaled. Scaling wasn't taken into account, leading to ellipsis character straying slightly out of its expected boundaries. (#2775)
- Text: Tweaked rendering of three-dots "..." ellipsis variant. (#2775, #4269)
- InputText: Added support for Ctrl+Delete to delete up to end-of-word. (Not adding Super+Delete to delete to up to end-of-line on OSX, as OSX doesn't have it) (#6067) [@ajweeks]
- InputText: On OSX, inhibit usage of Alt key to toggle menu when active (used for work skip).
- Menus: Fixed layout of
MenuItem()
/BeginMenu()
when label contains a '\n'. (#6116) [@imkcy9] - ColorEdit, ColorPicker: Fixed hue/saturation preservation logic from interfering with the displayed value (but not stored value) of others widgets instances. (#6155)
- PlotHistogram, PlotLines: Passing negative sizes honor alignment like other widgets.
- Combo: Allow
SetNextWindowSize()
to alter combo popup size. (#6130) - Fonts: Assert that in each
GlyphRanges[]
pairs first is <= second. - ImDrawList: Added missing early-out in
AddPolyline()
andAddConvexPolyFilled()
when color alpha is zero. - Misc: Most text functions treat
"%s"
as a shortcut to no-formatting. (#3466) - Misc: Tolerate zero delta-time under Emscripten as backends are imprecise in their values for
io.DeltaTime
, and browser features such asprivacy.resistFingerprinting=true
can exacerbate that. (#6114, #3644) - Backends: OSX: Fixed scroll/wheel scaling for devices emitting events with
hasPreciseScrollingDeltas==false
(e.g. non-Apple mices). - Backends: Win32: flipping
WM_MOUSEHWHEEL
horizontal value to match other backends and offer consistent horizontal scrolling direction. (#4019) - Backends: SDL2: flipping
SDL_MOUSEWHEEL
horizontal value to match other backends and offer consistent horizontal scrolling direction. (#4019) - Backends: SDL2: Removed
SDL_MOUSEWHEEL
value clamping. (#4019, #6096, #6081) - Backends: SDL2: Added support for SDL 2.0.18+
preciseX
/preciseY
mouse wheel data for smooth scrolling as reported by SDL. (#4019, #6096) - Backends: SDL2: Avoid calling
SDL_SetCursor()
when cursor has not changed, as the function is surprisingly costly on Mac with latest SDL (already fixed in SDL latest trunk). (#6113) - Backends: SDL2: Implement IME handler to call
SDL_SetTextInputRect()
/SDL_StartTextInput()
. It will only works with SDL 2.0.18+ if your code calls 'SDL_SetHint(SDL_HINT_IME_SHOW_UI, "1")' prior to callingSDL_CreateWindow()
. Updated all examples accordingly. (#6071, #1953) - Backends: SDL3: Added experimental
imgui_impl_sdl3.cpp
backend. SDL 3.0.0 has not yet been released, so it is possible that its specs/api will change before release. This backend is provided as a convenience for early adopters etc. We don't recommend
switching to SDL3 before it is released. (#6146) [@dovker, @ocornut] - Backends: GLFW: Registering custom low-level mouse wheel handler to get more accurate scrolling impulses on Emscripten. (#4019, #6096) [@ocornut, @wolfpld, @tolopolarity]
- Backends: GLFW: Added
ImGui_ImplGlfw_SetCallbacksChainForAllWindows()
to instruct backend to chain callbacks even for secondary viewports/windows. User callbacks may need to test the 'window' parameter. (#6142) - Backends: OpenGL3: Fixed GL loader compatibility with 2.x profiles. (#6154, #4445, #3530) [@grauw]
- Backends: WebGPU: Fixed building for latest WebGPU specs (remove implicit layout generation). (#6117, #4116, #3632) [@tonygrue, @bfierz]
- Examples: refactored SDL2+GL and GLFW+GL examples to compile with Emscripten. (#2492, #2494, #3699, #3705) [@ocornut, @nicolasnoble] The dedicated example_emscripten_opengl3/ has been removed.
- Examples: Added SDL3+GL experimental example. (#6146)
- Examples: Win32: Fixed examples using
RegisterClassW()
since 1.89 to also callDefWindowProcW()
instead ofDefWindowProc()
so that title text are correctly converted when application is compiled without/DUNICODE
. (#5725, #5961, #5975) [@markreidvfx] - Examples: SDL2+SDL_Renderer: Added call to
SDL_RenderSetScale()
to fix display on a Retina display (albeit lower-res as our other unmodified examples). (#6121, #6065, #5931).
Changes from 1.89.2 to 1.89.3 related to the docking branch (multi-viewport and docking features) include:
- Backends: GLFW: Handle unsupported glfwGetVideoMode() for Emscripten. (#6096)
New exciting projects!
Note the release of Dear ImGui Bundle by @pthom
https://github.com/pthom/imgui_bundle
"Dear ImGui Bundle is a bundle for Dear ImGui, including various powerful libraries from its ecosystem. It enables to easily create ImGui applications in C++ and Python, under Windows, macOS, and Linux. It is aimed at application developers, researchers, and beginner developers who want to quickly get started."
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...
Application for controlling a custom GoTo-AltAz-Mount for my telescope by @PlanEl180223
"Here is a preview of what the user interface of my application looks like. It uses an OpenGL backend, and C++. Don't get distracted by the weird descriptions on the individual targets, I am still parsing them wrong."
SpriteMancer by @Codemanu
https://spritemancer.com
LogToGraph by @aiekick
"At job, I needed a tool for display Numerical Signal based logs to graph curve, for easy analyze. The tool is called LogToGraph So generic, since the parsing of a log file is done by a lua script. so easy modifable by a user. In more than Dear ImGui, Thanks to ImPlot for his incredible graph possibilites."
@Jacckii : "My practical part of my thesis called "Demonstration of Signal digitization". It uses dear ImGui and ImPlot. It has a Web assembly version that is hosted on GitHub Pages"
https://github.com/Jacckii/SignalDigitization
Dear ImGui Bundle by @pthom
https://github.com/pthom/imgui_bundle
Senos by @RuiVarela
https://github.com/RuiVarela/Senos
"Senos is sound exploration tool from a developer point of view. It is very lightweight, can be used as a toy or a minimal song composer."_
Flower (engine) by @qiutang98
https://github.com/qiutang98/flower
"I love imgui, just need to write some simple code then i can get a beautiful professional ui layout. With imgui‘s help, i can start to write my custom engine what i want to do a long time ago."
LDtk viewer
@Madour: "A toy project I created a while ago to learn ImGui. Very convenient lib, and the customization is also very easy."
erhe by @tksuoran
https://github.com/tksuoran/erhe