github ocornut/imgui v1.92.7

latest release: v1.92.7-docking
7 hours ago

Dear ImGui v1.92.7: Spring again 🌱

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 sponsors ❤️

First time sponsors!

And all recent years sponsors:

As well as various paid/corporate licenses to imgui_test_engine supporting the project.t

Fun fact 🏆

The french game industry kindly awarded me an honorary prize at the Pegases 2026 awards, principally motivated by my work on Dear ImGui. (photos: x / bsky).

pegases

News about Third-Party Projects

image

558061074-b3ec10df-a393-45a0-951f-dd7fc57caac6

ImGuiColorTextEdit

Check the Useful Extensions/Widgets page for many more.


Changes in v1.92.7 (since v1.92.6)

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

Breaking Changes

  • Separator(): fixed a legacy quirk where Separator() was submitting a zero-height item for layout purpose, even though it draws a 1-pixel separator. The fix could affect code e.g. computing height from multiple widgets in order to allocate vertical space for a footer or multi-line status bar. (#2657, #9263). The "Console" example had such a bug:
    float footer_height = style.ItemSpacing.y + ImGui::GetFrameHeightWithSpacing();
    BeginChild("ScrollingRegion", { 0, -footer_height });
    Should be:
    float footer_height = style.ItemSpacing.y + style.SeparatorSize + ImGui::GetFrameHeightWithSpacing();
    BeginChild("ScrollingRegion", { 0, -footer_height });
    When such idiom was used and assuming zero-height Separator, it is likely that in 1.92.7 the resulting window will have unexpected 1 pixel scrolling range.
  • Multi-Select: renamed ImGuiMultiSelectFlags_SelectOnClick to ImGuiMultiSelectFlags_SelectOnAuto. Kept inline redirection enum (will obsolete).
  • Combo(), ListBox(): commented out legacy signatures which were obsoleted in 1.90 (Nov 2023), when the getter callback type was changed from: bool (*getter)(void* user_data, int idx, const char** out_text) to const char* (*getter)(void* user_data, int idx).

Other Changes

  • TreeNode:
    • Moved TreeNodeGetOpen() helper to public API. I was hesitant to make this public because I intend to provide a more generic and feature-full version, but in the meanwhile this will do. (#3823, #9251, #7553, #6754, #5423, #2958, #2079, #1947, #1131, #722)
    • In 'Demo->Property Editor' demonstrate a way to perform tree clipping by fast-forwarding through non-visible chunks. (#3823, #9251, #6990, #6042) Using SetNextItemStorageID() + TreeNodeGetOpen() makes this notably easier than it was prior to 1.91.
image
  • InputText:
    • Shift+Enter in multi-line editor always adds a new line, regardless of ImGuiInputTextFlags_CtrlEnterForNewLine being set or not. (#9239)
    • Reworked io.ConfigInputTextEnterKeepActive mode so that pressing Enter will deactivate/reactivate the item in order for e.g. IsItemDeactivatedAfterEdit() signals to be emitted the same way regardless of that setting. (#9001, #9115)
    • Fixed a glitch when using ImGuiInputTextFlags_ElideLeft where the local x offset would be incorrect during the deactivation frame. (#9298)
    • Fixed a crash introduced in 1.92.6 when handling ImGuiInputTextFlags_CallbackResize in certain situations. (#9174)
    • Fixed selection highlight Y1 offset being very slightly off (since 1.92.3). (#9311) [@v-ein]
    • InputTextMultiline: fixed an issue introduced in 1.92.3 where line count calculated for vertical scrollbar range would be +1 when the widget is inactive, word-wrap is disabled and the text buffer ends with '\n'. Fixed a similar issue related to clipping large amount of text.
    • InputTextMultiline: avoid going through reactivation code and fixed losing revert value when activating scrollbar.
    • InputTextMultiline: fixed an issue where edit buffer wouldn't be reapplied to back buffer on the IsItemDeactivatedAfterEdit() frame. This could create issues when using the idiom of not applying edits before IsItemDeactivatedAfterEdit(). (#9308, #8915, #8273)
  • Tables:
    • Allow reordering columns by dragging them in the context menu. (#9312)
    • Context menu now presents columns in display order. (#9312)
    • Fixed and clarified the behavior of using TableSetupScrollFreeze() with columns>1, and where some of the columns within that range were Hidable.
      • Before: TableSetupScrollFreeze(N, 0): include the N left-most visible columns as part of the scroll freeze. So if you intentionally hide columns <N, the scroll freeze area would start covering the subsequent/following columns (N+1) etc.
      • After: TableSetupScrollFreeze(N, 0): include the N left-most columns (regardless of visibility), as part of the scroll freeze. So if you intentionally hide columns <N, the scroll freeze area will cover less columns.
      • This is generally more sane and logical.
    • Fixed dragging a header to reorder outside of visible bounds (due to horizontal scrolling) from losing active id.
    • Angled Headers: angled section for column being reordered via the regular headers stays highlighted during reordering.

reordering_columns_in_context_menu_3

  • Style:
    • Fonts: fixed an issue introduced in 1.92.6 where style.FontBaseSize would be cleared during the first frame if no fonts was explicitly added before.
    • Border sizes are now scaled (and rounded) by ScaleAllSizes().
    • When using large values with ScallAllSizes(), the following items thickness are scaled to integer amounts:
      • InputText() caret/cursor thickness. (#7031)
      • CloseButton() thickness.
      • TextLink() underline thickness.
      • ColorButton() border thickness.
      • Separator() thickness, via scaling newly added style.SeparatorSize. (#2657, #9263)
  • Nav:
    • Popups: Shift+F10 or Menu key can now open popups menus when using
      BeginPopupContextItem(), BeginPopupContextWindow() or OpenPopupOnItemClick(). (#8803, #9270) [@exelix11, @ocornut]
    • Changed Gamepad mapping for "Activate with Text Input" action: (#8803, #787)
      • Previously: press North button (PS4/PS5 triangle, Switch X, Xbox Y).
      • Now: long press (hold) Activate button (PS4/PS5 cross, Switch B, Xbox A) for ~0.60 secs.
        This is rarely used, somehow easier to discover, and frees a button for other uses.
    • Short Gamepad Activation press on InputText() always activate with Text Input mode.
    • Popups: pressing North button (PS4/PS5 triangle, SwitchX, Xbox Y) also open popups menus.

context_menu_keyboard

See updated Gamepad Control Sheets (PlayStation, Switch, Xbox):
https://www.dearimgui.com/controls_sheets
imgui controls v7 - PlayStation

  • Multi-Select:
    • Added ImGuiMultiSelectFlags_SelectOnClickAlways mode (rarely used). This prevents Drag and Drop of multiple items, but it allows to start a new Box-Selection from inside an existing selection (Excel style). (#9307, #1861)
  • Clipper:
    • Clear DisplayStart/DisplayEnd fields when Step() returns false.
    • Added UserIndex helper storage. This is solely a convenience for cases where you may want to carry an index around.
    • Always pulls current context on ImGuiListClipper::Begin(), consistent with public API design, and avoids issues with clipper instances outliving contexts. (#9324, #5856)
  • Scrollbar:
    • Implemented a custom tweak to extend hit-testing bounding box when window is sitting at the edge of a viewport (e.g. fullscreen or docked window), so that e.g. mouse the mouse at the extreme of the screen will reach the scrollbar. (#9276)
    • Fixed an issue which could lead initial click to move the current scroll by a pixel.
  • Button:
    • Moved ImGuiButtonFlags_AllowOverlap from imgui_internal.h to imgui.h, as a convenience for when using e.g. InvisibleButton().
  • Focus: fixed fallback "Debug" window temporarily taking focus and setting io.WantCaptureKeyboard for one frame on e.g. application boot if no other windows are submitted. (#9243)
  • DrawList:
  • Memory:
    • Discard/GC of ImDrawList buffers for unused windows favor restoring them to ~Size*1.05 instead of Capacity when awakening again. Facilitate releasing ImDrawList buffers after unusual usage spike. (#9303)
    • Fixed GetForegroundDrawList()/GetBackgroundDrawList() per-viewport buffers not being collected when unused for io.ConfigMemoryCompactTimer amount of time. (#9303)
  • Demo: fixed IMGUI_DEMO_MARKER locations for examples applets. (#9261, #3689) [@pthom]
  • Internals:
    • ButtonBehavior: fixed internal/low-level ImGuiButtonFlags_PressedOnRelease (as well as equivalent ImGuiSelectableFlags_SelectOnRelease for Selectable) from not taking current active id. ImGuiButtonFlags_NoHoldingActiveID allows that. This was only used internally by MenuItem().
  • Backends:
    • DirectX9, OpenGL2, OpenGL3, Metal, SDLGPU3, SDLRenderer2, SDLRenderer3: fixed easy-to-fix issues in code assuming ImTextureID_Invalid is always defined to 0. (#9295, #9310)
    • GLFW: mouse cursor is properly restored if changed by user app/code while using glfwSetInputMode(..., GLFW_CURSOR_DISABLED) or ImGuiConfigFlags_NoMouseCursorChange. Amend optimization done in 1.92.6.
    • SDLGPU3: removed unnecessary call to SDL_WaitForGPUIdle() when releasing vertex/index buffers. (#9262) [@jaenis]
    • WebGPU: fixed version check for Emscripten 5.0.0+.
    • WebGPU: removed support for Emscripten <4.0.10. (#9281) [@ypujante]
    • WebGPU: added support for WGVK native backend via IMGUI_IMPL_WEBGPU_BACKEND_WGVK, using SPIRV shaders if WGSL is not available. (#9316, #9246, #9257) [@r-lyeh] (WGVK is a lightweight alternative to Dawn or WGPU for native applications, which is easier to build/setup, see: https://github.com/manuel5975p/WGVK)
  • Examples:
    • Emscripten: added tabindex=-1 to canvas in our shell_minimal.htm. Without it, the canvas was not focusable in the DOM, which in turn make some backends (e.g. pongasoft/emscripten-glfw) not receive focus loss events. (#9259) [@pthom]
    • Emscripten: fixed minor rendering issues with our HTML shell. (#9281) [@ypujante]
      • hidden small blue outline when canvas is focused on Chrome.
      • hidden scrollbar in Firefox.
    • Vulkan: added ImGui_ImplVulkan_PipelineInfo::ExtraDynamicStates[] to allow specifying extra dynamic states to add when creating the VkPipeline. (#9211) [@DziubanMaciej]
    • Vulkan: ImGui_ImplVulkan_AddTexture() skips updating descriptor_set if failing to allocate one. (#8677) [@micb25]
    • WebGPU: fixed undefined behaviors in example code for requesting adapter and device. (#9246, #9256) [@r-lyeh]
    • SDL2+WebGPU: fixed hi-dpi handling. (#9300) [@ypujante]
    • GLFW/SDL2/SDL3+WebGPU: added support for WGVK. (#9316, #9246, #9257) [@r-lyeh, @ocornut]
    • GLFW/SDL2/SDL3+WebGPU: removed support for Emscripten <4.0.10. (#9281) [@ypujante]

Changes from 1.92.6 to 1.92.7 specific to the Docking+Multi-Viewports branch:

git tag: v1.92.7-docking

  • Viewports:
    • Fixed an issue where the implicit "Debug" window would erroneously be targeted for mouse inputs while hidden if (1) the implicit "Debug" window was used in a previous session and moved to a secondary viewport and (2) the Platform Backend does not support the ImGuiBackendFlags_HasMouseHoveredViewport feature. (#9254)
    • Backends: SDL2, SDL3: fixed an issue dated 2025/04/09 (1.92 WIP) where a refactor and a merge caused ImGuiBackendFlags_HasMouseHoveredViewport to never be set, causing foreign windows to be ignored when deciding of hovered viewport. (#9284) [@ravencgg]
    • Backends: SDL3: use SDL_HAS_EVENT_DISPLAY_USABLE_BOUNDS_CHANGED (SDL 3.4.0+) when available to avoid refreshing monitor work area every frame on Windows. (#8415)
    • Backends: Win32: fixed setting/getting correct size when viewports have OS decorations enabled (e.g. io.ConfigViewportsNoDecoration = false) and process is running in Per-Monitor V2 DPI mode. May be related to incorrect mouse offset when using decorated OS windows. (#8897) [@lailoken]

Gallery

Pyrite64: N64 Game-Engine and Editor using libdragon & tiny3d
https://github.com/HailToDodongo/pyrite64
Release video: https://www.youtube.com/watch?v=4BCmKnN5eGA

Image Image

Flare-tic, personal internal software by Julien Vulliet for his demos/vj/video production/interactive installation etc.
https://nodeforum.org/people/julien-vulliet
https://www.mrvux.com
Flare-tic

Gaussian Splatting in Superman 2025 movie (effect dev by Framestore)
https://www.youtube.com/watch?v=Pxd-q3ECBPs
Image

Thor Editor
https://bsky.app/profile/krabouille.bsky.social/post/3mcwfbwa5z22b
Thor Editor

Bento Blocks:
https://store.steampowered.com/app/3311670/Bento_Blocks <-- nice game!
@jet-jones: "nothing super fancy mostly just lists of properties. Main use on the project was for making quick inline debugging stuff which isn't very showable. All of the ingame ui is it's own immediate mode system heavily based on Dear Imgui code particularly the id hashing stuff. "
Image

@BigJk: "Is building a markdown editor (imagine a barebones native obsidian) with ImGui a sane choice? Probably not, but it's a lot of fun 😄 I render the markdown to HTML with cmark-gfm and then use ImHTML to render it. The editor supports clickable links to navigate between pages or open websites, images, customisable themes, customisable css for the markdown..."

Image

@FuXiii: "Control hint UI"
Image

@smoke1080p: Password Defense — Offline-First Password Manager for Windows Built with C++ and Dear ImGui (DirectX 11)
https://passworddefense.net

Image Image

ColumnLens: @marchildmann: "Query massive data files. Instantly. / Native C++ desktop app with built-in SQL engine, interactive charts, 3D city visualization, text toolkit, and Lua scripting. Opens 5GB+ CSV, JSONL, Parquet, Excel & SQLite files in seconds. 100% on-device."
https://columnlens.com
Image

@adelciotto: "Thanks to all in this community who work on ImGui. I've been using it for years both professionally and in personal projects. It has helped immensely for productivity. "
[....]
An Intel 8080 Taito/Midway arcade board emulator for playing games like Space Invaders, Lunar Rescue and Balloon Bomber.
You need to provide your own rom zip files. Runs on the web and natively, you can download on my website
Image
[...]
Also some screenshots of using it in my last job. A dental technology company. These screenshots just show ImGui in use for small R&D programs I made to help test / design specific algorithms that were a part of a bigger overall software that processed patient scans from intraoral medical scanners. I used ImGui for many more applications at this company but unfortunately don't have screenshots anymore of those.
Image
(full post here)

"Game engine made in 5 days complete" by @AmelieHeinrich
https://x.com/Dispatch_Graph/status/2033325266685108533
https://github.com/AmelieHeinrich/Termina
Image

@midwan: "For the Amiberry emulator (https://amiberry.com/), I needed to modernize the UI with a library that was portable, flexible, efficient and lightweight. Dear Imgui fitted the specs perfectly. I only added some theme customization on top, to make it look like AmigaOS, and also a Dark theme (we all want one)"
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.

💰 🙏 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.