github ocornut/imgui v1.92.3

latest release: v1.92.3-docking
12 hours ago

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!
Pikifen's area editor

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

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

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

extracted.mp4

@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

Image

...More in gallery threads.


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

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

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

Don't miss a new imgui release

NewReleases is sending notifications on new releases.