github ocornut/imgui v1.92.5

latest release: v1.92.5-docking
8 hours ago

v1.92.5 🪩

❤️ Last year was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉
Reading the changelog is a good way to keep up to date with what Dear ImGui has to offer, and will give you ideas of some features that you've been ignoring until now!
📣 If you are browsing multiple releases: click version number above to display full release note contents, otherwise it is badly clipped by GitHub!


Links: Homepage - Release notes - FAQ - Issues, Q&A. Also see our Wiki with sections such as..

Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.

❤️ Thanks to recent years sponsors ❤️

Thanks to new sponsors:

And:

❤️ And many individuals ❤️

Thanks to Adam B, Daniel C, Geoffrey E, Israelle W, Jean-Sebastien R, Jonathan G, Karl H, Liam W, Lucas G, Martin G, Mathieu W, Minh D L, Nicholas C, Peter R, Simon V B ! Also thanks to @GamingMinds-DanielC, @pthom, & more for their help with GitHub answers!


🎤 Embarrassment time 🎤

Wookash Podcast had me recently, if you think you can handle two hours of me rambling confusedly!
https://www.youtube.com/watch?v=2KPUMvyUMzM.


New/Recent Useful Third-Party Extensions

Also check the Useful Extensions/Widgets page for a full list.


Changes (since v1.92.4)

🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures introduced in v1.92.0 ? You can read the recently improved docs/BACKENDS.md.

TL;DR;

  • Single-axis auto-sizing fixes.
  • Tables fixes.
  • InputText fixes.
  • Keyboard navigation fixes.
  • WebGPU backend/examples up to date with latest Emscripten, native DAWN, native WGPU changes.
  • & much more.

Breaking Changes

  • Keys: commented out legacy names which were obsoleted in 1.89.0 (August 2022).
    • ImGuiKey_ModCtrl --> ImGuiMod_Ctrl, ImGuiKey_ModShift --> ImGuiMod_Shift, ImGuiKey_ModAlt --> ImGuiMod_Alt, ImGuiKey_ModSuper --> ImGuiMod_Super.
  • IO: commented out legacy io.ClearInputCharacters() obsoleted in 1.89.8 (Aug 2023). Using io.ClearInputKeys() is enough.
  • BeginChild: commented out legacy names which were obsoleted in 1.90.0 (Nov 2023), 1.90.9 (July 2024), 1.91.1 (August 2024). (#462, #7687)
    • ImGuiChildFlags_Border --> ImGuiChildFlags_Borders
    • ImGuiWindowFlags_NavFlattened --> ImGuiChildFlags_NavFlattened (moved to ImGuiChildFlags!).
    • ImGuiWindowFlags_AlwaysUseWindowPadding --> ImGuiChildFlags_AlwaysUseWindowPadding (moved to ImGuiChildFlags!).
  • So TL;DR;
    • BeginChild(name, size, 0, ImGuiWindowFlags_NavFlattened) --> BeginChild(name, size, ImGuiChildFlags_NavFlattened, 0)
    • BeginChild(name, size, 0, ImGuiWindowFlags_AlwaysUseWindowPadding) --> BeginChild(name, size, ImGuiChildFlags_AlwaysUseWindowPadding, 0)
  • Commented out legacy SetItemAllowOverlap() obsoleted in 1.89.7: this never worked right. Use SetNextItemAllowOverlap() before item instead.

Other Changes

  • Windows:
    • Config flag io.ConfigWindowsMoveFromTitleBarOnly is now latched during Begin(), effectively allowing to change the value on a per-window basis (although there is a better internal mechanism for it).
    • Fixed single-axis auto-sizing (via double-clicking a border or passing 0.0f on one axis of SetNextWindowSize() call) to take account of remaining scrollbar on the other axis. (#9060)
    • Fixed an issue where repeated calls to SetNextWindowSize() using 0.0f to auto-size on a given axis would keep marking ini settings as dirty.
  • Tables:
    • Fixed a bug where nesting BeginTable()->Begin()->BeginTable() would result in temporarily incorrect state, which would lead to bugs to side effects in various locations, e.g. GetContentRegionAvail() calls or using clipper. EndTable() was mistakenly restoring a wrong current table. (#9005)
    • Angled headers: fixed an auto-resize feedback loop that could affect tables with empty non-resizing columns using angled headers, making them typically flicker back and forth between +0 and +1 pixels.
  • Disabled: fixed a bug when a previously enabled item that got nav focus and then turns disabled could still be activated using keyboard. (#9036)
  • InputText:
    • When buffer is not resizable, trying to paste contents that cannot fit will now truncate text to nearest UTF-8 codepoint boundaries, instead of completely ignoring the paste. (#9029)
    • Avoid continuously overwriting ownership of ImGuiKey_Enter/ImGuiKey_KeypadEnter keys in order to allow e.g. external Shortcut override behavior. (#9004)
    • When using a callback to reduce/manipulate the value of BufTextLen, we do not require anymore that CursorPos be clamped by user code. (#9029)
    • Fixed an assert when using ImGuiInputTextFlags_ReadOnly and making underlying contents shorter while text is selected. (#9069, #3237) (regression from 1.92.3)
    • InputTextMultiline: fixed a crash when using ImGuiInputTextFlags_WordWrap and resizing the parent window while keeping the multi-line field active (which is most typically achieved when resizing programmatically or via a docking layout reacting to a platform window resize). (#3237, #9007) [@anton-kl, @ocornut]
  • Nav:
    • Reworked PageUp/PageDown logic to pick same-page top/bottom page based on inner rectangle rather than clipping rectangle, ensuring consistent (but occasionally less practical) navigation result when a window is partially out of screen. (#787)
    • Improved/clarified behavior when requesting PageUp/PageDown from a focused item which is outside of visible boundaries: now ends up one page away from focused item. (#9079)
    • Clipper: fixed an issue when using up/down from an item outside of visible bound and using the clipper. (#9079)
  • Fonts:
    • Calling ImFontAtlas::Clear() mid-frame without re-adding a font will lead to a more explicit crash.
  • Textures:
    • Fixed an issue preventing multi-contexts from using each others' fonts if context 2 runs after context 1's Render() function. (#9039)
  • MultiSelect: added ImGuiMultiSelectFlags_NoSelectOnRightClick to disable default right-click processing, which selects item on mouse down and is designed for context-menus. (#8200, #9015)
  • Groups: fixed an issue reporting IsItemEdited() signal after EndGroup() when triggered by some widgets e.g. Checkbox(), Selectable() and many others, which cleared ActiveId at the same time as editing. Note that IsItemDeactivatedAfterEdit() was not affected, only IsItemEdited(). (#9028)
  • Misc: standardized casing of keyboard mods in comments and demo, showing as e.g. "Ctrl" instead of "CTRL".
  • CI: Added Dear ImGui Test Suite to CI builds. [@rokups]
  • Drag and Drop:
    • Added ImGuiDragDropFlags_AcceptDrawAsHovered to make accepting item render as hovered, which can allow using e.g. Button() as drop target. (#8632)
    • Pressing Escape while carrying a payload automatically cancel the active drag and drop. (#9071)
    • Style: added ImGuiCol_DragDropTargetBg, style.DragDropTargetRounding, style.DragDropTargetBorderSize and style.DragDropTargetPadding to configure the drop target highlight. (#9056) [@aaronkirkham]
  • Demo: About Box: emit infos to convey when IM_ASSERT() macro is disabled, (1) so users don't miss out on programming errors being reported, (2) so it is included in config/build info submitted in new GitHub Issues.
  • Debug Tools:
    • Fixed DebugTextEncoding() potentially reading out of bounds when provided a trailing truncated UTF-8 sequence.
    • Metrics: fixed table and columns rect highlight from display when debug/metrics window is not in the same viewport as the table.
  • Backends:
    • NULL: added imgui_impl_null platform/renderer backend. This is designed if you need to run e.g. context with no input or no ouput.
    • GLFW: fixed building on Linux platforms where Wayland headers are not available. (#9024, #8969, #8921, #8920) [@jagot]
    • GLFW: lower minimum requirement from GLFW 3.1 to GLFW 3.0. Though a recent version e.g GLFW 3.4 is highly recommended! (#9055) [@Clownacy]
    • GLFW: fixed last ImGui_ImplGlfw_Shutdown() not immediately clearing the context map, which would be detected by leak trackers. (#9075, #8676, #8239, #8069) [@erincatto]
    • SDL3: fixed Platform_OpenInShellFn() return value (the return value was unused in core but might be used by a direct caller). (#9027) [@achabense]
    • SDL3: fixed an issue with missing characters events when an already active text field changes viewports. (#9054)
    • Vulkan: added IMGUI_IMPL_VULKAN_VOLK_FILENAME to configure path to Volk (default to "volk.h"). (#9008, #7722, #6582, #4854) [@mwlasiuk]
    • WebGPU: update to compile with Dawn and Emscripten's 4.0.10+ --use-port=emdawnwebgpu ports. (#8381, #8898, #7435) [@BrutPitt, @trbabb] When using Emscripten 4.0.10+, backend now defaults to IMGUI_IMPL_WEBGPU_BACKEND_DAWN instead of IMGUI_IMPL_WEBGPU_BACKEND_WGPU, if neither are specified.
    • WebGPU: added various internal/optional helpers to wrap some of the Dawn/WGPU/Emscripten debacle quirks: (#8381) [@BrutPitt]
      • ImGui_ImplWGPU_CreateWGPUSurfaceHelper(), ImGui_ImplWGPU_IsSurfaceStatusError(), ImGui_ImplWGPU_IsSurfaceStatusSubOptimal(), ImGui_ImplWGPU_DebugPrintAdapterInfo(), ImGui_ImplWGPU_GetBackendTypeName(), ImGui_ImplWGPU_GetAdapterTypeName(), ImGui_ImplWGPU_GetDeviceLostReasonName(), ImGui_ImplWGPU_GetErrorTypeName(), ImGui_ImplWGPU_GetLogLevelName().
    • Win32: Revert 1.92.4 change of comparing dwPacketNumber, which prevents refreshing accurate gamepad info after focus-out + io.ClearInputKeys(). (#8556)
  • Examples:
    • NULL: update examples_null to use imgui_impl_null (which is a bit overengineering but somehow consistent).
    • GLFW+WebGPU: update example for latest specs, to work on Emscripten 4.0.10+, latest Dawn-Native and WGPU-Native. (#8381, #8567, #8191, #7435) [@BrutPitt]
    • GLFW+WebGPU: removed unnecessary ImGui_ImplWGPU_InvalidateDeviceObjects() call during surface resize. (#8381)
    • SDL2+WebGPU: added new example (Emscripten + native Dawn/WGPU). (#8381) [@BrutPitt]
    • SDL3+WebGPU: added new example (Emscripten + native Dawn/WGPU). (#8381) [@BrutPitt]
    • Win32+OpenGL3: enable DPI awareness. (#9083)

Changes from 1.92.4 to 1.92.5 specific to the Docking+Multi-Viewports branch:

git tag: v1.92.5-docking

  • Docking, Style: fixed per-window ImGuiCol_UnsavedMarker changes not being latched by docked windows when altered for individual windows. (#8983, #9064)
  • Docking: fixed crash loading certain form of invalid .ini settings (e.g. nodes referring to a missing parent, duplicate nodes id). (#9070)
  • Docking: added io.ConfigDockingNoDockingOver helper config flag to globally prevent merging windows into a same tab-bar.
  • Examples:
    • SDL2+DX11, SDL3+DX11, Win32+DX10, Win32+DX11: fixed one resource leak from the use of MakeWindowAssociation() in 1.92.4. (#9010, #4350) [@o-3-o]
  • Backends:
    • DirectX12: Fixed an issue in synchronization logic improving rendering throughput for secondary viewports. (#9025, #8961)
    • Vulkan: handle viewport surface creation failure without crashing. (#9068) [@zentia]

Gallery

Ark VCS Version Control For Games
"Ark is a new version control system built from the ground up for performance and ease of use. It comes as an alternative to Perforce and Git focusing specifically on being able to support big complex projects with binary files, such as the case in video games."
https://ark-vcs.com/
Image

@Daethalus: "My Engine"
Image

@MrDrElliot: "My custom game engine uses Dear ImGui extensively for all editor utilities. I’ve spent a lot of time tuning the visuals and interaction model to strike a balance between clarity and flexibility, and I’m really happy with where it’s landed."
"ImGui’s API has been a blast to explore; it’s remarkably powerful and expressive once you lean into its immediate-mode design."
https://github.com/MrDrElliot/LuminaEngine

WARCANA "is a fantasy inspired base defence, RTS game with a deck-building mechanic. Face hundreds of thousands of unrelenting monsters in a battle royale between 30 other mighty magicians."
https://store.steampowered.com/app/2022930/WARCANA/
Tooling:
Image
Image

Sighting in APEX Legends update video:
https://x.com/PlayApex/status/1980652101635051635
Image

@VadimBoev: "I have created an application for a Russian-speaking audience for a private secure connection. And I want to share screenshots of how it looks, but it's not that interesting, the most interesting thing is how it looks on a push-button Android with a screen size of 480x320 pixels!"
image

@davo0411: "I am a member of the development team for Community Shaders, a Graphics Overhaul mod for TESV Skyrim: Special Edition. We use Dear ImGui for the general user interface, and control all features and settings through it. The last few months have brought a lot of visual changes, introducing font-choosing, icon support, more granular control, etc. "
Image

MMT / Market Monkey Terminal
https://marketmonkeyterminal.com/
Image
Image

@StrikerX3: "Debug tools on Ymir, my Sega Saturn emulator."
Image

@allkern: "Debug widgets on my PlayStation 2 emulator, Iris"
Image

...More in gallery threads.


Also see previous releases details.
Note that GitHub are now clamping release notes sometimes really badly, click on a header/title to read full notes.

❤️ Last year was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉

💰 🙏 Dear ImGui is funded by your contributions and absolutely needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Funding page. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and buy hours of support (and cough not use them all) and that will contribute to fund Dear ImGui.

Don't miss a new imgui release

NewReleases is sending notifications on new releases.