Dear ImGui

Frameworks & Libraries

A bloat-free immediate-mode GUI library for tools, debuggers and game engines.

Latest v1.92.9b · by Omar CornutWebsiteocornut/imgui

Release activity

Release activity — 10 releases across 10 days since Aug 11, 2025. Each cell is one day; darker means more releases that day. Nothing is recorded before Aug 11, 2025. Older weeks are hidden at this screen width.
MayJunJulAug
SundayNo releases on Apr 26, 2026No releases on May 3, 2026No releases on May 10, 2026No releases on May 17, 2026No releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026
MondayNo releases on Apr 27, 2026No releases on May 4, 2026No releases on May 11, 2026No releases on May 18, 2026No releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026
TuesdayNo releases on Apr 28, 2026No releases on May 5, 20261 release on May 12, 2026No releases on May 19, 2026No releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026
WednesdayNo releases on Apr 29, 2026No releases on May 6, 2026No releases on May 13, 2026No releases on May 20, 2026No releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026
ThursdayNo releases on Apr 30, 2026No releases on May 7, 2026No releases on May 14, 2026No releases on May 21, 2026No releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026
FridayNo releases on May 1, 2026No releases on May 8, 2026No releases on May 15, 2026No releases on May 22, 2026No releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 20261 release on Jul 31, 2026No releases on Aug 7, 2026
SaturdayNo releases on May 2, 2026No releases on May 9, 2026No releases on May 16, 2026No releases on May 23, 2026No releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 20261 release on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026

10 releases since Aug 11, 2025

Changelog

v1.92.9b

Fixed 4
  • DragXXX, SliderXXX: fixed a regression in 1.92.9 where clicking a previously Ctrl+Clicked field would flick it to text edit mode for one frame
  • Tables: fixed Y2 position of lower horizontal border (ImGuiTableFlags_BordersOuterH) being off by one pixel when vertical ones are not also enabled
  • Tables: fixed X position of angled borders being off by half a pixel
  • ImDrawData: fixed a regression in 1.92.9 where legacy/obsoleted ImDrawData::CmdListsCount was always 0
Dear ImGui v1.92.9b : Hotfix 🔥

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

Changes in v1.92.9b (since v1.92.9)

This is a hot-fix for two small regressions in 1.92.9, one which would affect many people.

  • DragXXX, SliderXXX: fixed a regression in 1.92.9 where clicking a previously Ctrl+Clicked field would flick it to text edit mode for one frame. (#9476, #701)
  • Tables: fixed Y2 position of lower horizontal border (ImGuiTableFlags_BordersOuterH) being off by one pixel when vertical ones are not also enabled. [@thedmd]
  • Tables: fixed X position of angled borders being off by half a pixel. [@thedmd]
  • ImDrawData: fixed a regression in 1.92.9 where legacy/obsoleted ImDrawData::CmdListsCount was always 0. Prefer using ImDrawData::CmdList.Size anyway.

Also see previous releases details.

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

View originalPermalink
How v1.92.9b went

v1.92.9

Dear ImGui v1.92.9 🌞

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!

❗❗ EDIT: Followup Hot-fix: see 1.92.9b. ❗❗

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

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

News about Third-Party Projects

Check the Useful Extensions/Widgets page for many more.


Changes in v1.92.9 (since v1.92.8)

🆘 1.92.8 contained a signature change for the trailing optional parameters of ImDrawList::AddRect(), AddPolyline(), PathStroke(). C++ users should be notified at compile-time, but languages without type-checking may only be notified at runtime. Read v1.92.8 if using non a C++ language. Consider enabling IMGUI_DISABLE_OBSOLETE_FUNCTIONS from time to time to get rid of obsolete calls.

🆘 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
  • DragXXX, SliderXXX, InputScalar: with ImGuiItemFlags_LiveEditOnInputScalar now defaulting to being disabled: inputting a value with the keyboard doesn't write intermediate values to the backing variable. (#9476)
    • Before: DragFloat() with user typing "123" --> write back 1, then 12, then 123.
    • After: DragFloat() with user typing "123" --> write back 123 when validated/unfocused.
    • You can enable the flag back for a given scope if needed by specific widget/behavior. Read below for details.
  • TreeNode: commented out legacy name ImGuiTreeNodeFlags_SpanTextWidth which was obsoleted in 1.90.7 (May 2024). Use ImGuiTreeNodeFlags_SpanLabelWidth.
  • ColorEdit: obsoleted SetColorEditOptions() function added in 1.51 (June 2017) in favor of directly poking to io.ConfigColorEditFlags. More consistent and easier to discover.
  • Drag and Drop: commented out legacy name ImGuiDragDropFlags_SourceAutoExpirePayload which obsoleted in 1.90.9 (July 2024).
    • Use ImGuiDragDropFlags_PayloadAutoExpire.
  • ImDrawData: marked CmdListsCount as obsolete (technically was obsoleted in 1.89.8).
    • Before: draw_data->CmdListsCount, After: draw_data->CmdLists.Size.
Other Changes

LiveEdit on/off:

  • Added ImGuiItemFlags_LiveEditOnInputText and ImGuiItemFlags_LiveEditOnInputScalar flags to configure the timing of applying edits of backing variables when typing values using a keyboard. (#9476, #701, #3936, #3946, #5904, #6284, #8149, #8065, #8665, #9117, #9299, #700, #1351, #1875, #2060, #2215, #2380, #2550, #3083, #3338, #3556, #4373, #4714, #4885, #5184, #5777, #6707, #6766, #8004, #8303, #8915, #9308)
    • ImGuiItemFlags_LiveEditOnInputText is enabled by default (same as before): The expectation is that for strings/text, enabling LiveEdit is a better default.
    • ImGuiItemFlags_LiveEditOnInputScalar is disabled by default (new behavior): The expectation is that for numeric/scalars values, disabling LiveEdit is a better default.
    • Until now:
      • Edits where always applied immediately to backing variable, which is equivalent to the ImGuiItemFlags_LiveEditXXX flags being enabled.
      • Typing '123' in an integer field would output successively 1, 12 then 123.
      • Most uses of IsItemDeactivatedAfterEdit() or ImGuiInputTextFlags_EnterReturnsTrue were actually workarounds for this issue. Advanced applications would typically use IsItemDeactivatedAfterEdit() to distinguish transactions. Workarounds often required a backing store for scalar values, and there were also a few niggles related to IsItemDeactivatedAfterEdit() when using +/- buttons of an InputInt() widgets.
      • Many of those situations can now be naturally simplified when disabling ImGuiItemFlags_LiveEditOnInputScalar is disabled.
    • The new flags allows disabling this behavior selectively for strings fields such as InputText() vs scalar fields: SliderInt(), InputFloat(), etc.
      • When LiveEdit is disabled, edits are applied when pressing enter, tabbing out, clearing a field or deactivating due to a focus loss.
      • The flag may be altered programmatically, e.g. for the entire frame scope:
        NewFrame();
        PushItemFlag(ImGuiItemFlags_LiveEditOnInputScalar, true); // Enable for scalars for the whole frame
        [...]
        PopItemFlag();
        EndFrame();
        // ..or for a specific widget:
        PushItemFlag(ImGuiItemFlags_LiveEditOnInput, true);       // Enable for one widget
        SliderInt(...);
        PopItemFlag();
  • We intentionally are not adding io.ConfigLiveEditXXX fields to dictate the default value of each ImGuiItemFlags_LiveEditXXX, because this is not expected to be a user preference but a programmer/widget preferences. And we strive to make the toolkit consistent.

Windows:

  • Clicking on a window's empty-space to move/focus a window checks for lack of mouse button ownership. This gives an additional opportunity for user code to bypass it without using a clickable item. (#9382)
  • Clicking on a window's empty-space to move/focus a window checks for lack of queued focus request. (#9382)
  • Fixed double-click collapse toggle not owning the mouse button. If a SetNextWindowPos() with pivot was queued in the same frame, the second click could trigger another item in the same window. (#9439) [@Cleroth]

Popups:

  • Added bool return value to OpenPopup(), OpenPopupOnItemClick() functions to notify when the popup was just opened. (#9429)

InputText:

  • Added style.InputTextCursorSize to configure cursor/caret thickness. (#7031, #9409) It is automatically scaled by style.ScaleAllSizes().
  • Reworked io.ConfigInputTextEnterKeepActive mode so that pressing Ctrl+Enter or Shift+Enter still allows to deactivate. (#9239)

Tables:

  • Redesigned/rewrote code to reconcile columns and settings on topology changes. (#9108)
    • When a column label is passed to TableSetupColumn(), the underlying identifier is used to match live columns data and .ini settings data when changing. This makes it possible to add/remove columns from a table without losing neither live data neither .ini settings data.
      • PS: Note that this is distinct from toggling column visibility or reordering columns, which was always possible. The new matching makes it easier to create tables that are entirely customized by user or code, without losing state.
      • Columns without identifiers or with duplicate identifiers are matched sequentially, matching old behavior.
      • Column ID are stored in .ini file.
      • Code is being tested both for live topology changes and for loading .ini data with mismatched topology.
    • Context Menu: added a "Reset" sub-menu with a "Reset Visibility" option (which is greyed out when using default settings).
    • Headers: fixed label being clipped early to reserve space for a sort marker even when no sort marker is displayed. Auto-fitting a column still accounts for the possible marker, so that sorting after an auto-fit doesn't clip the label.

Multi-Select:

  • Reworked ImGuiMultiSelectFlags_NoAutoSelect as it carried side-effects that were hardcoded/designed to use multi-selection on checkboxes. (#9391) Specifically removed those undocumented behaviors from _NoAutoSelect:
    • Clicking a selected/checked item always unselect/uncheck.
    • Shift+Click inverts targets value and copy to range.
    • Shift+Keyboard copy selection source value to range.
    • Those behaviors are still happening on checkboxes used within multi-selection.

Fonts:

  • Added IMGUI_DISABLE_DEFAULT_FONT_BITMAP/IMGUI_DISABLE_DEFAULT_FONT_VECTOR to disable embedding either fonts separately. (#9407)
  • Tweak CalcTextSize() awkward width rounding/ceiling code to reduce floating-point precision issues altering the result by 1 even at relatively small width. (#791)
  • Better document the fact that ImFontAtlas::Clear() / ClearFonts() functions are unlikely to be useful nowadays. Better recover to an edge case of mistakenly calling ClearFonts() during rendering.
  • Fixed an issue where passing a manually created ImFontAtlas to CreateContext() would incorrectly destroy it in DestroyContext() when ref-count gets back to zero. (#9426)
  • Destroying an ImGui context using a ImFontAtlas checks that the later has no references.

Keyboard/Gamepad Navigation

  • Fixed context menu activation with gamepad erroneously testing for _NavEnableKeyboard instead of _NavEnableGamepad. (#9454, #8803, #9270) [@Clownacy]

TreeNode:

  • Fixed nav cursor rendering with rounding even though tree nodes don't have it. (#7589)

Inputs:

  • Added GetItemClickedCountWithSingleClickDelay() helper for easy disambiguation between single-click and double-click for actions that needs single-click to do something other than selection. (#8337)
    • Returns 1 on single-click but delayed by io.MouseSingleClickDelay.
    • Returns 2 on double-click, and 2+ on subsequent repeated clicks.
    • Added io.MouseSingleClickDelay to configure default delayed single click delay when using GetItemClickedCountWithSingleClickDelay() or IsMouseReleasedWithDelay(). (#8337)
    • Note that io.MouseSingleClickDelay is always > io.MouseDoubleClickTime.

ColorEdit:

  • Added io.ConfigColorEditFlags to read/modify current color edit/picker settings.
  • ColorPicker: added ImGuiColorEditFlags_PickerNoRotate to disable rotation of the S/V triangle when in ImGuiColorEditFlags_PickerHueWheel mode. (#9337) [@SeanTheBuilder1] Likely best passed to style.ColorEditFlags to setup globally and once.
  • ColorButton: small rendering tweak/optimization for the alpha checkerboard.

Style:

  • Added style.MenuItemRounding, ImGuiStyleVar_MenuItemRounding. (#7589, #9375, #9453)
  • Added style.SelectableRounding, ImGuiStyleVar_SelectableRounding. (#7589, #9375, #9453) The use of this is discouraged because it can easily create problems rendering e.g. contiguous selection.
  • Scale the NavCursor border thickness when using large values with ScallAllSizes().

Settings:

  • Windows/Tables settings entries can now record the last used date in YYYYMMDD format, allowing tools to run to e.g. delete entries that haven't been used in X months. (#9460)
  • Added bool io.ConfigIniSettingsSaveLastUsedDate to disable saving that info. (#9460)
  • Added int io.ConfigIniSettingsAutoDiscardMonths to enable a mode where unused settings are automatically discard after xx months. (#9460)
  • Added a trimming tool under Metrics->Settings, along with a yet-unexposed function.
  • The current system date is fed through ImGuiPlatformIO::Platform_SessionDate, which is automatically set by a call to time() done during context creation. (#9460)
  • Added IMGUI_DISABLE_TIME_FUNCTIONS to disable setting platform_io.Platform_SessionDate. A custom backend may still set it manually. (#9460)

DrawList:

  • Minor optimization to AddLine(), AddLineH(), AddLineV() functions. (#4091)
  • Added ImDrawListFlags_TextNoPixelSnap to disable snapping of AddText() coordinates for a given scope. (#3437, #9417, #2291)

Demo:

  • Extract 'Widgets->Tree Nodes->Selectable Nodes' out of the 'Advanced' demo for clarity (manual re-implementation of basic selection).

Debug Tools:

  • Added IM_DEBUG_BREAK() handler for GCC+AArch64/ARM64. [@tom-seddon]

Backends:

  • Android: Clear mouse position on touch release (AMOTION_EVENT_ACTION_UP) to prevent items from staying in hovered state. (#6627, #9474) [@Turtle-PB]
  • Metal4: Added new Metal 4 backend (forked from Metal 3 backend). (#9458, #9451) [@AmelieHeinrich]
  • Metal4: Added Metal-cpp support enabled with IMGUI_IMPL_METAL_CPP define. (#9461) [@MERL10N]
  • OpenGL2: Backup and restore GL_UNPACK_ROW_LENGTH and GL_UNPACK_ALIGNMENT when updating texture to avoid altering caller GL state. (#8802, #9473) [@Turtle-PB]
  • OpenGL3: GLSL version detection assume GLSL 410 when GL context is 4.1. Fixes an issue running on macOS with Wine. [#9427, #6577) [@perminovVS]
  • OpenGL3: Expose selected render state in ImGui_ImplOpenGL3_RenderState, allowing to dynamically select between use of glBindSampler() and glTexParameter(). (#9378)
  • OpenGL3: Backup and restore GL_UNPACK_ROW_LENGTH and GL_UNPACK_ALIGNMENT when updating texture to avoid altering caller GL state. (#8802, #9473) [@Turtle-PB]
  • SDL2: Restore SDL_StartTextInput()/SDL_StopTextInput() in IME handler for on-screen keyboard support on Android. (#7636, #9474) [@Turtle-PB]
  • SDLRenderer3: Fixed sampler change which didn't work on all graphics backends. (#7616, #9470, #9378)
  • SDLRenderer3: Fixed default sampler not being Linear. Regression in 1.92.8. (#7616, #9470, #9378) [@ShiroKSH]
  • Win32: Uses SetProcessDpiAwarenessContext() instead of SetThreadDpiAwarenessContext() when available, fixing OpenGL DPI scaling issues as e.g. NVIDIA drivers tends to spawn multiple-thread to manage OpenGL. (#9403)

Examples:

  • Android: update to AGP 9.2.0 to support Gradle 9.6.0.
  • Apple+Metal4: added new example. (#9465, #9451) [@hoffstadt]
  • OpenGL3+GLFW/SDL2/SDL3: allow Wine compatibility by passing empty GLSL version string to ImGui_ImplOpenGL3_Init() to let backend decide of a GLSL version based on actual GL version obtained. (#9427, #6577) [@perminovVS]
  • OpenGL3+Win32: rework context creation to allow Wine compatibility. (#9427, #6577) [@perminovVS]
  • SDL2/SDL3: use SDL_GetWindowSizeInPixels() to create frame-buffers. Fixes issues with non-fractional framebuffer size on Wayland. (#8761, #9124) [@billtran1632001]
  • SDL3+Metal4: added new example. (#9458, #9451) [@AmelieHeinrich]
Changes from 1.92.8 to 1.92.9 specific to the Docking+Multi-Viewports branch:

git tag: v1.92.9-docking

Viewports:

  • Fixed an issue where the implicit "Debug" window while hidden would erroneously interfere with merging secondary viewports into the main viewport.

Docking:

  • Fixed behavior change/regression in 1.92.8 where a window using the ImGuiWindowFlags_AlwaysAutoResize flag would have ItemWidth default change when docked. (#9355, #9443) [@reybits]

Backends:

  • Metal4: added multi-viewport support. (#9465, #9451) [@hoffstadt]
  • Vulkan: fixed use after-free when using multi-viewports with dynamic rendering. (#9390, #9468) [@vikhik, @Turtle-PB]
Gallery

@theor: "A app to import svg, convert it to gcode with streaming to a pen plotter:"

ArcBrush: The node-based image editor https://arcbrush.com/ https://x.com/albertomoss / https://x.com/ArcBrushApp

Password Defense: "Zero-Knowledge Password Manager with No Database Server" @smoke1080p https://github.com/smoke1080p/Password-Defense

Tech video about 007 First Light shows a little bit of dear imgui: https://www.youtube.com/watch?v=m0SJ9i9RtRg + selected shots

@MikhailGorobets: "I’m developing a cross-platform DICOM Viewer in C++. The project also builds for the web platform via Emscripten. You can try it here: https://grenzwert.net/ "

by @brenocq: 🐱> Ket - a quantum circuit debugger: "I've been building Ket, an open-source quantum computing library for C++20 (with Python bindings), and its centerpiece is a step-through circuit debugger built entirely with Dear ImGui/ImPlot/ImPlot3D. You load an OpenQASM circuit, step through it gate by gate, and watch the wavefunction evolve -- the editable code, the circuit diagram, the full state vector, and per-qubit Bloch spheres all update live." Website: https://ket.brenocq.com · Code: https://github.com/brenocq/ket The whole thing compiles to WebAssembly, so it runs right in the browser -- no install: 👉 Live demo: https://brenocq.github.io/ket/demo/

@tangtangtang1995 3D Claw "Hi! I’m building 3D Claw, an open-source C++17 workspace for 3D point-cloud and mesh processing. Dear ImGui is used for the docked desktop UI: model tree, property panels, algorithm parameter dialogs, AI assistant panels, and live controls around an Easy3D/OpenGL viewport. The main idea is to make geometry algorithms less black-box: supported tools can expose intermediate states, previews, result metrics, and AI-assisted parameter/result feedback."

GitHub: https://github.com/tangtangtang1995/3D-Claw Article: https://mmwiki.cn/posts/f3a9d120.html Demo: 3D-Claw

Liberation: The next generation of professional laser show software https://liberationlaser.com/ Full video: https://www.youtube.com/watch?v=-ivFNRButXA

@Jaytheway: "Hello! I love ImGui 🧡 I'm using it for JPL Spatial Application that demonstrates some of the features of my audio library JPL Spatial"

MyoGestic, a Real-time EMG / biosignal framework for myocontrol & prosthetics research.

@matrohin _"Hi! Thank you for Dear ImGui and ImPlot! Great libraries!" I'm developing a process explorer for Linux: https://github.com/matrohin/prock

@eduardodoria: Doriax Engine "A free, open-source 2D/3D game engine and integrated editor for building cross-platform games and interactive projects with Lua or C++." https://github.com/doriaxengine/doriax / https://doriax.org / more shots

MemDBG is a high-performance memory debugging and inspection suite designed for PlayStation 4 and PlayStation 5 homebrew research environments. https://github.com/seregonwar/MemDBG Showcase: https://github.com/seregonwar/MemDBG/blob/main/docs/showcase.md

@Jgocunha: "A C++20 library and interactive application for building and simulating Dynamic Neural Field (DNF) architectures: github/dynamic-neural-field-composer. Also, uses implot and imgui-node-editor." https://youtu.be/Ss_FOccIM_o Watch the video

Newly announced and released Box3D by @erincatto: https://box2d.org/posts/2026/06/announcing-box3d/ Has a testbed and replay viewer:

Plinky debug/visualizer by @mmalex https://plinkysynth.com/ from https://bsky.app/profile/mmalex.bsky.social/post/3mpxsfa5krs25 "I stream state out over webusb and get the robots to help me write throwaway one-page visualizers. whatever your tool, visualize visualize visualize! and make every bug worse before you fix it, so you can see its true colours :)"

SOFiSTiK suite "We are very happy to use Dear ImGui in our Viewer application (desktop and web), the interactive post-processing tool part of our structural analysis SOFiSTiK suite:" https://www.sofistik.com/

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

View originalPermalink
How v1.92.9 went

v1.92.8

Added 1
  • Added inline redirection functions for the swapped DrawList function signatures when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off
Changed 2
  • Swapped the last two arguments of ImDrawList::AddRect(), ImDrawList::AddPolyline(), and ImDrawList::PathStroke() to simplify typical call sites
  • Marked old DrawList function signatures as =delete when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is on for better type-checking
Dear ImGui v1.92.8 🌵

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

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

News about Third-Party Projects

Check the Useful Extensions/Widgets page for many more.


Changes in v1.92.8 (since v1.92.7)

🆘 1.92.8 contains a signature change for the trailing optional parameters of ImDrawList::AddRect(). C++ users should be notified at compile-time, but languages without type-checking may only be notified at runtime. Read below. This is unusually bold but we occasionally need this to move forward sanely.

🆘 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
  • DrawList: swapped the last two arguments of AddRect(), AddPolyline(), PathStroke().
-- void ImDrawList::AddRect(ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding = 0.0f, ImDrawFlags flags = 0, float thickness = 1.0f);
++ void ImDrawList::AddRect(ImVec2 p_min, ImVec2 p_max, ImU32 col, float rounding = 0.0f, float thickness = 1.0f, ImDrawFlags flags = 0);
-- void ImDrawList::AddPolyline(const ImVec2* points, int num_points, ImU32 col, ImDrawFlags flags, float thickness);
++ void ImDrawList::AddPolyline(const ImVec2* points, int num_points, ImU32 col, float thickness, ImDrawFlags flags = 0);
-- void ImDrawList::PathStroke(ImU32 col, ImDrawFlags flags = 0, float thickness = 1.0f);
++ void ImDrawList::PathStroke(ImU32 col, float thickness = 1.0f, ImDrawFlags flags = 0);

Added inline redirection functions when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is off. Marked the old functions are =delete when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is on, to allow for better type-checking. Effectively the typical call site is simplified:

-- window->DrawList->AddRect(p_min, p_max, color, rounding, ImDrawFlags_None, border_size);
++ window->DrawList->AddRect(p_min, p_max, color, rounding, border_size);
  • Notes:
    • Users of C++ and other languages with type-checking will be notified at compile-time of any mistakes.
    • Users of high-level bindings or languages with no type-checking will be notified at runtime via an assert for invalid flags value. If you are a binding maintainer consider doing something to facilitate transition or error detection.
    • This is perhaps the worst breaking change in our history :( but it makes ImDrawList function signatures consistent. As we are aiming to add flags and features to variety of ImDrawList functions, that consistency becomes more important. The new order is also more convenient as flags are less frequently used than thickness in real code.
    • As a general policy in Dear ImGui, all our flags default to 0 so ImDrawFlags_None was likely written 0 in some call sites.
    • Consider adding #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS in your imconfig.h, even temporarily, to clean up legacy code.
    • Reminder: you do NOT need to specify ImDrawFlags_RoundCornersAll for rounding, it is already the default!
  • DrawList: obsoleted ImDrawCallback_ResetRenderState in favor of using ImGui::GetPlatformIO().DrawCallback_ResetRenderState, which is part of our new standard draw callbacks. (#9378) Redirecting the earlier value into the later one when set, so both old and new code should work.
  • Backends: Vulkan: redesigned to use separate ImageView + Sampler instead of Combined Image Sampler. This change allows us to facilitate changing samplers, in line with other backends. (#914) [@yaz0r, @ocornut]
    • When creating your own descriptor pool (instead of letting backend creates its own):
      • Before: need at least IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE descriptors of type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER.
      • After: need at least IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZE descriptors of type VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE + IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZE descriptors of type VK_DESCRIPTOR_TYPE_SAMPLER.
    • When registering custom textures: changed ImGui_ImplVulkan_AddTexture() signature to remove Sampler.
      • Before: ImGui_ImplVulkan_AddTexture(VkSampler, VkImageView, VkImageLayout)
      • After: ImGui_ImplVulkan_AddTexture(VkImageView, VkImageLayout)
      • Kept inline redirection function that ignores the sampler (will obsolete).
  • Backends: DirectX10, DirectX11, SDLGPU3, Vulkan: removed samplers from ImGui_ImplXXXX_RenderState. (#9378) Prefer to use backend-agnostic DrawCallback_SetSamplerLinear which works everywhere! If there is a legit need/request for them or any render state we can always add them back.
Other Changes

DrawList:

  • Made AddCallback() user data default to Null for convenience.
  • Added AddLineH(), AddLineV() helpers to draw horizontal and vertical lines. [@memononen] The new functions are more optimal and will be part of a larger effort in 1.93 to fix inconsistencies and improve the DrawList API. In the current API, AddLine() adds a "magic" +0.5f offset and then center the line, whereas AddLineH()/AddLineV() use the right side of the line to expand. For thickness=1.0f lines this is equivalent and faster:
    • AddLine({10,3}, {20,3}, ...) --> AddLineH(x1=10, x2=20, y=3, ...)
    • AddLine({3,10}, {3,20}, ...) --> AddLineV(x=3, y1=10, y2=20, ...)
    • For larger integer thickness, AddLine() will center but may be blurry, AddLineH()/AddLineV() will expand "inside" (to the right side) and will always be sharp. A subsequent release will expand on those concepts and add new options.
  • Added room in ImGuiPlatformIO for standard backend-agnostic draw callbacks. Those callbacks are setup/provided by the backend and available in most of our standard backends. They allow backend-agnostic code from e.g. switching to a Nearest/Point sampler without messing with custom Renderer-specific callbacks:
    • platform_io.DrawCallback_ResetRenderState; // Request to reset the graphics/render state.
    • platform_io.DrawCallback_SetSamplerLinear; // Request to set current texture sampling to Linear
    • platform_io.DrawCallback_SetSamplerNearest; // Request to set current texture sampling to Nearest/Point
    • Note that some backends might not support all callbacks. (#9378, #9371, #3590, #8926, #2973, #7485, #7468, #6969, #5118, #7616, #9173, #8322, #7230, #5999, #6452, #5156, #7342, #7592, #7511)

InputText:

  • InputTextMultiline: fixed an issue processing deactivation logic when an active multi-line edit is clipped due to being out of view.
  • Fixed a crash when toggling ReadOnly while active. (#9354)
  • CharFilter callback event sets CursorPos/SelectionStart/SelectionEnd. (#816)

Tables:

  • Fixed issues reporting ideal size to parent window/container: (#9352, #7651)
    • When both scrollbars are visible but only one of ScrollX/ScrollY was explicitly requested.
    • When vertical scrollbar was not at the top, the computation was often incorrect.

Windows:

  • Fixed a single-axis auto-resizing feedback loop issue with nested containers and varying scrollbar visibility. (#9352)
  • Detect and report error when calling End() instead of EndPopup() on a popup. (#9351)
  • Child windows with only ImGuiChildFlags_AutoResizeY flag keep using the proportional default ItemWidth. (#9355)
  • Using mouse wheel to scroll takes and keeps ownership of the corresponding keys (e.g. ImGuiKey_MouseWheelY) while a wheeling window is locked. (#2604, #3795)

InputInt, InputFloat, InputScalar:

  • Reinstated ImGuiInputTextFlags_EnterReturnsTrue support which was removed in 1.91.4. (#8665, #9299, #8065, #3946, #6284, #9117)
    • Fixed the fact that it didn't return true when validating same value.
    • Fixed losing value when tabbing out or losing focus.
    • Made it that pressing +/- step buttons also return true, which is in line with 1.91.4 behavior.
    • In a majority of cases you should use IsItemDeactivatedAfterEdit() instead, but it still has a few edge cases flaws (to be addressed soon).
  • Allow passing a format string that does not display the scalar value. Parsing input with default format for the type. (#9385) [@FireFox2000000]

Multi-Select:

  • Fixed an issue using Multi-Select within a Table causing column width measurement to be invalid when trailing column contents is not submitted in the last row. (#9341, #8250)
  • Fixed an issue using Multi-Select within a Table with the right-most column visible, which could lead to an extra vertical offset in the Header row. (#8250)

Multi-Select + Box-Select:

  • Fixed an issue using ImGuiMultiSelectFlags_BoxSelect1d mode while scrolling. Notably, using mouse wheel while holding a box-selection could lead items close to windows edges from not being correctly unselected. (#7994, #8250, #7821, #7850, #7970)
  • Improved dirty/unclip rectangle logic for ImGuiMultiSelectFlags_BoxSelect2d.
  • Fixed an issue using ImGuiMultiSelectFlags_BoxSelect2d mode, where items out of view wouldn't be properly selected while scrolling while mouse cursor is hovering outside of selection scope. (#7994, #1861, #6518)
  • Fixed an issue where items out of horizontal view would sometimes lead to incorrect merging of sequential selection requests while also scrolling fast enough to overlap multiple rows during a frame. (#7994, #1861, #6518)
  • Fixed an issue using ImGuiMultiSelectFlags_BoxSelect2d mode in a Table while relying on the TableNextColumn() return value to perform coarse clipping. (#7994)
  • Disabled merging consecutive selection requests as we have no reliable way of detecting if user has submitted all consecutive items without clipping gaps, and ImGuiSelectionUserData is technically opaque storage. (#7994, #1861) (we will probably bring this back as a minor optimization if we have a way to for user to tell us ImGuiSelectionUserData are indices)
  • Fixes for using across nested child windows. (#8364)
  • Box-Select + Clipper: fixed an issue selecting items while scrolling while a clipper active. (#7994, #8250, #7821, #7850, #7970)
  • Box-Select + Tables: fixed an issue using box-selection in a tables with items straying out of columns boundaries. (#7994, #2221)
  • Box-Select + Tables: fixed an issue when calling BeginMultiSelect() in a table before layout has been locked (first row or headers row submitted). (#8250)

Menus:

  • BeginMenu()/MenuItem(): fixed accidental triggering of child menu items when opening a menu inside a small host window forcing the child menu window to be repositioned under the mouse cursor. (#8233, #9394) Done by reworking BeginMenu()/MenuItem(): they previously avoiding taking ActiveID + key/click ownership (in order to allow releasing button on another item). Now they take them and release them once the mouse is moved outside item boundaries.

Inputs:

  • SetItemKeyOwner(): return true if ownership has been requested, which typically needs to to checked for gating further tests. This is important as the function may fail. (#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641)
  • SetItemKeyOwner(): does not set ownership is key is already taken. Effectively this makes using SetItemKeyOwner(ImGuiKey_MouseWheelY) over an item work as expected while not having item react if a scroll wheel is actively in progress. May be subject to further redesign, e.g. conditional flags. Feedback welcome!

Style:

  • Checkbox: added ImGuiCol_CheckboxSelectedBg to change or accentuate the background color of checked/mixed checkboxes. (#9392)
  • Added ImGuiStyleVar_DragDropTargetRounding. (#9056)
  • Fixed vertical scrollbar top coordinates when using thick borders on windows with no title bar and no menu bar. (#9366)

Fonts:

  • imgui_freetype: add FreeType headers & compiled version in 'About Dear ImGui' details.
  • Assert when using MergeMode with an explicit size over a target font with an implicit size, as scale factor are likely erroneous. (#9361)

Clipper:

  • Improved error reporting when misusing the clipper inside a table (prioritize reporting the common clipper error over a table sanity check assert). (#9350)
  • Tweaked assert triggering when first item height measurement fails, and made it a better recoverable error. (#9350)

Misc:

  • Minor optimization: reduce redundant label scanning in common widgets.
  • Added missing Test Engine hooks for PlotLines(), PlotHistogram(), VSliderXXX() and TableHeader() functions.

Demo:

  • Added simple demo for a scrollable/zoomable image viewer with a grid. Available in Examples->Image Viewer and Widgets->Images.

Backends:

  • Added support for new standardized draw callbacks in most backends: (#9378) (Vulkan backend by @yaz0r, Metal by @ssh4net, others by @ocornut)
Allegro5:     Reset     n/a               n/a
DX9:          Reset     SetSamplerLinear  SetSamplerNearest
DX10:         Reset     SetSamplerLinear  SetSamplerNearest
DX11:         Reset     SetSamplerLinear  SetSamplerNearest
DX12:         Reset     SetSamplerLinear  SetSamplerNearest
Metal:        Reset     SetSamplerLinear  SetSamplerNearest
OpenGL2:      Reset     SetSamplerLinear  SetSamplerNearest
OpenGL3+:     Reset     SetSamplerLinear* SetSamplerNearest*
SDLGPU3:      Reset     SetSamplerLinear  SetSamplerNearest
SDLRenderer2: Reset     n/a               n/a
SDLRenderer3: Reset     SetSamplerLinear  SetSamplerNearest
Vulkan:       Reset     SetSamplerLinear  SetSamplerNearest
WebGPU:       Reset     SetSamplerLinear  SetSamplerNearest
  • GLFW: added a Win32-specific implementation of ImGui_ImplGlfw_GetContentScaleXXXX functions for legacy GLFW 3.2. (#9003)
  • Metal: avoid redundant vertex buffer bind in SetupRenderState(), which leads to validation issue. (#9343) [@Hunam6]
  • Metal: use a dedicated bufferCacheLock to avoid crashing when bufferCache is replaced by a new object while being used for @synchronize(). (#9367) [@andygrundman]
  • SDL2: made ImGui_ImplSDL2_GetContentScaleForWindow()/ImGui_ImplSDL2_GetContentScaleForDisplay() helpers return a minimum of 1.0f, as some Linux setup seems to report <1.0f value and this breaks scaling border size. (#9369)
  • WebGPU: rework choice/detection of using WGSL/SPIR-V shader on WGVK. (#9316, #9246, #9257, #9387)

Examples:

  • Update VS toolset in all .vcxproj from VS2015 (v140) to VS2017 (v141). The later is the first that supports vcpkg. Onward we will likely stop testing building the library with VS2015.
  • GLFW+Vulkan, SDL2+Vulkan, SDL3+Vulkan, Win32+Vulkan: reworked to create a descriptor pool with:
    • IMGUI_IMPL_VULKAN_MINIMUM_SAMPLED_IMAGE_POOL_SIZE descriptors of type VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE.
    • IMGUI_IMPL_VULKAN_MINIMUM_SAMPLER_POOL_SIZE descriptors of type VK_DESCRIPTOR_TYPE_SAMPLER.
Changes from 1.92.7 to 1.92.8 specific to the Docking+Multi-Viewports branch:

git tag: v1.92.8-docking

  • Docking: toggling tab bar visibility marks saved settings as dirty. (#9380)
  • Viewports: added opaque void* PlatformIconData storage in viewport and ImGuiWindowClass to allow passing icon information to a custom backend or hook. (#2715)
Gallery

@dunkbing: "DearSQL — Native SQL client for macOS, Linux & Windows." https://dearsql.dev

@devkaiwang: "New version of Intel XeSS Inspector, a powerful debugging and validation tool designed for Intel XeSS. It supports XeSS Super Resolution (XeSS-SR), XeSS Frame Generation (XeSS-FG), and Xe Low Latency (XeLL)."

@henri23: Voltrum: An open-source EDA software for microchip design and simulation, written in c-style c++ with custom Vulkan rendering. https://github.com/henri23/voltrum

@BigJk: "I build a fun prototype last week called StdUI. The idea is making a UI language agnostic by being completely controlled via stdin/stdout. So any language can spawn the UI-engine as sub-process and tell it what to display and react to events. Layout is done via HTML/CSS (using ImHTML) and interactive widgets are ImGui components like inputs and sliders placed into the layout."

<!-- these render to ImGui elements that emit events -->
<ui-button text="Save" action="save"></ui-button>
<ui-input id="name" type="text" placeholder="Your name" value=""></ui-input>
<ui-select id="theme" options="Light|Dark|System" value="Light"></ui-select>
<ui-slider id="vol" min="0" max="1" value="0.5"></ui-slider>
<ui-checkbox id="notify" label="Enable notifications" checked="false"></ui-checkbox>

The examples in the repo are using golang to interface with the UI. It's not intended for complex UI's, but for some smaller stuff it might be fun 😃 more about StdUI

@memononen's Data Inheritance model https://github.com/memononen/data_inheritance

@aiekick: "Just for fun, working on my ImGenie (for reproducing the Genie effect of MacOs). Now released ImGenie! See this demo With ImCoolBar or play with this Emscripten demo" ImGenie

@OusmBlueNinja: "A Game engine I'm working on called "Inertia" with a 100% C23 core with a heavily modified, DearImGui Based editor. I ended writing a backend that hooks into my Renderer." https://dock-it.dev/iDENTITY-Technology/Inertia more about Inertia

dcmake: CMake debugger front-end Code: https://github.com/skeeto/dcmake/ Blog: https://nullprogram.com/blog/2026/04/07/

@chrispruett: Story Machine is a 2D game engine designed for speed and accessibility. Two games have shipped on this engine so far and a third (SUSPICIOUS HOLES) is currently in development. This is vanilla Dear Imgui with no hacks or mods, just a lot of widgets built on top. Fonts and colors are sourced from the OS! Runs on Mac and Windows and builds games for Mac/Windows/Linux/Web/Switch.

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

View originalPermalink
How v1.92.8 went

v1.92.7

Fixed 1
  • Separator() fixed a legacy quirk where it was submitting a zero-height item for layout purpose even though it draws a 1-pixel separator
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

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.
  • 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:
    • PathArcTo(): fixed erroneous segment count for pathologically small arcs on large circles. (#9331, #9313) [@thedmd, @epajarre]
  • 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

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

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

@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

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 [...] 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. (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.

View originalPermalink
How v1.92.7 went

v1.92.6

Added 3
  • Added new scalable default font ProggyForever as an alternative to the classic bitmap font
  • Added optional and configurable color markers for ColorEdit
  • Added opt-in support for multi-component Drags and Sliders with color markers
Changed 5
  • AddFontDefault() now automatically selects between AddFontDefaultBitmap() and AddFontDefaultVector() based on font size and display density
  • Font-related tweaks and improvements throughout the library
  • Improved word-wrapping behavior
  • Fixed multi-viewports Z-order related issues
  • Enhanced support for Nearest filtering in backends
Fixed 4
  • Fixed Tables functionality and rendering
  • Fixed TreeNode behavior
  • Fixed InputText handling
  • Fixed Navigation system issues
Removed 1
  • Changed default parameter behavior in BeginPopupContextXXX() functions
v1.92.6 🔍

❤️ 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 recent/renewing sponsors:

And:


🎤 Embarrassment time 🎤

Wookash Podcast had me a few months ago, 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

Unreal Engine users? See "Converging toward a principal Unreal Engine backend/binding for Dear ImGui?"

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


Changes (since v1.92.5)

🆘 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;
  • Opinionatedly not focusing on styling and yet keeps looking a little bit better with every release 🎉
  • Opinionatedly keeps increasing version number in a shy way.
  • Exciting new alternative scalable default font ProggyForever.
  • Font related tweak/fixes.
  • Might-be-affecting-some breaking-change for bizarre old default parameter to BeginPopupContextXXX().
  • Added optional/configurable color markers for ColorEdit, and opt-in for multi-components Drags/Sliders.
  • Tables, TreeNode, InputText, Navigation fixes etc.
  • Word-wrapping improvements.
  • Multi-viewports Z-ordered related fixed.
  • Facilitate use of Nearest filtering for many backends (not yet fully backend agnostic).
  • Many other things.
Breaking Changes
  • Fonts:
    • AddFontDefault() now automatically selects an embedded font between:
      • AddFontDefaultBitmap(): classic pixel-clean font. Recommended at Size 13px with no scaling.
      • AddFontDefaultVector(): new scalable font. Recommended at any higher size.
      • The default selection is based on (style.FontSizeBase * FontScaleMain * FontScaleDpi * DisplayDensity) reaching a small threshold, but old codebases may not set any of them properly. As as a result, it is likely that old codebases may still default to AddFontDefaultBitmap()`.
      • Prefer explicitly calling either of them based on your own logic! You can call AddFontDefaultBitmap() to ensure legacy behavior.
    • Fixed handling of ImFontConfig::FontDataOwnedByAtlas = false which did erroneously make a copy of the font data, essentially defeating the purpose of this flag and wasting memory (undetected since July 2015 and now spotted by @TellowKrinkle, this is perhaps the oldest bug in Dear ImGui history, albeit for a rarely used feature!) (#9086, #8465) HOWEVER, fixing this bug is likely to surface bugs in user/app code:
      • Prior to 1.92, font data only needs to be available during the atlas->AddFontXXX() call.
      • Since 1.92, font data needs to available until atlas->RemoveFont(), or more typically until a shutdown of the owning context or font atlas.
      • The fact that handling of FontDataOwnedByAtlas = false was broken bypassed the issue altogether.
    • Removed ImFontConfig::PixelSnapV added in 1.92 which turns out is unnecessary (and was mis-documented). Post-rescale GlyphOffset is always rounded.
  • Popups: changed compile-time ImGuiPopupFlags popup_flags = 1 default value to be = 0 for BeginPopupContextItem(), BeginPopupContextWindow(), BeginPopupContextVoid(), OpenPopupOnItemClick(). The default value has same meaning before and after. (#9157, #9146)
    • Before this version, those functions had a 'ImGuiPopupFlags popup_flags = 1 default value in their function signature. This was introduced by a change on 2020/06/23 (1.77) while changing the signature from int mouse_button to ImGuiPopupFlags popup_flags and trying to preserve then-legacy behavior.
    • We have now changed this behavior to: cleanup a very old API quirk, facilitate use by bindings, and to remove the last and error-prone non-zero default value. Also because we deemed it extremely rare to use those helper functions with the Left mouse button! As using the LMB would generally be triggered via another widget, e.g. a Button() + a OpenPopup()/BeginPopup() call.
    • Before: The default = 1 means ImGuiPopupFlags_MouseButtonRight. Explicitly passing a literal 0 means ImGuiPopupFlags_MouseButtonLeft.
    • After: The default = 0 means ImGuiPopupFlags_MouseButtonRight. Explicitly passing a literal 1 also means ImGuiPopupFlags_MouseButtonRight. (if legacy behavior are enabled) or will assert (if legacy behavior are disabled).
    • TL;DR: if you don't want to use right mouse button for popups, always specify it explicitly using a named ImGuiPopupFlags_MouseButtonXXXX value.
    • Recap:
BeginPopupContextItem("foo");                                         // Behavior unchanged (use Right button)
BeginPopupContextItem("foo", ImGuiPopupFlags_MouseButtonLeft);        // Behavior unchanged (use Left button)
BeginPopupContextItem("foo", ImGuiPopupFlags_MouseButtonLeft | xxx);  // Behavior unchanged (use Left button + flags)
BeginPopupContextItem("foo", ImGuiPopupFlags_MouseButtonRight | xxx); // Behavior unchanged (use Right button + flags)
BeginPopupContextItem("foo", 1);                                      // Behavior unchanged (as a courtesy we legacy interpret 1 as ImGuiPopupFlags_MouseButtonRight, will assert if disabling legacy behaviors.
BeginPopupContextItem("foo", 0);                                      // !! Behavior changed !! Was Left button. Now will defaults to Right button! --> Use ImGuiPopupFlags_MouseButtonLeft.
BeginPopupContextItem("foo", ImGuiPopupFlags_NoReopen);               // !! Behavior changed !! Was Left button + flags. Now will defaults to Right button! --> Use ImGuiPopupFlags_MouseButtonLeft | xxx.
  • Commented out legacy names obsoleted in 1.90 (Sept 2023):
    • BeginChildFrame() --> BeginChild() with ImGuiChildFlags_FrameStyle flag.
    • EndChildFrame() --> EndChild().
    • ShowStackToolWindow() --> ShowIDStackToolWindow().
    • IM_OFFSETOF() --> offsetof().
    • IM_FLOOR() --> IM_TRUNC() [internal, for positive values only]
  • Hashing: handling of "###" operator to reset to seed within a string identifier doesn't include the "###" characters in the output hash anymore: Before: GetID("Hello###World") == GetID("###World") != GetID("World") After: GetID("Hello###World") == GetID("###World") == GetID("World")
    • This has the property of facilitating concatenating and manipulating identifiers using "###", and will allow fixing other dangling issues.
    • This will invalidate hashes (stored in .ini data) for Tables and Windows that are using the "###" operators. (#713, #1698)
  • Renamed helper macro IM_ARRAYSIZE() -> IM_COUNTOF(). Kept redirection/legacy name.
  • Backends:
    • Vulkan: optional ImGui_ImplVulkanH_DestroyWindow() helper used by our example code does not call vkDestroySurfaceKHR(): because surface is created by caller of ImGui_ImplVulkanH_CreateOrResizeWindow(), it is more consistent. (#9163)
Other Changes
  • Fonts:
    • Added AddFontDefaultVector(): a new embedded monospace scalable font: ProggyForever! From https://github.com/ocornut/proggyforever: _"ProggyForever is an MIT-licensed partial reimplementation of the ProggyVector font (originally by Tristan Grimmer), which itself is a vector-based reinterpretation of the ProggyClean bitmap font that happily served as Dear ImGui default font for over 10 years." [...] "I commissioned Thiebault Courot to recreate this, applied various minor tweaks and fixes, and reworked his editing pipeline toward shipping FontForge source files so we can allow and track future changes."
      • TL;DR; there was no strictly MIT-licensed matching font. We made it!
      • The font data was carefully subsetted, trimmed and compressed so the embedded data is ~14 KB. Embedding a scalable default font ensures that Dear ImGui can be easily and readily used in all contexts, even without file system access.
      • Expect minor fixes/improvements in following releases.
      • As always you can opt-out of the embedded font data if desired.
    • AddFontDefault() now automatically selects an embedded font between the classic pixel-looking one and the new scalable one. Prefer calling AddFontDefaultVector() or AddFontDefaultBitmap() explicitly.
    • Fixed a crash when trying to use AddFont() with MergeMode==true on a font that has already been rendered. (#9162) [@ocornut, @cyfewlp]
    • Fixed an issue where using PushFont() from the implicit/fallback "Debug" window when its recorded state is collapsed would incorrectly early out. This would break e.g. using direct draw-list calls such as GetForegroundDrawList() with current font. (#9210, #8865)
    • Fixed an issue related to EllipsisChar handling, while changing font loader or font loader flags dynamically in Style->Fonts menus.
    • imgui_freetype: fixed overwriting ImFontConfig::PixelSnapH when hinting is enabled, creating side-effects when later disabling hinting or dynamically switching to stb_truetype rasterizer.
    • Adding new fonts after removing all fonts mid-frame properly updates current state.
  • Textures:
    • Fixed a building issue when ImTextureID is defined as a struct.
    • Fixed displaying texture # in Metrics/Debugger window.
  • Menus:
    • Fixed MenuItem() label position and BeginMenu() arrow/icon/popup positions, when used inside a line with a baseline offset.
    • Made navigation into menu-bar auto wrap on X axis. (#9178)
  • TreeNode:
    • Fixed highlight position when used inside a line with a large text baseline offset (it never quite worked in this situation; but then most of the time the text baseline offset ends up being zero or FramePadding.y for a given line).
  • Tables:
    • Fixed an issue where a very thin scrolling table would advance parent layout slightly differently depending on its visibility (caused by a mismatch between hard minimum window size and table minimum size).
    • Fixed an issue where submitting non-integer row heights would eventually advance table parent layout by +0/+1 depending on its visibility.
    • Fixed losing stored display order when reducing column count or when .ini data has missing or duplicate values. (#9108, #4046)
  • ColorEdit:
    • Added R/G/B/A color markers next to each component (enabled by default).
    • Added ImGuiColorEditFlags_NoColorMarkers to disable them.
    • Added style.ColorMarkerSize to configure width of color component markers.
  • Sliders, Drags:
    • Added ImGuiSliderFlags_ColorMarkers to opt-in adding R/G/B/A color markers next to each components, in multi-components functions.
    • Added a way to select a specific marker color.
  • InputText:
    • InputTextMultiline(): fixed a minor bug where Shift+Wheel would allow a small horizontal scroll offset when there should be none. (#9249)
    • ImGuiInputTextCallbackData: SelectAll() also sets CursorPos to SelectionEnd.
    • ImGuiInputTextCallbackData: Added SetSelection() helper.
    • ImGuiInputTextCallbackData: Added ID and EventActivated members. (#9174)
  • Text, InputText:
    • Reworked word-wrapping logic:
      • Try to not wrap in the middle of contiguous punctuation. (#8139, #8439, #9094)
      • Try to not wrap between a punctuation and a digit. (#8503)
      • Inside InputTextMultiline() with WordWrap enabled: prefer keeping blanks at the end of a line rather than at the beginning of next line. (#8990, #3237)
    • Fixed low-level word-wrapping function reading from *text_end when passed a string range. (#9107) [@achabense]
    • Changed RenderTextEllipsis() logic to not trim trailing blanks before the ellipsis, making ellipsis position more consistent and not arbitrary hiding the possibility of multiple blanks. (#9229)
  • Nav:
    • Fixed remote/shortcut InputText() not teleporting mouse cursor when nav cursor is visible and io.ConfigNavMoveSetMousePos is enabled.
    • Fixed a looping/wrapping issue when used in menu layer. (#9178)
    • Fixed speed scale for resizing/moving with keyboard/gamepad. We incorrectly used io.DisplayFramebufferScale as a scaling factor (very old code), effectively making those actions faster on macOS/iOS retina screens. (changed this to use a style scale factor that's not fully formalized yet)
    • Fixed an UBSan warning when using in a ImGuiListClipper region . (#9160)
  • Scrollbar: fixed a code-path leading to a divide-by-zero (which would not be noticeable by user but detected by sanitizers). (#9089) [@judicaelclair]
  • InvisibleButton: allow calling with size (0,0) to fit to available content size. (#9166, #7623)
  • Tooltips, Disabled: fixed EndDisabledOverrideReenable() assertion when nesting a tooltip in a disabled block. (#9180, #7640) [@RegimantasSimkus]
  • Added GetItemFlags() in public API for consistency and to expose generic flags of last submitted item. (#9127)
  • Misc: fixed build on ARM64/ARM64EC targets trying to use SSE/immintrin.h. (#9209, #5943, #4091) [@navvyswethgraphics]
  • Log/Capture:
    • Fixed erroneously injecting extra carriage returns in output text buffer when ItemSpacing.y > FramePadding.y + 1 while emitting items.
  • Images:
    • Added style.ImageRounding, ImGuiStyleVar_ImageRounding to configure rounding of Image() widgets. (#2942, #845)
    • ImageButton() doesn't use a clamped style.FrameRounding value but instead adjust inner image rounding when FramePadding > FrameRounding`. (#2942, #845)
  • Shortcuts:
    • IsItemHovered() without ImGuiHoveredFlags_AllowWhenBlockedByActiveItem doesn't filter out the signal when activated item is a shortcut remote activation; (which mimics what's done internally in the ItemHoverable() function). (#9138)
    • Fixed tooltip placement being affected for a frame when located over an item activated by SetNextItemShortcut(). (#9138)
  • Error Handling:
    • Improved error handling and recovery for EndMenu()/EndCombo(). (#1651, #9165, #8499)
    • Improved error handling and recovery for TableSetupColumn().
  • Debug Tools:
    • Debug Log: fixed incorrectly printing characters in IO log when submitting non-ASCII values to io.AddInputCharacter(). (#9099)
    • Debug Log: can output to debugger on Windows via Win32 OutputDebugString() (#5855)
  • Demo:
    • Slightly improve Selectable() demos. (#9193)
  • Backends:
    • DirectX10: added SamplerNearest in ImGui_ImplDX10_RenderState. (+renamed SamplerDefault to SamplerLinear, which was tagged as beta API)
    • DirectX11: added SamplerNearest in ImGui_ImplDX11_RenderState. (+renamed SamplerDefault to SamplerLinear, which was tagged as beta API)
    • GLFW: Avoid repeated glfwSetCursor() / glfwSetInputMode() unnecessary calls. Lowers overhead for very high framerates (e.g. 10k+ FPS). [@maxliani]
    • GLFW: Added IMGUI_IMPL_GLFW_DISABLE_X11 / IMGUI_IMPL_GLFW_DISABLE_WAYLAND to forcefully disable either. (#9109, #9116) Try to set them automatically if headers are not accessible. (#9225)
    • OpenGL3: Fixed embedded loader multiple init/shutdown cycles broken on some platforms. (#8792, #9112)
    • SDL2, SDL3: changed GetClipboardText() handler to return NULL on error aka clipboard contents is not text. Consistent with other backends. (#9168)
    • SDL2, SDL3: systems other than X11 are back to starting mouse capture on mouse down (reverts 1.91.9 change). Only X11 requires waiting for a drag by default (not ideal, but a better default for X11 users). Waiting for a drag to start mouse capture leads to input drops when dragging after clicking on the edge of a window. (#3650, #6410, #9235, #3956, #3835)
    • SDL2, SDL3: added ImGui_ImplSDL2_SetMouseCaptureMode()/ImGui_ImplSDL3_SetMouseCaptureMode() function for X11 users to disable mouse capturing/grabbing. (#3650, #6410, #9235, #3956, #3835)
      • When attached to a debugger may want to call:
        • ImGui_ImplSDL3_SetMouseCaptureMode(ImGui_ImplSDL3_MouseCaptureMode_Disabled);
      • But you can also configure your system or debugger to automatically release mouse grab when crashing/breaking in debugger, e.g.
        • console: setxkbmap -option grab:break_actions && xdotool key XF86Ungrab
        • or use a GDB script to call SDL_CaptureMouse(false). See #3650.
      • On platforms other than X11 this is unnecessary.
    • SDL_GPU3: added SamplerNearest in ImGui_ImplSDLGPU3_RenderState.
    • SDL_GPU3: macOS version can use MSL shaders in order to support macOS 10.14+ (vs Metallib shaders requiring macOS 14+). Requires application calling SDL_CreateGPUDevice() with SDL_GPU_SHADERFORMAT_MSL. (#9076) [@Niminem]
    • Vulkan: helper for creating a swapchain (used by examples and multi-viewports) selects VkSwapchainCreateInfoKHR's compositeAlpha value based on cap.supportedCompositeAlpha, which seems to be required on some Android devices. (#8784) [@FelixStach]
    • WebGPU: fixes for Emscripten 5.0.0 (note: current examples do not build with 5.0.1).
    • Win32: handle WM_IME_CHAR/WM_IME_COMPOSITION to support Unicode inputs on MBCS (non-Unicode) Windows. (#9099, #3653, #5961) [@ulhc, @ocornut, @Othereum]
    • Win32: minor optimization not submitting gamepad input if packet number has not changed (reworked previous 1.92.4). (#9202, #8556) [@AhmedSamyMousa, @MidTerm-CN]
  • Examples:
    • Win32+DirectX12: ignore seemingly incorrect D3D12_MESSAGE_ID_FENCE_ZERO_WAIT warning on startups on some setups. (#9084, #9093) [@RT2Code, @LeoGautheron]
Changes from 1.92.5 to 1.92.6 specific to the Docking+Multi-Viewports branch:

git tag: v1.92.6-docking

  • Docking:
    • Fixed various rendering issues and ability to have rounded floating dock nodes (#6993, #6151) - please note that rounding is still disabled on standalone viewports.
    • Fixed implicit/fallback "Debug" window from staying visible if once docked. (#9151)
    • Demo: rework 'Dockspace' demo to increase clarity and put more emphasis on the basic path of simply calling DockSpaceOverViewport().
  • Viewports:
    • Fixed a regression in 1.92.4 where partially moving a floating docking node with horizontal/vertical split over the main viewport would set the window in an invalid state in some situations, making user unable to further interact with the window.
    • Fixed a regression in 1.92.4 which could cause combos/popups window from appearing under their parent viewport if their geometry overlapped the main viewport. (#8948, #9172, #9131, #9128)
    • Fixed an assert in background dimming code, which could trigger after using gamepad/keyboard to move a window to another viewport. (#9053) [@lut0pia, @ocornut]
  • Backends:
    • GLFW: dynamically load X11 functions to avoid -lx11 linking requirement introduced in 1.92.3. (#9116, #9109) [@ramenguy99]
    • GLFW: improve workarounds for cases where GLFW is unable to provide reliable monitor info. Preserve existing monitor list when none of the new one is valid. (#9195, #7902, #5683)
    • SDL2, SDL3: adjust IME offset to match other backends and master branch. (#6071, #1953)
    • Win32: viewports created by backend forcefully direct messages to DefWindowProcW() in order to support Unicode text input. (#9099, #3653, #5961) [@ulhc]
    • Win32: fixed an issue from 1.90.5 where newly appearing windows that are not parented to the main viewport didn't have their task bar icon appear before the window was explicitly refocused. (#7354, #8669)
Gallery

"Seb Lee shows a really cool laser art installation with custom control software using dear imgui!" Full video of the behind the scenes: https://www.youtube.com/watch?v=FgTo5WRluy0

@soufianekhiat: "ImAnim - Animation Engine for Dear ImGui" https://github.com/ocornut/imgui/issues/9102 https://github.com/soufianekhiat/ImAnim Image

id Software (Doom: The Dark Ages) at Graphics Programming Conference 2025 (https://www.graphicsprogrammingconference.nl): Image

Unknown software visible at 6:04 in The making of Tarantino’s The Lost Chapter: Yuki’s Revenge Image ...More in gallery threads.

Internal tooling for Absolum (custom engine by Guard Crush Games) Image

https://www.sees.ai/ has all sorts of video on their youtube channel: e.g. Autonomous electricity grid inspection https://www.youtube.com/watch?v=hTEVNdqI89U Image (link to more)

@BigJk: "Using ImGui (again) for my next steam game. It's a Fake OS + Dungeon Crawler + Match-3 game called DungeonOS. " https://store.steampowered.com/app/4221660/DungeonOS/

Geopoint, Geolidar by Geobotica https://www.geobotica.com/geolidar/

CVEDIA-RT https://www.cvedia.com/cvedia-rt https://www.reddit.com/r/MachineLearning/comments/w5w0jq/p_we_have_developed_cvediart_as_a_free_tool_to/

https://github.com/user-attachments/assets/b5e7a41b-c5e8-4c38-a520-f00ff77e38d1

@jose-donato: "crypto orderflow app built using dear imgui (c++) and compiled to the web using emscripten" app: https://cryexc.josedonato.com, full demo here: https://x.com/josedonato__/status/2010022826317885817

@THISISAGOODNAME: "I made a NES emulator & nsf player." https://github.com/CU-Production/imgui_fc_visualizer

@Flinterpop "A GIS app I developed for use with different modules such as the ADS-B and Radar message emulator. "

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

View originalPermalink
How v1.92.6 went

v1.92.5

Changed 2
  • Config flag io.ConfigWindowsMoveFromTitleBarOnly is now latched during Begin(), allowing to change the value on a per-window basis
  • WebGPU backend and examples updated to latest Emscripten, native DAWN, and native WGPU changes
Fixed 4
  • Single-axis auto-sizing fixes
  • Tables fixes
  • InputText fixes
  • Keyboard navigation fixes
Removed 4
  • Commented out legacy key names ImGuiKey_ModCtrl, ImGuiKey_ModShift, ImGuiKey_ModAlt, and ImGuiKey_ModSuper obsoleted in v1.89.0
  • Commented out legacy io.ClearInputCharacters() obsoleted in v1.89.8
  • Commented out legacy BeginChild flags ImGuiChildFlags_Border, ImGuiWindowFlags_NavFlattened, and ImGuiWindowFlags_AlwaysUseWindowPadding
  • Commented out legacy SetItemAllowOverlap() obsoleted in v1.89.7
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"

@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!"

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

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

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

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

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

View originalPermalink
How v1.92.5 went

v1.92.4

Added 4
  • Added lower-right resize grip on child windows using both ImGuiChildFlags_ResizeX and ImGuiChildFlags_ResizeY flags
  • Added ImGuiCol_UnsavedMarker color for the unsaved document marker
  • Added ImGuiPlatformIO::ClearPlatformHandlers() and ClearRendererHandlers() helpers to null all handlers
  • Added support for combining ImGuiInputFlags_RouteFocused with ImGuiInputFlags_RouteOverActive to steal shortcuts from active item
Changed 3
  • Vulkan backend: moved RenderPass, Subpass, MSAASamples, and PipelineRenderingCreateInfo fields into ImGui_ImplVulkan_InitInfo.PipelineInfoMain
  • Vulkan backend: renamed ImGui_ImplVulkan_MainPipelineCreateInfo to ImGui_ImplVulkan_PipelineInfo
  • Vulkan backend helper ImGui_ImplVulkanH_CreateOrResizeWindow() added a VkImageUsageFlags image_usage argument
Fixed 1
  • Fixed single-line InputText() not applying fine character clipping properly
Removed 1
  • Commented out legacy TreeNode, Selectable, and Clipper names obsoleted in 1.89.7 and 1.89.9
v1.92.4 ~

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

New studio enters!

And usual supporters:

❤️ 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 @pthom, @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!


Changes (since v1.92.3)

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

Breaking Changes
  • Backends:
    • TreeNode, Selectable, Clipper: commented out legacy names obsoleted in 1.89.7 (July 2023) and 1.89.9 (Sept 2023): ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlap ImGuiListClipper::IncludeRangeByIndices() --> ImGuiListClipper::IncludeItemsByIndex()
    • Vulkan: moved some fields in ImGui_ImplVulkan_InitInfo: init_info.RenderPass --> init_info.PipelineInfoMain.RenderPass init_info.Subpass --> init_info.PipelineInfoMain.Subpass init_info.MSAASamples --> init_info.PipelineInfoMain.MSAASamples init_info.PipelineRenderingCreateInfo --> init_info.PipelineInfoMain.PipelineRenderingCreateInfo It makes things more consistent and was desirable to introduce new settings for secondary viewports. (#8946, #8110, #8111, #8686) [@ocornut, @SuperRonan, @sylmroz]
    • Vulkan: renamed ImGui_ImplVulkan_MainPipelineCreateInfo --> ImGui_ImplVulkan_PipelineInfo (introduced very recently and only used by ImGui_ImplVulkan_CreateMainPipeline() so it should not affect many users). (#8110, #8111)
    • Vulkan: helper ImGui_ImplVulkanH_CreateOrResizeWindow() added a VkImageUsageFlags image_usage argument. It was previously hardcoded to VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT and defaults to that when the value is 0. In theory the function is an internal helper but since it's used by our examples some may have used it. (#8946, #8111, #8686)
Other Changes
  • Windows: added lower-right resize grip on child windows using both ImGuiChildFlags_ResizeX and ImGuiChildFlags_ResizeY flags. (#8501) [@aleksijuvani] The grip is not visible before hovering to reduce clutter.
  • Style: added ImGuiCol_UnsavedMarker, color of the unsaved document marker when using ImGuiWindowFlags_UnsavedDocument/ImGuiTabItemFlags_UnsavedDocument. (#8983)
  • IO: added ImGuiPlatformIO::ClearPlatformHandlers(), ClearRendererHandlers() helpers to null all handlers. (#8945, #2769)
  • Inputs:
    • Shortcuts: added support for combining ImGuiInputFlags_RouteFocused (which is the default route) with ImGuiInputFlags_RouteOverActive, allowing to steal shortcuts from active item without using global routing. (#9004)
  • InputText:
    • Fixed single-line InputText() not applying fine character clipping properly (regression in 1.92.3). (#8967) [@Cyphall]
    • Fixed an infinite loop error happening if a custom input text callback modifies/clear BufTextLen before calling InsertChars(). (regression from 1.92.3). Note that this never really worked correctly, but previously it would only temporary wreck cursor position, and since 1.92.3 it would go in an infinite loop. (#8994, #3237)
  • Textures:
    • Fixed a crash if texture status is set to ImTextureStatus_WantDestroy by a backend after it had already been destroyed. This would typically happen when calling ImGui_ImplXXXX_InvalidateDeviceObjects() helpers twice in a row. (#8977, #8811)
    • Allowed backend to destroy texture while inside the NewFrame/EndFrame scope. Basically if a backend decide to destroy a texture that we didn't request to destroy (for e.g. freeing resources) the texture is immediately set to a ImTextureStatus_WantCreate status again. (#8811)
    • Fixed an issue preventing multi-contexts sharing a ImFontAtlas from being possible to destroy in any order.
    • Fixed not updating ImTextureData's RefCount when destroying a context using a shared ImFontAtlas, leading standard backends to not properly free texture resources. (#8975) [@icrashstuff]
  • Demo: fixed layout issue in "Layout & Scrolling -> Scrolling" section.
  • Misc: Relaxed internal assert in MarkItemEdited() to allow for more use cases. (#8997)
  • Misc: Debuggers: added type formatters for the LLDB debuggers (e.g. Xcode, Android Studio & more) to provide nicer display for ImVec2, ImVec4, ImVector etc. See misc/debuggers/ for details. (#8950) [@mentlerd]
  • CI: updated Windows CI scripts to generate/use VulkanSDK. (#8925, #8778) [@yaz0r]
  • Docs: updated FAQ with new "What is the difference between Dear ImGui and traditional UI toolkits?" entry. (#8862)
  • Backends:
    • All backends call ImGuiPlatformIO::ClearPlatformHandlers() and ClearRendererHandlers() on shutdown, so as not to leave function pointers which may be dangling when using backend in e.g. DLL. (#8945, #2769)
    • DirectX12: reuse a command list and allocator for texture uploads instead of recreating them each time. (#8963, #8465) [@RT2Code]
    • DirectX12: Rework synchronization logic. (#8961) [@RT2Code] (presumably fixes old hard-to-repro crash issues such as #3463, #5018).
    • DirectX12: Reuse texture upload buffer and grow it only when necessary. (#9002) [@RT2Code]
    • DirectX12: Enable swapchain tearing if available. (#8965) [@RT2Code]
    • OpenGL3: fixed GL loader to work on Haiku OS which does not support RTLD_NOLOAD. (#8952) [@Xottab-DUTY, @threedeyes]
    • GLFW: fixed build on platform that are neither Windows, macOS or known Unixes (Regression in 1.92.3). (#8969, #8920, #8921) [@oktonion]
    • SDL2,SDL3: avoid using the SDL_GetGlobalMouseState() path when one of our window is hovered, as the event data is reliable and enough in this case.
      • Fix mouse coordinates issue in fullscreen apps with macOS notch. (#7919, #7786)
        • Essentially a workaround for SDL3 bug which will be fixed in SDL 3.3.0.
      • Better perf on X11 as querying global position requires a round trip to X11 server.
    • Win32: minor optimization not submitting gamepad io again if XInput's dwPacketNumber has not changed. (#8556) [@MidTerm-CN]
    • Vulkan: added a way to specify custom shaders by filling init fields CustomShaderVertCreateInfo and CustomShaderFragCreateInfo. (#8585, #8271) [@johan0A]
    • DX9,DX10,DX11,DX12,Metal,Vulkan,WGPU,SDLRenderer2,SDLRenderer3: ensure that a texture in ImTextureStatus_WantDestroy state always turn to ImTextureStatus_Destroyed even if your underlying graphics data was already destroyed. (#8977)
  • Examples:
    • SDL2+DirectX11: Try WARP software driver if hardware driver is not available. (#5924, #5562)
    • SDL3+DirectX11: Added SDL3+DirectX11 example. (#8956, #8957) [@tomaz82]
    • Win32+DirectX12: Rework synchronization logic. (#8961) [@RT2Code]
    • Made examples's main.cpp consistent with returning 1 on error.
Changes from 1.92.3 to 1.92.4 specific to the Docking+Multi-Viewports branch:
  • Nav, Docking, Selection: Fixed tab change from reinitializing navigation state, which would erroneously clear selection when using ImGuiSelectableFlags_SelectOnNav or clear multi-selection when not using ImGuiMultiSelectFlags_NoAutoSelect. (#8997)
  • Nav: Fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused (the fix done in 1.92.3 was incomplete for docking branch).
  • Viewports:
    • Added ImGuiBackendFlags_HasParentViewport backend flag for backend to specify if it can honor the viewport->ParentViewport/viewport->ParentViewportId value by applying the corresponding parent/child relation at the Platform level. (#8948)
      • SDL3, Win32 backends: supported.
      • SDL2, GLFW, OSX backends: unsupported.
    • Fixed a bug where ImGuiWindowFlags_NoBringToFrontOnFocus would effectively be ignored when windows first appear and viewports are enabled. (#7008) [@jshofmann]
    • Changed default value of io.ConfigViewportsNoDefaultParent to true. (#8948)
    • Fixed an issue inferring Z-order when attempting to merge a viewport back in the the main/hosting viewport. (#8948) Note that for GLFW/SDL2/OSX backends, which do not support honoring ParentViewportID. Setting io.ConfigViewportsNoDefaultParent=true will align imgui's expectation with what the backend does.
    • Storing ImGuiViewport* ParentViewport pointer along with ParentViewportID.
    • ImGui::DestroyContext() does not call DestroyPlatformWindows() anymore at it is assumed to be unnecessary as backends should have done it and we check that backends have been shutdown since 1.90.4. Changed into asserts. (#7175, #8945)
  • Backends:
    • DirectX10, DirectX11, DirectX12: Disabled DXGI's Alt+Enter default behavior on secondary viewports managed by the backend. (#4350) [@PathogenDavid]
    • DirectX10, DirectX11: avoid ImGui_ImplXXXX_SwapBuffers() handlers for secondary viewports crashing if SwapChain could not be created.
    • Vulkan: Added a way to configure secondary viewport pipeline creation by setting init_info.PipelineInfoForViewports fields. (#8946, #8110, #8111, #8686)
    • Vulkan: Added a way to configure secondary viewport swapchain's VkImageUsageFlags to e.g. capture rendering. (#8946, #8940) [@olivier-gerard, @ocornut]
      • Usage example: init_info.PipelineInfoForViewports.SwapChainImageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
    • Vulkan: pipeline created for secondary viewport automatically match surface format. (#8686) [@sylmroz]
    • Vulkan: Added ImGui_ImplVulkanH_GetWindowDataFromViewport() accessor/helper. (#8946, #8940) [@olivier-gerard]
  • Docs: improve docking API comments and demo. (#9000)
  • Examples: DX10, DX11: Disabled DXGI's Alt+Enter default behavior in examples. Applications are free to leave this enabled, but it does not work properly with multiple viewports. (#4350) [@PathogenDavid]
Gallery

@ongamex: "Here is some WIP of the modelling tools I make for my engine."

https://github.com/user-attachments/assets/577abbe2-9cce-47df-bdfc-2118475184ea

@DaddelZeit: "IMGUI as Lua extension in BeamNG.drive using Cpp/Lua binding, for a graphics mod."

@known81331: "osx port of wallpaper engine, along with a drop of liquid glass"

Marlin (3-D Printing Firmware) simulator https://marlinfw.org, https://bsky.app/profile/marlinfw.org/post/3lzwlubcm2s2c

https://github.com/user-attachments/assets/2bd20163-f283-46c7-9816-72c30266b863

Havok 2025.1's new Visual Debugger

https://www.havok.com/blog/havok-2025-1-release-highlights/

https://www.havok.com/blog/havok-2025-1-release-highlights/

@pthom "Fiatlight automates UI generation for functions and structured data, making prototyping faster and easier, for Python." "See full demo video or intro tutorial"

https://corepto.io/ "Proofread MusicXML scores using 100+ editorial rules. Identify and resolve issues directly in your browser, or bookmark them for later review. Customize each check to suit your needs. Monitor your progress with our commit system."

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.

View originalPermalink
How v1.92.4 went

v1.92.3

Added 3
  • Add ImGuiListClipperFlags_NoSetTableRowCounters to disable the assumption that 1 clipper item == 1 table row
  • Add configurable style.ScrollbarPadding value and corresponding ImGuiStyleVar_ScrollbarPadding enum
  • Add ImGuiInputTextFlags_WordWrap flag to word-wrap multi-line text buffers (marked as beta)
Changed 1
  • Allow passing an empty string with buf_size==0 to InputText
Fixed 7
  • Fixed merging a font and specifying a font target in DstFont that's not the last added font (regression in 1.92)
  • Fixed an assertion failure when a rectangle entry has been reused 1024 times due to constant change of font size
  • Fixed Ctrl+Tab window appearing as empty when the sole active and focused window has the ImGuiWindowFlags_NoNavFocus flag
  • Fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused
  • Fixed bullet tessellation which looked out of place in very large sizes
  • Fixed an issue where using Escape to revert would not write back the reverted value during the IsItemDeactivatedAfterEdit() frame if the provided input buffer doesn't store temporary edits (regression in 1.91.7)
  • Fixed an issue where using Escape with ImGuiInputTextFlags_EscapeClearsAll would not write back the cleared value during the IsItemDeactivatedAfterEdit() frame if the provided input buffer doesn't store temporary edits
v1.92.3: Autumn is looming ~

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

❤️ And many individuals ❤️

Thanks to @pthom, @GamingMinds-DanielC, @PathogenDavid & more for their help with GitHub answers!


Changes (since v1.92.2)

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

Changes
  • Fonts: fixed merging a font and specifying a font target in DstFont that's not the last added font (regression in 1.92). (#8912)
  • Fonts: fixed an assertion failure when a rectangle entry has been reused 1024 times (e.g. due to constant change of font size). (#8906) [@cfillion]
  • Clipper, Tables: added ImGuiListClipperFlags_NoSetTableRowCounters as a way to disable the assumption that 1 clipper item == 1 table row, which breaks when e.g. using clipper with ItemsHeight=1 in order to clip in pixel units. (#8886)
  • Scrollbar, Style: added configurable style.ScrollbarPadding value and corresponding ImGuiStyleVar_ScrollbarPadding enum, instead of an hard-coded computed default. (#8895)
  • Nav: fixed Ctrl+Tab window appearing as empty when the sole active and focused window has the ImGuiWindowFlags_NoNavFocus flag. (#8914)
  • Nav: fixed a crash that could occur when opening a popup following the processing of a global shortcut while no windows were focused.
  • Bullet: fixed tessellation which looked out of place in very large sizes.
  • InputText: added ImGuiInputTextFlags_WordWrap flag to word-wrap multi-line buffers. (#3237, #952, #1062, #7363). Current caveats:
    • This is marked as beta because not being tested enough. Please report any incorrect cursor movement, selection behavior etc. bug to #3237.
    • Wrapping style is not ideal. Wrapping of long words/sections (e.g. words larger than total available width) may be particularly unpleasing.
    • Wrapping width needs to always account for the possibility of a vertical scrollbar.
    • It is currently much slower than regular text fields:
      • Ballpark estimate of cost on my 2019 desktop PC: For a 100 KB text buffer: +~0.3 ms/+~1.0 ms (Optimized vs Debug builds).
      • The CPU cost is very roughly proportional to text length, so a 10 KB buffer should cost about ten times less.
  • InputText, InputInt, InputFloat: fixed an issue where using Escape to revert would not write back the reverted value during the IsItemDeactivatedAfterEdit() frame if the provided input buffer doesn't store temporary edits. (regression in 1.91.7) (#8915, #8273)
  • InputText: fixed an issue where using Escape with ImGuiInputTextFlags_EscapeClearsAll would not write back the cleared value during the IsItemDeactivatedAfterEdit() frame if the provided input buffer doesn't store temporary edits. (#8915, #8273)
  • InputText: allow passing an empty string with buf_size==0. In theory the buffer size should always account for a zero-terminator, but idioms such as using InputTextMultiline() with ImGuiInputTextFlags_ReadOnly to display a text blob are facilitated by allowing this. (#8907)
  • InputText: refactored internals to simplify and optimizing rendering of selection. Very large selection (e.g. 1 MB) now take less overhead.
  • InputText: revert a change in 1.79 where pressing Down or PageDown on the last line of a multi-line buffer without a trailing carriage return would keep the cursor unmoved. We revert back to move to the end of line in this situation.
  • InputText: fixed pressing End (without Shift) in a multi-line selection from mistakenly moving cursor based on selection start.
  • Focus, InputText: fixed an issue where SetKeyboardFocusHere() did not work on InputTextMultiline() fields with ImGuiInputTextFlags_AllowTabInput, since they normally inhibit activation to allow tabbing through multiple items. (#8928)
  • Selectable: added ImGuiSelectableFlags_SelectOnNav to auto-select an item when moved into, unless Ctrl is held. (automatic when in a BeginMultiSelect() block).
  • TabBar: fixed an issue were forcefully selecting a tab using internal API would be ignored on first/appearing frame before tabs are submitted (#8929, #6681)
  • DrawList: fixed ImDrawList::CloneOutput() unnecessarily taking a copy of the ImDrawListSharedData pointer, which could to issue when deleting the cloned list. (#8894, #1860)
  • DrawList: made AddCallback() assert when passing a null callback.
  • Debug Tools: ID Stack Tool: fixed using fixed-size buffers preventing long identifiers from being displayed in the tool. (#8905, #4631)
  • Debug Tools: ID Stack Tool: when ### is used, noncontributing prefix before the ### is now skipped. (#8904, #4631)
  • Debug Tools: ID Stack Tool: added option to hex-encode non-ASCII characters in output path. (#8904, #4631)
  • Debug Tools: ID Stack Tool: fixed a crash when using PushOverrideID(0) during a query. (#8937, #4631)
  • Debug Tools: Fixed assertion failure when opening a combo box while using io.ConfigDebugBeginReturnValueOnce/io.ConfigDebugBeginReturnValueLoop. (#8931) [@harrymander]
  • Demo: tweaked ShowFontSelector() and ShowStyleSelector() to update selection while navigating.
  • CI: Updates Windows CI to use a more recent VulkanSDK. (#8925, #8778) [@yaz0r]
  • Examples: Android: Android+OpenGL3: update Gradle project (#8888, #8878) [@scribam]
  • Examples: GLFW+OpenGL2, GLFW+Vulkan, GLFW+Metal, Win32+Vulkan: Fixed not applying content scale consistently with other examples. (#8921, #8756)
  • Backends: GLFW: distinguish X11 vs Wayland to fix various scaling issues. (#8920, #8921) [@TheBrokenRail, @pthom, @ocornut]
    • Window/monitor content scales are always reported as 1.0 on Wayland.
    • Framebuffer scales are always reported as 1.0 on X11.
  • Backends: SDL2: window/monitor content scales are always reported as 1.0 on Wayland. (#8920, #8921) [@TheBrokenRail, @pthom, @ocornut]
  • Backends: SDL3: use SDL_GetWindowDisplayScale() on Mac to obtain DisplayFrameBufferScale, fixing incorrect values during resolution changes e.g. going fullscreen. (#8703, #4414) [@jclounge]
  • Backends: SDL_GPU: Added ImGui_ImplSDLGPU3_InitInfo::SwapchainComposition and PresentMode to configure how secondary viewports are created. Currently only used multi-viewport mode. (#8892) [@PTSVU]
  • Backends: Vulkan: added ImGui_ImplVulkan_CreateMainPipeline() to recreate pipeline without reinitializing backend. (#8110, #8111) [@SuperRonan]
Changes from 1.92.2 to 1.92.3 specific to the Docking+Multi-Viewports branch:
  • DPI: fixed io.ConfigDpiScaleFonts from ever working since 1.92 (the irony being that it is when it started to make sense!). As a reminder, the option automatically copy the current viewport's DpiScale to style.FontScaleDpi. This is why we separated the style.FontScaleMain and style.FontScaleDpi scaling factor, as the later is meant to be overwritten. (#8832, #8465)
  • DPI: Fixed obsoleted ImGuiConfigFlags_DpiEnableScaleFonts/_DpiEnableScaleViewports names from setting the equivalent io.ConfigDpiScaleFonts/io.ConfigDpiScaleViewports flag correctly (regression in 1.92).
  • Docking, Style: added style.DockingNodeHasCloseButton option to hide the Close Button attached to each docking node. (#8933)
  • Backends: GLFW: improve multi-viewport behavior in tiling WMs on X11. Note: using GLFW backend on Linux/BSD etc. requires linking with -lX11. (#8884, #8474, #8289, #2117) [@Ikos3k, @Madman10K]
Gallery

@Espyo: Pikifen, a fan-made Pikmin-based engine, built with flexibility in mind. I've been using Dear ImGui for the content editors, and it fits the bill perfectly!

@ostef: "I made a cool blur effect! See the code here" [...] "And a custom file browser too"

@aiekick: "ezSqlite is a small sqlite editor (inspiration come from SqliteSpy). just a binary (no external libs or resources)"

From https://x.com/kevin_tsia/status/1916077459679895704 "Excited to give a keynote on Monday (April 28) in #LMRL workshop at #ICLR2025 in Singapore 🇸🇬! Will share our recent effort on generating massive label-free single cell image data and learning useful representation from intrinsic cell morphology for cancer treatment monitoring, drug screening, CRISPR screening… Come check it out if you are around in #ICLR2025. "

https://github.com/user-attachments/assets/d38e8743-2852-455d-bc49-e28d1e797881

@Ka1serM: "ImViewGuizmo - View Navigation widgets inspired by Blender and Godot"_ (single-header library) Image

@joel16: vitaPDF - A simple homebrew file browser that is used for viewing various documents on the PlayStation VITA. https://github.com/joel16/vitaPDF

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

View originalPermalink
How v1.92.3 went

v1.92.2b

Added 1
  • Allegro5 backend ImGui_ImplAllegro5_SetDisplay() function to change current ALLEGRO_DISPLAY
Fixed 4
  • IsItemHovered() failing on disabled items and items that have no identifier when holding mouse button
  • IsItemHovered() on holding mouse button down on disabled items leaking between items when the window cannot be moved
  • Allegro5 backend texture format setup which didn't work on all setups and drivers
  • Allegro5 backend missing support for ImGuiKey_PrintScreen under Windows
v1.92.2b: Hotfix for 1.92.2
Changes (since v1.92.2)

This is a hot fix for v1.92.2 which has issues with using IsItemHovered() on disabled items or items with no identifier while clicking on them.

  • Fixed IsItemHovered() failing on disabled items and items that have no identifier (e.g. Text() calls) when holding mouse button. (Regression in 1.92.2). (#8877, #8883)
  • Made IsItemHovered() on holding mouse button down on disabled items not leak between items when the window cannot be moved.
  • Backends: Allegro5: Fixed texture format setup which didn't work on all setups/drivers. (#8770, #8465)
  • Backends: Allegro5: Added ImGui_ImplAllegro5_SetDisplay() function to change current ALLEGRO_DISPLAY, as Allegro applications often need to do that.
  • Backends: Allegro5: Fixed missing support for ImGuiKey_PrintScreen under Windows, as raw Allegro 5 does not receive it.

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.

❤️ Previous summer 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.

View originalPermalink
How v1.92.2b went

v1.92.2

Added 1
  • New SDL3+Metal example
Changed 3
  • Tab bar resizing logic now combines shrinking and scrolling with new configuration options
  • Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink with inline redirection enum
  • SDL_GPU backend changed ImTextureID type from SDL_GPUTextureSamplerBinding* to SDL_GPUTexture*
Fixed 8
  • Fixed Vulkan backend on some setups following v1.92.0 changes
  • Fixed IsItemHovered() returning true when mouse was first clicked on background of non-moveable window then moved over the item
  • Fixed font issue when a font using MergeMode has a reference size specified but the target font does not
  • Fixed crash when changing texture format when using a legacy backend by calling GetTexDataAsRGBA32() then GetTexDataAsAlpha8()
  • Fixed resizable child windows emitting border logic when hidden or non-visible such as in unselected docked windows
  • Fixed support for #define ImTextureID_Invalid to non-zero value where ImFontAtlas() was incorrectly cleared with zeroes
  • Fixed TableGetRowIndex() which did not work correctly when using a clipper
  • Fixed TableGetHoveredRow() in imgui_internal.h to work correctly with clippers
v1.92.2: Summer 2025

❤️ Previous summer 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 ❤️

❤️ And many individuals ❤️

Thanks to @GamingMinds-DanielC, @cfillion, @PathogenDavid & more for their help with GitHub answers!


Changes (since v1.92.1)

This is a general maintenance release addressing some issues discovered in 1.92.0. Read v1.92.0 Changelog for details and links on larger changes.

🆘 Need help updating your custom rendering backend to support ImGuiBackendFlags_RendererHasTextures ? You can read the newly improved docs/BACKENDS.md.

TL;DR;
  • New tab bar resizing logic (combining shrinking and scrolling) and configuration options.
  • Fixed Vulkan backend on some setup (following 1.92.0) changes.
  • SDL_GPU backend changes ImTextureID to be SDL_GPUTexture* (!).
  • Keyboard/navigation fixes, table fixes, font fixes, new SDL3+Metal example & many more.
Breaking Changes
  • Tabs: Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink. Kept inline redirection enum (will obsolete). (#261, #351)
  • Backends: SDL_GPU3: changed ImTextureID type from SDL_GPUTextureSamplerBinding* to SDL_GPUTexture*, which is more natural and easier for user to manage. If you need to change the current sampler, you can access the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988)
Other Changes
  • Fixed an old inconsistency between IsItemHovered() and internal hovering check, where IsItemHovered() would return true to mouse was first clicked on the background of a non-moveable window then moved over the item or button. Note that while it is consistent with other logic, there is a possibility that some third-party code may accidentally relied on this. One can always use ImGuiHoveredFlags_AllowWhenBlockedByActiveItem to bypass the active id check. (#8877) [@achabense, @ocornut]
  • Fonts: fixed an issue when a font using MergeMode has a reference size specified but the target font doesn't. Usually either all fonts should have a reference size (only required when specifying e.g. GlyphOffset), or none should have a reference size.
  • Fonts: fixed a crash when changing texture format when using a legacy backend. Most commonly would happen when calling GetTexDataAsRGBA32() then immediately calling GetTexDataAsAlpha8(). (#8824)
  • Windows: fixed an issue where resizable child windows would emit border logic when hidden/non-visible (e.g. when in a docked window that is not selected), impacting code not checking for BeginChild() return value. (#8815)
  • Textures: Fixed support for #define ImTextureID_Invalid to non-zero value: ImFontAtlas() was incorrectly cleared with zeroes. (#8860, #8745) [@cfillion]
  • Tables: fixed TableGetRowIndex() which never correctly worked when using a clipper (it exists for consistency but is almost never used, as it is often more convenient to use index in caller-code, whereas TableGetRowIndex() includes header rows).
  • Tables: fixed imgui_internal.h's TableGetHoveredRow() the same way. (#7350, #6588, #6250)
  • Tabs: added new fitting policy ImGuiTabBarFlags_FittingPolicyMixed and made it the default. This policy shrink tab width down to a given amount, and then beyond that it enable scrolling buttons. (#3421, #8800)
  • Tabs: added style.TabMinWidthShrink, ImGuiStyleVar_TabMinWidthShrink to control the width to shrink to in ImGuiTabBarFlags_FittingPolicyMixed mode. (#3421, #8800).
  • Tabs: when scrolling is enabled, track selected tabs when resizing down parent container. This does not prevent to horizontally scroll it out of view during normal operations. (#3421, #8800)
  • Tabs: added style.TabMinWidthBase, ImGuiStyleVar_TabMinWidthBase to control the base minimum width of a tab (default to 1.0f). This is the size before any potential shrinking is applied.
  • Tabs: fixed tab bar underline not drawing below scroll buttons, when they are enabled (minor regression from 1.90). (#6820, #4859, #5022, #5239)
  • Tabs: made scrolling buttons never keyboard/gamepad navigation candidates.
  • Nav, Tables: fixed navigation within scrolling tables when item boundaries goes beyond columns limits. The fix done in 1.89.6 didn't work correctly on scrolling windows. (#8816, #2221)
  • Nav: fixed a bug where ImGuiKey_NavGamepadMenu (== ImGuiKey_GamepadFaceLeft) button couldn't toggle between main and menu layers while navigating a Modal window. (#8834)
  • Error Handling: minor improvements to error handling for TableGetSortSpecs() and TableSetBgColor() calls. (#1651, #8499)
  • Misc: fixed building with IMGUI_DISABLE_DEBUG_TOOLS only. (#8796)
  • Misc: fixed building with IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION since 1.92.0. (#8794)
  • Misc: removed more redundant inline static linkage from imgui_internal.h to facilitate using in C++ modules. (#8813, #8682, #8358) [@stripe2933]
  • Misc: ImVector: skip memcpy() in operator= if Data isn't initialized in order to play nice with -fsanitize=undefined. (#8874) [@i25e]
  • CI: Added SDL3 builds to MacOS and Windows. (#8819, #8778) [@scribam]
  • CI: Updated Windows CI to use a more recent SDL2. (#8819, #8778) [@scribam]
  • Examples: SDL3+Metal: added SDL3+Metal example. (#8827, #8825) [@shi-yan]
  • Examples: SDL3+SDL_GPU: use SDL_WaitAndAcquireGPUSwapchainTexture() instead of SDL_AcquireGPUSwapchainTexture(). (#8830) [@itsdanott]
  • Examples: SDL3+SDL_GPU: use SDL_GPU_PRESENTMODE_VSYNC present mode.
  • Backends: OpenGL3: add and call embedded loader shutdown in ImGui_ImplOpenGL3_Shutdown() to facilitate multiple init/shutdown cycles in same process. (#8792) [@tim-rex]
  • Backends: OpenGL2, OpenGL3: set GL_UNPACK_ALIGNMENT to 1 before updating textures. (#8802) [@Daandelange]
  • Backends: SDL_GPU3: expose current SDL_GPUSampler* in the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988)
  • Backends: Vulkan: Fixed texture update corruption introduced in 1.92.0, affecting some drivers/setups. (#8801, #8755, #8840) [@Retro52, @Miolith]
  • Backends: Vulkan: Avoid calling vkCmdBindDescriptorSets() when texture has not changed. (#8666) [@micb25]
Changes from 1.92.1 to 1.92.2 specific to the Docking+Multi-Viewports branch:
  • Windows, Viewport: fixed an issue where interrupting a viewport move with e.g. a ClearActiveID() call would leave the dragged viewport with the normally temporary ImGuiViewportFlags_NoInputs flag, preventing further interactions with the viewport. (#5324) (thanks @mdelaharpe)
  • Viewports: added io.ConfigViewportPlatformFocusSetsImGuiFocus to opt-out of focusing imgui windows When a platform window is focused (e.g. using Alt+Tab, clicking Platform Title Bar). In principle this is better enabled but we provide an opt-out because some Linux window managers tend to eagerly focus windows (on e.g. mouse hover, or even on a simple window pos/size change). (#6299, #6462)
Gallery

@JCox06: "Recently I have been working on a molecular editor with the main user interface written in Dear ImGui. Thanks"

@tksuoran "screenshot of erhe"

"I am updating erhe to latest ImGui and the new font stuff feels very, very nice."

https://github.com/user-attachments/assets/f471d3ff-1e13-40a4-b253-4ab8c1cb99ff

@Fewnity: "PlayStation Portable, PlayStation Vita and PlayStation 3 game engine with an editor similar to Unity." https://github.com/Fewnity/Xenity-Engine

Vulkan glTF Viewer "Blazingly fast1 Vulkan glTF viewer." by @stripe2933 https://github.com/stripe2933/vk-gltf-viewer

Image

@arran-nz: "Hazard Pay, under active development, by Smitner Studio"

@CodyNinja1: "Twinkie, an open-source game modification for TrackMania Forever (2008), with Lua scripting functionality coming soon."

@nealmick "I am building a text editor IDE app, it has tree sitter syntax highlighting, LSP Integration, Multi Cursor Support, and cool GL shader effects. It also includes a terminal emulator. the app has standalone version and embedded version. check it here Ned"

https://github.com/user-attachments/assets/b69da3d7-7cc9-4f2c-a4fe-a8b8f70e3799

https://github.com/user-attachments/assets/584ea590-ad67-4104-9982-40be18957af5


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.

❤️ Previous summer 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.

View originalPermalink
How v1.92.2 went
View all

Discussion