Skip to content

v1.89.3

Compare
Choose a tag to compare
@ocornut ocornut released this 14 Feb 15:14
· 1267 commits to master since this release

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:

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.

image

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.
  • 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() and AddConvexPolyFilled() 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 as privacy.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 calling SDL_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 call DefWindowProcW() instead of DefWindowProc() 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

Running_Dear_ImGui_Test_Suite_.Fast_Mode.mp4

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."

graph

dark-mode

SpriteMancer by @Codemanu
https://spritemancer.com

SpriteMancer

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."

LogToGraph_Msvc_x64_ynHVEfnFss

@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

preview

Dear ImGui Bundle by @pthom
https://github.com/pthom/imgui_bundle

image

image

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."_

Play

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."

Snipaste_2023-02-06_10-39-57

LDtk viewer
@Madour: "A toy project I created a while ago to learn ImGui. Very convenient lib, and the customization is also very easy."

image

erhe by @tksuoran
https://github.com/tksuoran/erhe
erhe


See previous releases details.