Imgui Versions Save

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

v1.90.5

2 weeks ago

1.90.5: Spring update

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Links: Homepage - Release notes - FAQ - Issues, Q&A Also see our Wiki with sections such as Getting Started and Useful Extensions Gallery! πŸ‘Œ

New era?

I have been exceptionally mostly away in the past two months. A series of things happened. The project lost its largest source of income a few months ago. Shortly after I ran into some personal issues that have been emotionally draining. Coincidentally this aligned with a long-time planed trip so it was a good timing to disappear for a little bit. I have attended GDC (thanks to BeamNG) in an effort to engage in discussion with some potential sponsors, and generally to engage a little bit of gamedev reality again :)

I am now back home. I have moved offices. Managed to get some financial contributions (G3DVu!, Lucid Games! Aras!) and hopeful that ongoing discussions will eventually allow to fill the gap. Heck, I'm looking into buying a Mac now to get toward settling some of the recurrent scaling/dpi issues.

Dear ImGui is funded by your contributions and 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 & Sponsors page. Did you know? If sponsoring is not your cup of tea, you may buy licenses for Test Engine and that will contribute to fund Dear ImGui.

Special thanks to @cfillion, @GamingMinds-DanielC, @PathogenDavid & more for for their help with patches and answers!

Changes

TL;DR

  • Add concave polygon rendered for convenience.
  • Menus/popup fix erroneous closing regression happening when moving mouse fast.
  • Dozens of various fixes.

Breaking Changes:

  • More formally obsoleted GetKeyIndex() when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is set. It has been unnecessary and a no-op since 1.87 (it returns the same value as passed when used with a 1.87+ backend using io.AddKeyEvent() function). (#4921)
    • Reminder: IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) --> IsKeyPressed(ImGuiKey_XXX)
  • ImDrawList: Merged the radius_x/radius_y parameters in AddEllipse(), AddEllipseFilled() and PathEllipticalArcTo() into a single ImVec2 parameter. Exceptionally, because those functions were added recently in 1.90, we are not adding inline redirection functions. The transition is easy and should affect few users. (#2743, #7417) [@cfillion]

Other Changes:

  • Windows: Scrollbar visibility decision uses current size when both size and contents size are submitted by API. (#7252)
  • Windows: Double-click to collapse may be disabled via key-ownership mechanism. (#7369)
  • Windows: BeginChild(): Extend outer resize borders to the edges when there are no corner grips. Essentially affects resizable child windows. (#7440, #1710) [@cfillion]
  • Windows: BeginChild(): Resizing logic for child windows evaluates whether per-axis clamping should be applied based on parent scrollbars, not child scrollbars. (#7440, #1710) [@cfillion] Adjust those resizing limits to match window padding rather than inner clipping rectangle.
  • Tables: Fixed auto-width columns when using synced-instances of same table, width of one instance would bleed into next one instead of sharing their widths. (#7218)
  • Tables: Angled headers: fixed border hit box extending beyond when used within non-scrollable tables. (#7416) [@cfillion]
  • Tables: Angled headers: fixed borders not moving back up after TableAngleHeadersRow() stops being called. (#7416) [@cfillion]
  • Tables: Angled headers: rounding header size to nearest integers, fixes some issues when using clipper.
  • Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive frames would erroneously close the window. While it is technically a popup issue it would generally manifest when fast moving the mouse bottom to top in a sub-menu. (#7325, #7287, #7063)
  • ProgressBar: Fixed passing fraction==NaN from leading to a crash. (#7451)
  • ListBox: Fixed text-baseline offset when using SameLine()+Text() after a labeled ListBox().
  • Drags, Sliders, Inputs: Fixed io.PlatformLocaleDecimalPoint decimal point localization feature not working regression from 1.90.1. (#7389, #6719, #2278) [@GamingMinds-DanielC]
  • Style: Added ImGuiStyleVar_TabBorderSize, ImGuiStyleVar_TableAngledHeadersAngle for consistency. (#7411) [@cfillion]
  • DrawList: Added AddConcavePolyFilled(), PathFillConcave() concave filling. (#760) [@thedmd] Note that only simple polygons (no self-intersections, no holes) are supported.
  • DrawList: Allow AddText() to accept null ranges. (#3615, 7391)
  • Docs: added more wiki links to headers of imgui.h/imgui.cpp to facilitate discovery of interesting resources, because github doesn't allow Wiki to be crawled by search engines.

Changes from 1.90.4 to 1.90.5 related to the Docking branch:

  • Backends: Win32: made it so that an appearing viewport showing up doesn't bring its parent to front. (#7354)

@faywong: lemon-note: A simple note taking tool i created with IMGUI. https://github.com/faywong/lemon-note

The Indie Stone just announced they're replacing their old debug UI in Project Zomboid with Dear ImGui. More screenshots, some videos, and their thoughts can be found on their recent devlog.

"Spotted in Hypersomnia, Used as ingame UI" https://store.steampowered.com/app/2660970/Hypersomnia/). image1

@eliasdaler "Dev tools for the game/engine I'm developing. The source code can be found here: https://github.com/eliasdaler/edbr" image

"Universal compression ratio analyzer using the .kkp and .sym formats introduced in rekkrunchy-with-analytics." https://github.com/ConspiracyHu/kkpView-public GKjsJh9XgAAi7ba And a blog post on resource compression: https://conspiracy.hu/articles/12-minimal-engine-file-formats-of-conspiracy-intros/


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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Funding/Sponsors page.

v1.90.4

2 months ago

1.90.4: More fixes

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Links: Homepage - Release notes - FAQ - Issues, Q&A Also see our Wiki with sections such as Getting Started and Useful Extensions Gallery! πŸ‘Œ

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

Changes

This is a small amend to v1.90.2 and v1.90.3.

TL;DR

  • Fixed a menu closing issue. (#7325)
  • Fixed focus/tabbing API from working on windows with ImGuiWindowFlags_NoNavInputs, which broke imgui_memory_editor in 1.90.2.
  • Improvements and fixes for Table Angled Headers mode. (#6917)
  • Made DebugStartItemPicker() public API and wired to Tools menu. EVERY TIME I MENTION THE ITEMPICKER TO ANYONE, THEY SAY "WOW I WISH WE LEARNED ABOUT IT EARLIER". (#2673)
  • A few more stuff.

Other Changes:

  • Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing APIs from not working on windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which among other things broke imgui_memory_editor #36).
  • Menus, Popups: Fixed an issue where hovering a parent-menu upward would erroneously close the window. (#7325, #7287, #7063)
  • Popups: Fixed resizable popup minimum size being too small. Standardized minimum size logic. (#7329).
  • Modals: Temporary changes of ImGuiCol_ModalWindowDimBg are properly handled by BeginPopupModal(). (#7340)
  • Tables: Angled headers: fixed support for multi-line labels. (#6917)
  • Tables: Angled headers: various fixes to accurately handle CellPadding changes. (#6917)
  • Tables: Angled headers: properly registers horizontal component of angled headers for auto-resizing of columns. (#6917)
  • Tables: Angled headers: fixed TableAngledHeadersRow() incorrect background fill drawn too low, particularly visible with tables that have no scrolling. (#6917)
  • ProgressBar: Fixed a minor tessellation issue when rendering rounded progress bars, where in some situations the rounded section wouldn't follow regular tessellation rules.
  • Debug Tools: Item Picker: Promoted ImGui::DebugStartItemPicker() to public API. (#2673)
  • Debug Tools: Item Picker: Menu entry visible in Demo->Tools but greyed out unless io.ConfigDebugIsDebuggerPresent is set. (#2673)
  • Misc: Added optional alpha multiplier parameter to GetColorU32(ImU32) variant.
  • Demo: Custom Rendering: better demonstrate PathArcTo(), PathBezierQuadraticCurveTo(), PathBezierCubicCurveTo(), PathStroke(), PathFillConvex() functions.

Changes from 1.90.3 to 1.90.4 related to the Docking branch:

  • Backends: GLFW: enable ImGuiBackendFlags_HasMouseHoveredViewport support with GLFW 3.3.x, as required specs for it was relaxed in 1.87. This enable better viewport hovering detection without GLFW 3.4's GLFW_MOUSE_PASSTHROUGH, with less reliance on dear imgui's own heuristic of platform windows order. (#7316)

Angled Headers: table angled headers 2


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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Sponsors page.

v1.90.3

2 months ago

1.90.3: Menu sizing fix and backends work

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Links: Homepage - Release notes - FAQ - Issues, Q&A Also see our Wiki with sections such as Getting Started and Useful Extensions Gallery! πŸ‘Œ

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

Changes

This is a small amend to v1.90.2. In particular, the fix to sizing of child menus seemed important enough to warrant a hot-fix. In 1.90.1 and 1.90.2, child menus with lots of contents wouldn't get clamped to parent viewport boundaries and therefore wouldn't show a scrollbar.

Breaking Changes:

  • Backends: SDL2: Removed obsolete ImGui_ImplSDL2_NewFrame(SDL_Window*) signature which was obsoleted in 1.84. Calling ImGui_ImplSDL2_NewFrame() without parameter is fine.
  • Backends: Vulkan: Moved RenderPass parameter from ImGui_ImplVulkan_Init() function to ImGui_ImplVulkan_InitInfo structure. Not required when using dynamic rendering. (#7308) [@shawnhatori]
  • Backends: Vulkan: Using dynamic rendering now require filling the PipelineRenderingCreateInfo structure in ImGui_ImplVulkan_InitInfo, allowing to configure color/depth/stencil formats. Removed ColorAttachmentFormat field previously provided for dynamic rendering. (#7166, #6855, #5446, #5037) [@shawnhatori]

Other Changes:

  • Menus, Popups: Fixed menus and popups with ChildWindow flag erroneously not displaying a scrollbar when contents is over parent viewport size. (#7287, #7063) [@ZingBallyhoo]
  • Backends: SDL2, SDL3: Handle gamepad disconnection + fixed increasing gamepad reference counter continuously. Added support for multiple simultaneous gamepads. Added ImGui_ImplSDL2_SetGamepadMode() function to select whether to automatically pick first available gamepad, all gamepads, or specific gamepads. (#3884, #6559, #6890, #7180) [@ocornut, @lethal-guitar, @wn2000, @bog-dan-ro]
  • Backends: SDL3: Fixed gamepad handling. (#7180) [@bog-dan-ro]
  • Backends: SDLRenderer3: query newly added SDL_RenderViewportSet() to not restore a wrong viewport if none was initially set.
  • Backends: DirectX9: Using RGBA format when allowed by the driver to avoid CPU side conversion. (#6575) [@Demonese]
  • Internals: Fixed ImFileOpen not working before context is created, preventing creation of a font atlas before main context creation. (#7314, #7315) [@PathogenDavid, @ocornut]

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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Sponsors page.

v1.90.2

2 months ago

1.90.2: Monthly update

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

In the last year, Dear ImGui has been financially supported by:

Special thanks to @GamingMinds-DanielC, @PathogenDavid, @sakiodre & more for for their help with github answers.

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Changes

Past releases include v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8, v1.89.9, v1.90, v1.90.1 .We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently. Remember that our policy is to comment out obsolete names/symbols after 24 months, so at minimum you must update once year to reduce update complexity, but the most frequently you update the easier it will be.

TL;DR

  • Many navigation improvements/fixes (some of them driven by work on remote activation/shortcuts api).
  • Debug tools improvements.
  • Backends fixes.
  • Better input routing features for docked/multi-viewport based applications.
  • Many things still under wrap (internal APIs, private branches etc.), sorry! I've been iterating/testing testing some internal features with selected users, but until they are satisfactory I am not promoting them to public API, and not talking much about them in changelog:
    • Input ownership, Input routing, Shortcut APIs.
    • Way to externally modify an active input text buffer.
    • Multi-Select APIs.
    • Typing-Select APIs.

Breaking Changes:

  • Commented out ImGuiIO::ImeWindowHandle obsoleted in 1.87 in favor of writing to void* ImGuiViewport::PlatformHandleRaw.
  • Backends: WebGPU: ImGui_ImplWGPU_Init() now takes a ImGui_ImplWGPU_InitInfo structure instead of variety of parameters, allowing for easier further changes. (#7240)

Other Changes:

  • Nav: keyboard/gamepad activation mark widgets as held to give better visual feedback.
  • Nav: tweak to logic marking navigated item as hovered when using keyboard, allowing the hover highlight to stay even while another item is activated.
  • Nav: Fixed SetKeyboardFocusHere() not working when current nav focus is in different scope, regression from 1.90.1 related to code scoping Tab presses to local scope. (#7226) [@bratpilz]
  • Nav: Fixed pressing Escape while in a child window with ImGuiWindowFlags_NavFlattened flag. (#7237)
  • Nav: Improve handling of Alt key to toggle menu so that key ownership may be claimed on individual left/right alt key without interfering with the other.
  • Nav, Menus: Fixed click on a BeginMenu() followed by right-arrow from making the child menu reopen and flicker (using ImGuiPopupFlags_NoReopen).
  • Nav: ImGuiWindowFlags_NoNavInputs is tested during scoring so NavFlattened windows can use it.
  • Popups: OpenPopup(): added ImGuiPopupFlags_NoReopen flag to specifically not close and reopen a popup when it is already open. (#1497, #1533) (Note that this differs from specific handling we already have in place for the case of calling OpenPopup() repeatedly every frame: we already didn't reopen in that specific situation, otherwise the effect would be very disastrous in term of confusion, as reopening would steal focus).
  • Popups: Slight change to popup closing logic (e.g. after focusing another window) which skipped over popups that are also child windows.
  • Combo: Fixed not reusing windows optimally when used inside a popup stack.
  • Debug Tools: Metrics: Fixed debug break in SetShortcutRouting() not handling ImGuiMod_Shortcut redirect.
  • Debug Tools: Metrics: Improved Monitors and Viewports minimap display. Highlight on hover.
  • Debug Tools: Debug Log: Added "Input Routing" logging.
  • Debug Tools: Added "nop" to IM_DEBUG_BREAK macro on GCC to work around GDB bug (#7266) [@Peter0x44]
  • Backends: Vulkan: Fixed vkAcquireNextImageKHR() validation errors in VulkanSDK 1.3.275 by allocating one extra semaphore than in-flight frames. (#7236) [@mklefrancois]
  • Backends: Vulkan: Fixed vkMapMemory() calls unnecessarily using full buffer size. (#3957)
  • Backends: Vulkan: Fixed handling of ImGui_ImplVulkan_InitInfo::MinAllocationSize field. (#7189, #4238)
  • Backends: WebGPU: Added ImGui_ImplWGPU_InitInfo::PipelineMultisampleState. (#7240)
  • Backends: WebGPU: Filling all WGPUDepthStencilState fields explicitly as a recent Dawn update stopped setting default values. (#7232) [@GrigoryGraborenko]
  • Backends: WebGPU: Fixed pipeline layout leak. (#7245) [@rajveermalviya]
  • Backends: OpenGL3: Backup and restore GL_PIXEL_UNPACK_BUFFER. (#7253)
  • Internals: Many improvements related to yet unpublicized shortcut routing and input ownership systems.
  • Internals: InputText: Added internal helpers to force reload of user-buffer when active. (#2890) [@kudaba, @ocornut] Often requested in some form (#6962, #5219, #3290, #4627, #5054, #3878, #2881, #1506, #1216, #968), and useful for interactive completion/suggestions popups (#2057, #718)

Changes from 1.90.1 to 1.90.2 related to the Docking branch:

  • Added ImGuiWindowClass::FocusRouteParentWindowId as a way to connect the focus route between a tool window to a parent document window, so that Shortcuts in the documents are routed when the tool is focused (regardless of whether the tool is docked or in a floating viewport, etc.) (#6798)
  • Added ImGuiDockNodeFlags_DockedWindowsInFocusRoute to automatically make a dockspace connect the focus route of its docked window. This is provided a convenience in case you have windows where a connection is not explicit. (#6798)
  • Viewports: Fixed moving across monitors when io.ConfigWindowsMoveFromTitleBarOnly is set. (#7299, #3071)
  • Backends: OSX: Fixed not submitting Monitors info when viewports are not enabled, leading to missing e.g. DpiScale info. (#7257) [@actboy168]

Changes from 1.90.1 to 1.90.2 related to the Range-Select branch:

This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. Hopefully this is on track to be stable and merged in 1.91.

  • RangeSelect/MultiSelect: Fixed ImGuiMultiSelectFlags_SelectOnClickRelease over tree node arrow.

Thank you for reading this changelog!

Extensions, bindings & co

Since 1.89 we semi-sneakily soft launched two new entire projects:

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

See Useful extensions wiki page for more.

@vhollander: "v2 platinum theme used in an actual program" image

@kasperhbo: "An custom titlebar for mac os, using a "modified" version of glfw" for my tools applications https://github.com/KaspersTools/HummingBird https://github.com/KaspersTools/imgui Screenshot 2024-01-27 at 00 16 02

@GavinNL: "For one of my projects, I needed the ability to dynamically create UI Form interfaces at run-time. So I developed a library that lets you define the interface using a Json Schema. I based it off React Json Schemas"

https://github.com/GavinNL/ImJSchema WebAssembly Version To Test: https://t.co/IdlVzzm19L

strings


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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Sponsors page.

v1.90.1

3 months ago

1.90.1: Happy new year release!

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

In 2023, Dear ImGui was financially supported by:

Special thanks to @GamingMinds-DanielC, @PathogenDavid, @sakiodre, for their help with github answers.

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Changes

Past releases include v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8, v1.89.9, v1.90 .We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently. Remember that our policy is to comment out obsolete names/symbols after 24 months, so at minimum you must update once year to reduce update complexity, but the most frequently you update the easier it will be.

TL;DR

  • New "Debug Break" buttons appearing when io.ConfigDebugIsDebuggerPresent is enabled. See Debug Tools.
  • Can manually input nan/inf values in scalar widgets.
  • Native OSX backend (without GLFW/SDL etc) now handle multi-monitors/viewports decently.
  • 30+ other improvements fixes.

295624845-960de69e-3e7d-467a-b805-a30b1e78bebf 295626202-b4292cf6-88a9-4f27-a502-a00c38d923e3 295622732-9e70ed99-8598-452f-95cb-3162cc50184a

Breaking Changes:

  • imgui_freetype: commented out ImGuiFreeType::BuildFontAtlas() obsoleted in 1.81. Prefer using #define IMGUI_ENABLE_FREETYPE or see commented code for manual runtime calls.
  • Removed CalcListClipping() marked obsolete in 1.86. (#3841). Prefer using ImGuiListClipper which can return non-contiguous ranges.
  • Internals, Columns: commented out legacy ImGuiColumnsFlags_XXX symbols redirecting to ImGuiOldColumnsFlags_XXX, obsoleted from imgui_internal.h in 1.80.
  • Commented out obsolete ImGuiKey_KeyPadEnter redirection to ImGuiKey_KeypadEnter. (#2625, #7143)

Other Changes:

  • Windows:
    • BeginChild(): Fixed auto-resizing erroneously limiting size to host viewport minus padding. There are no limit to a child width/height. (#7063) [@Devyre]
    • BeginChild(): Resize borders rendered even when ImGuiWindowFlags_NoBackground is specified. (#1710, #7194)
    • Fixed some auto-resizing path using style.WindowMinSize.x (instead of x/y) for both axises since 1.90. (#7106) [@n0bodysec]
    • Scrolling: internal scrolling value is rounded instead of truncated, as a way to reduce speed asymmetry when (incorrectly) attempting to scroll by non-integer amount. (#6677)
  • Navigation (Keyboard/gamepad):
    • Nav, IO: SetNextFrameWantCaptureKeyboard(false) calls are not overridden back to true when navigation is enabled. SetNextFrameWantCaptureKeyboard()` is always higher priority. (#6997)
    • Nav: Activation can also be performed with Keypad Enter. (#5606)
  • Drag and Drop:
    • Fixed drop target highlight on items temporarily pushing a widened ClipRect (namely Selectables and Treenodes using SpanAllColumn flag) so the highlight properly covers all columns. (#7049, #4281, #3272)
  • InputText:
    • InputTextMultiline(): Fixed Tab character input not repeating (1.89.4 regression).
    • InputTextMultiline(): Tabbing through a multi-line text editor which allows Tab character inputs (using the ImGuiInputTextFlags_AllowTabInput flag) doesn't automatically activate it, in order to allow passing through multiple widgets easily. (#3092, #5759, #787)
  • Drags, Sliders, Inputs:
    • DragScalarN, SliderScalarN, InputScalarN: Fixed incorrect pushes into ItemWidth stack when number of components is 1. [#7095] [@Nahor]
    • Drags, Sliders, Inputs: removed all attempts to filter non-numerical characters during text editing. Invalid inputs not applied to value, visibly reverted after validation. (#6810, #7096)
    • Drags, Sliders, Inputs: removal of filter means that "nan" and "inf" values may be input. (#7096)
    • DragScalarN, SliderScalarN, InputScalarN, PushMultiItemsWidths: improve multi-components width computation to better distribute the error. (#7120, #7121) [@Nahor]
  • Menus:
    • Tweaked hover slack logic, adding an extra timeout to avoid situations where a slow vertical movements toward another parent BeginMenu() can keep the wrong child menu open. (#6671, #6926)
  • Color Editors:
    • ColorEdit: Layout tweaks for very small sizes. (#7120, #7121)
    • ColorPicker: Fixed saturation/value cursor radius not scaling properly.
  • Tabs: Added ImGuiTabItemFlags_NoAssumedClosure to enable app to react on closure attempt, without having to draw an unsaved document marker (ImGuiTabItemFlags_UnsavedDocument sets _NoAssumedClosure automatically). (#7084)
  • Debug Tools:
    • Added io.ConfigDebugIsDebuggerPresent option. When enabled, this adds buttons in various locations of Metrics/Debugger to manually request a debugger break: (see Debug Tools Wiki Page)
      • Request a debug break in a Begin() call.
      • Request a debug break in a ItemAdd() call via debug log and hovering 0xXXXXXX identifiers.
      • Request a debug break in a BeginTable() call.
      • Request a debug break in a SetShortcutRouting()/Shortcut() call. [Internal]
    • Metrics: Reorganize Tools menu.
    • Added DebugFlashStyleColor() to identify a style color. Added to Style Editor.
    • Debug Log: Hide its own clipper log to reduce noise in the output. (#5855)
    • Debug Log: Clicking any filter with SHIFT held enables it for 2 frames only, making it easier when dealing with spammy logs. (#5855)
  • Settings: Fixed an issue marking settings as dirty when merely clicking on a border or resize grip without moving it.
  • Misc: Added IMGUI_USER_H_FILENAME to change the path included when using IMGUI_INCLUDE_IMGUI_USER_H.. (#7039) [@bryceberger]
  • Misc: Rework debug display of texture id in Metrics window to avoid compile-error when ImTextureID is defined to be larger than 64-bits. (#7090)
  • Misc: Added extra courtesy ==/!= operators when IMGUI_DEFINE_MATH_OPERATORS is defined.
  • Misc: Fixed text functions fast-path for handling "%s" and "%.*s" to handle null pointers gracefully, like most printf implementations. (#7016, #3466, #6846) [@codefrog2002]
  • Misc: Renamed some defines in imstb_textedit.h to avoid conflicts when using unity/jumbo builds on a codebase where another copy of the library is used.
  • Misc: During shutdown, check that io.BackendPlatformUserData and io.BackendRendererUserData are NULL in order to catch cases where backend was not shut down. (#7175)
  • Misc: Reworked Issue Template to a shinier and better form. (#5927) [@Panquesito7, @PathogenDavid, @ocornut]
  • Backends:
    • GLFW, Emscripten: Added ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback() to register canvas selector and auto-resize GLFW window. (#6751) [@Traveller23, @ypujante]
    • GLFW: Fixed Windows specific hooks to use Unicode version of WndProc even when compiling in MBCS mode. (#7174) [@kimidaisuki22]
    • OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load libGL.so variants in case of missing symlink. Fix 1.90 regression for some distros. (#6983)
    • Vulkan: Fixed mismatching allocator passed to vkCreateCommandPool() vs vkDestroyCommandPool(). (#7075) [@FoonTheRaccoon]
    • Vulkan: Added MinAllocationSize field in ImGui_ImplVulkan_InitInfo to workaround zealous "best practice" validation layer. (#7189, #4238) [@philae-ael]
    • Vulkan: Stopped creating command pools with VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT as we don't reset them.
    • WebGPU: Fixed wgpuRenderPassEncoderSetScissorRect() crash when rendering modal window's dimming layer, which has an unclipped value in ImDrawCmd::ClipRect. (#7191) [@aparis69]
  • Examples:
    • Examples: GLFW+Emscripten: Fixed examples not consistently resizing according to host canvas. (#6751) [@Traveller23, @ypujante]
    • Examples: SDL3: Minor fixes following recent SDL3 in-progress development.

Changes from 1.90 to 1.90.1 related to the docking branch (multi-viewport and docking features):

  • Backends: OSX: Fixed monitor and window position by correctly transforming Y origin on multi-viewports multi-monitor setups. (#7028, #7101, #6009, #6432) [@dmirty-kuzmenko, @734vin]
  • Backends: OSX: Fixed IME position in multi-monitor multi-viewports setups. (#7028) [@734vin]
  • Backends: DX12: Changed swapchain scaling mode to DXGI_SCALING_NONE to reduce artifacts as queued frames aren't synchronized with platform window resizes. (#7152, #7153) [@SuperWangKai]
  • Windows: Fixed ImGuiCol_TitleBg/Active alpha being used for viewport-owned windows. (#7181) [@PathogenDavid]

Changes from 1.90 to 1.90.0 related to the range-select branch:

This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. I know I said this API would have been stabilized by now, but it's not! I expect that the latest major API breaking changes are now done. Hopefully this is on track to be stable and merged in 1.91.

Open for details of Multi-Select/Range-Select changes
  • RangeSelect/MultiSelect: support for nested/stacked BeginMultiSelect().
  • RangeSelect/MultiSelect: move demo's ExampleSelection to main API as a convenient ImGuiSelectionBasicStorage helper.
  • RangeSelect/MultiSelect: Added ImGuiMultiSelectFlags_NoRangeSelect.
  • RangeSelect/MultiSelect: Fixed ImGuiMultiSelectFlags_ScopeRect not querying proper window hover.
  • RangeSelect/MultiSelect: Box-Select: Fixed CTRL+drag from void clearing items.
  • RangeSelect/MultiSelect: Box-Select: Fixed scrolling on high frame-rates.
  • RangeSelect/MultiSelect: Box-Select: Fixed initial drag from not claiming hovered id, preventing window behind to move for a frame.
  • RangeSelect/MultiSelect: Box-Select: Fixed holes when using with clipper (in 1D list).
  • RangeSelect/MultiSelect: Box-Select: Added ImGuiMultiSelectFlags_BoxSelect2d support. Enabled in Asset Browser. Selectable() supports it.
  • Demo: Assets Browser: Added deletion support. Store ID in selection.
  • Demo: Assets Browser: Track scrolling target so we can roughly land on hovered item.

Thank you for reading this changelog!

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Some interesting new third-party projects:

@sakiodre: "Spotted in a LTT's video, Bigscreen Beyond uses dear imgui for their driver utility interface." image

@AlpyneDreams: "We recently updated our in-engine realtime lighting editor to use ImGui for the Source Engine branch used by Portal 2: Desolation. This replaces the old VGUI light editor which was somewhat cumbersome to use. We also support placing area lights and projected cubemap light probes." image-6.png

@kyle-sylvestre: MightyGrep is a simple file searching application

https://github.com/ocornut/imgui/assets/25188464/25804b39-231b-42af-a17e-08d36127d831

@r5r6ty "I use imgui for my Unity game development a video use this repo: Uimgui image

@WerWolf: "I've posted some pictures here before but it's been close to 3 years of development now and A LOT has change since. Here's some new pictures of ImHex, the Hex Editor / Reverse Engineering Suite I've been developing using ImGui" https://imhex.werwolv.net / https://web.imhex.werwolv.net

image

Data Information view displaying various stats about the file image

@arabine "A Story Editor to build stories for a home made story teller device (for children). " https://github.com/arabine/open-story-teller / https://www.openstoryteller.org openstoryteller

@foxnne "I posted a much older version of this, but this is my pixel art project, Pixi." pixi

@xhighway999 "Again just another game engine called ITERO for our inhouse project" image


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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out (omar AT dearimgui DOT com). See Sponsors page.

v1.90

5 months ago

1.90

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, otherwise it is clipped by GitHub!


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

Ongoing work on Dear ImGui is currently financially supported by:

Special thanks to @GamingMinds-DanielC, @PathogenDavid, @sakiodre, for their help with github answers.

Last release we reached 50000 stars. Our latest arbitrary milestone is that for a brief moment we had 777 open issues and 4444 closed ones.

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8, v1.89.9. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently. Remember that our policy is to comment out obsolete names/symbols after 24 months, so at minimum you must update once year to reduce update complexity, but the most frequently you update the easier it will be.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the multi-select feature in it. Guess what? It's not done (now scheduled for 1.91)! And because 1.90 changelog is big enough already I'm tagging it now. There are about 1000 lines of changelog between 1.89 and 1.90.

TL;DR

  • Resizable child windows (manual and automatic modes, with support for constraints)!
  • Changed BeginChild() signature to enable new features: replaced bool border=false with ImGuiChildFlags, backward compatible.
  • Angled table headers!
  • Double-clicking on window border to auto-resize on this axis.
  • Separators fixes and better standardization with other widgets.
  • Tooltips, Drag and Drop, Menus, InputText, Tables, Fonts: many fixes and improvements.
  • Docking: revised undocking to reduce accidental whole-node undocking (read details below).
  • Docking: fixes some cases of misrestored currently focused tab on application restore.
  • Backends: Vulkan: Simplification for texture upload (less work by app/user).
  • Backends: SDL3: Update to latest fluctuating work-in-progress SDL3 api.
  • More demo, more debug tools, various non-publicized-yet internal features, many other things!

Resizable child windows child_resizable2_with_constraints

Angled table headers table angled headers 3

Breaking Changes:

  • BeginChild(): Upgraded bool border = false parameter to ImGuiChildFlags flags = 0;. Added ImGuiChildFlags_Border value. As with our prior "bool-to-flags" API updates, the ImGuiChildFlags_Border value is guaranteed to be == true forever to ensure a smoother transition, meaning all existing calls will still work. If you want to neatly transition your call sites:
    • Before: BeginChild("Name", size, true)
    • After: BeginChild("Name", size, ImGuiChildFlags_Border)
    • Before: BeginChild("Name", size, false)
    • After: BeginChild("Name", size) or BeginChild("Name", 0) or BeginChild("Name", size, ImGuiChildFlags_None).
  • Existing code will still work as ImGuiChildFlags_Border == true, but you are encouraged to update call sites.
  • BeginChild(): Added child-flag ImGuiChildFlags_AlwaysUseWindowPadding as a replacement for the window-flag ImGuiWindowFlags_AlwaysUseWindowPadding: the feature only ever made sense for use with BeginChild() anyhow, passing it to Begin() had no effect. Now that we accept child-flags we are moving it there. Kept inline redirection enum (will obsolete later) so existing code will work. (#462)
    • Before: BeginChild("Name", size, 0, ImGuiWindowFlags_AlwaysUseWindowPadding);
    • After: BeginChild("Name", size, ImGuiChildFlags_AlwaysUseWindowPadding, 0);
  • BeginChildFrame()/EndChildFrame(): removed functions in favor of using BeginChild() with the ImGuiChildFlags_FrameStyle flag. Kept inline redirection function (will obsolete). Those functions were merely PushStyleXXX/PopStyleXXX helpers and custom versions are easy to create. (The removal isn't so much motivated by needing to add the feature in BeginChild(), but by the necessity to avoid BeginChildFrame() signature mismatching BeginChild() signature and features.)
  • Debug Tools: Renamed ShowStackToolWindow() ("Stack Tool") to ShowIDStackToolWindow() ("ID Stack Tool"), as earlier name was misleading. Kept inline redirection function. (#4631)
  • IO: Removed io.MetricsActiveAllocations introduced in 1.63, was displayed in Metrics and unlikely to be accessed by end-user. Value still visible in the UI and easily to recompute from a delta.
  • Defining IMGUI_DISABLE_OBSOLETE_FUNCTIONS now automatically defines IMGUI_DISABLE_OBSOLETE_KEYIO. (#4921)
  • Removed IM_OFFSETOF() macro in favor of using offsetof() available in C++11. Kept redirection define. (#4537)
  • ListBox, Combo: Changed signature of "name getter" callback in old one-liner ListBox()/Combo() apis.
    • Before:
      • getter type: bool (*getter)(void* user_data, int idx, const char** out_text)
      • function: bool Combo(const char* label, int* current_item, bool (*getter)(void* user_data, int idx, const char** out_text), ...);
      • function: bool ListBox(const char* label, int* current_item, bool (*getting)(void* user_data, int idx, const char** out_text), ...);
    • After:
      • getter type: const char* (*getter)(void* user_data, int idx)
      • function: bool Combo(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...);
      • function: bool ListBox(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...);
    • Old type was unnecessarily complex and harder to wrap in e.g. a lambda. Kept inline redirection function (will obsolete).
  • Commented out obsolete redirecting enums/functions that were marked obsolete two years ago:
    • GetWindowContentRegionWidth() -> use GetWindowContentRegionMax().x - GetWindowContentRegionMin().x. Consider that generally GetContentRegionAvail().x is often more correct and more useful.
    • ImDrawCornerFlags_XXX -> use ImDrawFlags_RoundCornersXXX names. Read 1.82 changelog for details + grep commented names in sources.
    • Commented out runtime support for hardcoded ~0 or 0x01..0x0F rounding flags values for AddRect()/AddRectFilled()/PathRect()/AddImageRounded(). -> Use ImDrawFlags_RoundCornersXXX flags. Read 1.82 changelog for details.
  • Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload the font atlas texture. (#6943, #6715, #6327, #3743, #4618)

Other Changes:

  • Windows:
    • BeginChild(): Added ImGuiChildFlags_ResizeX and ImGuiChildFlags_ResizeY to allow resizing child windows from the bottom/right border (toward layout direction). Resized child windows settings are saved and persistent in .ini file. (#1710)
    • BeginChild(): Added ImGuiChildFlags_Border as a replacement for 'bool border = true' parameter.
    • BeginChild(): Added ImGuiChildFlags_AutoResizeX and ImGuiChildFlags_AutoResizeY to auto-resize on one axis, while generally providing a size on the other axis. (#1666, #1395, #1496, #1710) e.g. BeginChild("name", {-FLT_MIN, 0.0f}, ImGuiChildFlags_AutoResizeY);
      • Size is only reevaluated if the child window is within visible boundaries or just appearing. This allows coarse clipping to be performed and auto-resizing childs to return false when hidden because of being scrolled out.
      • Combining this with also specifying ImGuiChildFlags_AlwaysAutoResize disables this optimization, meaning child contents will never be clipped (not recommended).
      • Please be considerate that child are full windows and carry significant overhead: combining auto-resizing for both axises to create a non-scrolling child to merely draw a border would be better more optimally using BeginGroup(). (until we come up with new helpers for framed groups and work-rect adjustments, see #1496).
    • BeginChild(): made it possible to use SetNextWindowSizeConstraints() rectangle, often useful when ImGuiChildFlags_AutoResizeX or ImGuiChildFlags_AutoResizeY. (#1666, #1395, #1496) Custom constraint callback are not supported with child window.
    • BeginChild(): Added ImGuiChildFlags_FrameStyle as a replacement for BeginChildFrame(), use it to make child window use FrameBg, FrameRounding, FrameBorderSize, FramePadding instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding.
    • Popups: clarified meaning of p_open != NULL in BeginPopupModal() + set back user value to false when popup is closed in ways other than clicking the close button. (#6900)
    • Double-clicking lower-left resize grip auto-resize (like lower-right one).
    • Double-clicking bottom or right window border auto-resize on a singles axis.
    • Use relative mouse movement for border resize when the border geometry has moved (e.g. resizing a child window triggering parent scroll) in order to avoid resizing feedback loops. Unless manually mouse-wheeling while border resizing. (#1710)
  • Separators:
    • Altered end-points to use more standard boundaries. (#205, #4787, #1643) Left position is always current cursor X position, right position is always work-rect rightmost edge. It effectively means that:
      • A separator in the root of a window will end up a little more distant from edges than previously (essentially following WindowPadding instead of clipping edges).
      • A separator inside a table cell end up a little distance from edges instead of touching them (essentially following CellPadding instead of clipping edges).
      • Matches tree indentation (was not the case before).
      • Matches SeparatorText(). (#1643)
      • Makes things correct inside groups without specific/hard-coded handling. (#205)
    • Support legacy behavior when used inside old Columns(), as we favored that idiom back then, only different is left position follows indentation level, to match calling a Separator() inside or outside Columns().
  • Tooltips:
    • Made using SetItemTooltip()/IsItemHovered(ImGuiHoveredFlags_ForTooltip) defaults to activate tooltips on disabled items. This is done by adding ImGuiHoveredFlags_AllowWhenDisabled to the default value of style.HoverFlagsForTooltipMouse/style.HoverFlagsForTooltipNav. (#1485)
    • Made is possible to combine ImGuiHoveredFlags_ForTooltip with a ImGuiHoveredFlags_DelayXXX override. (#1485)
  • Drag and Drop:
    • Reworked drop target highlight: reduce rectangle to its visible portion, and then expand slightly. A full rectangle is always visible and it may protrude slightly. (#4281, #3272)
    • Fixed submitting a tooltip from drop target location when using AcceptDragDropPayload() with ImGuiDragDropFlags_AcceptNoPreviewTooltip and submitting a tooltip manually.
  • Tables:
    • Added angled headers support. You need to set ImGuiTableColumnFlags_AngledHeader on selected columns and call TableAngledHeadersRow(). Added style.TableAngledHeadersAngle style option.
    • Added ImGuiTableFlags_HighlightHoveredColumn flag, currently highlighting column header.
    • Fixed an edge-case when no columns are visible + table scrollbar is visible + user code is always testing return value of TableSetColumnIndex() to coarse clip. With an active clipper it would have asserted. Without a clipper, the scrollbar range would be wrong.
    • Request user to submit contents when outer host-window is requesting auto-resize, so a scrolling table can contribute to initial window size. (#6510)
    • Fixed subtle drawing overlap between borders in some situations.
    • Fixed bottom-most and right-most outer border offset by one. (#6765, #3752) [@v-ein]
    • Fixed top-most and left-most outer border overlapping inner clip-rect when scrolling. (#6765)
    • Fixed top-most outer border being drawn with both TableBorderLight and TableBorderStrong in some situations, causing the earlier to be visible underneath when alpha is not 1.0f.
    • Fixed right-clicking right-most section (past right-most column) from highlighting a column.
    • Fixed an issue with ScrollX enabled where an extraneous draw command would be created.
  • Menus:
    • Menus: Fixed a bug where activating an item in a child-menu and dragging mouse over the parent-menu would erroneously close the child-menu. (Regression from 1.88). (#6869)
    • MenuBar: Fixed an issue where layouting an item in the menu-bar would erroneously register contents size in a way that would affect the scrolling layer. Was most often noticeable when using an horizontal scrollbar. (#6789)
  • InputText:
    • InputTextMultiline(): Fixed a crash pressing Down on last empty line of a multi-line buffer. (regression from 1.89.2, only happened in some states). (#6783, #6000)
    • `InputTextMultiline(): Fixed Tabbing cycle leading to a situation where Enter key wouldn't be accepted by the widget when navigation highlight is visible. (#6802, #3092, #5759, #787)
  • Nav: Tabbing always enable nav highlight when ImGuiConfigFlags_NavEnableKeyboard is set. Previously was inconsistent and only enabled when stepping through a non-input item. (#6802, #3092, #5759, #787)
  • TreeNode: Added ImGuiTreeNodeFlags_SpanAllColumns for use in tables. (#3151, #3565, #2451, #2438)
  • TabBar: Fixed position of unsaved document marker (ImGuiTabItemFlags_UnsavedDocument) which was accidentally offset in 1.89.9. (#6862) [@alektron]
  • ColorPicker4(): Fixed ImGuiColorEditFlags_NoTooltip not being forwarded to individual DragFloat3 sub-widgets which have a visible color preview when ImGuiColorEditFlags_NoSidePreview is also set. (#6957)
  • BeginGroup(): Fixed a bug pushing line lower extent too far down when called after a call to SameLine() followed by manual cursor manipulation.
  • BeginCombo(): Added ImGuiComboFlags_WidthFitPreview flag. (#6881) [@mpv-enjoyer]
  • BeginListBox(): Fixed not consuming SetNextWindowXXX() data when returning false.
  • Fonts:
    • Argument float size_pixels passed to AddFontXXX() functions is now rounded to lowest integer. This is because our layout/font system currently doesn't fully support non-integer sizes. Until it does, this has been a common pitfall leading to more or less subtle issues. (#3164, #3309, #6800)
    • Better assert during load when passing truncated font data or wrong data size. (#6822)
    • Ensure calling AddFontXXX function doesn't invalidates ImFont's ConfigData pointers prior to building again. (#6825)
    • Added ImFontConfig::RasterizerDensity field to increase texture size of rendered glyphs without altering other metrics. Among other things, this makes it easier to have zooming code swapping between 2 fonts (e.g. a 100% and a 400% fonts) depending on current scale. (#6925) [@thedmd] Important: if you increase this it is expected that you would render the font with a scale of similar value or magnitude. Merely increasing this without increasing scale may lower quality.
    • imgui_freetype: Added support for ImFontConfig::RasterizerDensity. (#6925) [@thedmd]
    • imgui_freetype: Fixed a warning and leak in IMGUI_ENABLE_FREETYPE_LUNASVG support. (#6842, #6591)
  • Inputs: Added IsKeyChordPressed() helper function e.g. IsKeyChordPressed(ImGuiMod_Ctrl | ImGuiKey_S). (note that ImGuiMod_Shortcut may be used as an alias for Cmd on OSX and Ctrl on other systems).
  • Misc: Most text functions also treat "%.*s" (along with "%s") specially to bypass formatting. (#3466, #6846)
  • IO: Add extra keys to ImGuiKey enum: ImGuiKey_F13 to ImGuiKey_F24. (#6891, #4921)
  • IO: Add extra keys to ImGuiKey enum: ImGuiKey_AppBack, ImGuiKey_AppForward. (#4921)
  • IO: Setting io.WantSetMousePos ignores incoming MousePos events. (#6837, #228) [@bertaye]
  • Debug Tools: Metrics: Added log of recent alloc/free calls.
  • Debug Tools: Metrics: Added "Show groups rectangles" in tools.
  • ImDrawList: Added AddEllipse(), AddEllipseFilled(), PathEllipticalArcTo(). (#2743) [@Doohl]
  • ImVector: Added find_index() helper.
  • Demo: Added "Drag and Drop -> Tooltip at target location" demo.
  • Demo: Added "Layout -> Child Windows -> Manual-resize" demo. (#1710)
  • Demo: Added "Layout -> Child Windows -> Auto-resize with constraints" demo. (#1666, #1395, #1496, #1710)
  • Demo: Partly fixed "Examples -> Constrained-resizing window" custom constrains demo. (#6210) [@cfillion]
  • Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload font atlas texture. Fixed leaks, and added ImGui_ImplVulkan_DestroyFontsTexture() (probably no need to call this directly). (#6943, #6715, #6327, #3743, #4618) [@helynranta, @thomasherzog, @guybrush77, @albin-johansson, @MiroKaku, @benbatya-fb, @ocornut]
  • Backends: GLFW: Clear emscripten's MouseWheel callback before shutdown. (#6790, #6096, #4019) [@halx99]
  • Backends: GLFW: Added support for F13 to F24 function keys. (#6891)
  • Backends: SDL2, SDL3: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891)
  • Backends: SDL3: Updates for recent API changes. (#7000, #6974)
  • Backends: Win32: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891)
  • Backends: Win32: Added support for keyboard codepage conversion for when application is compiled in MBCS mode and using a non-Unicode window. (#6785, #6782, #5725, #5961) [@sneakyevil]
  • Backends: Win32: Synthesize key-down event on key-up for VK_SNAPSHOT / ImGuiKey_PrintScreen as Windows doesn't emit it (same behavior as GLFW/SDL). (#6859) [@thedmd, @SuperWangKai]
  • Backends: OpenGL3: rename symbols in our internal loader so that LTO compilation with another copy of gl3w becomes possible. (#6875, #6668, #4445) [@nicolasnoble]
  • Backends: OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load "libGL.so" instead of "libGL.so.1", accommodating for NetBSD systems having only "libGL.so.3" available. (#6983)
  • Backends: OSX: Added support for F13 to F20 function keys. Support mapping F13 to PrintScreen. (#6891)
  • Examples: GLFW+Vulkan, SDL+Vulkan: Simplified and removed code due to backend improvements.
  • Internals: Renamed ImFloor() to ImTrunc(). Renamed ImFloorSigned() to ImFloor(). (#6861)

Changes from 1.89.9 to 1.90.0 related to the docking branch (multi-viewport and docking features):

  • Viewports: Fixed window inner clipping rectangle off by one when window is located on a monitor with negative coordinates. While it is expected that other small issues with arise from this situation, at the moment we are fixing the most noticeable one. (#6861, #2884) [@Vuhdo, @alektron]
  • Docking: revised undocking to reduce accidental whole-node undocking:
    • cannot undock a whole node by dragging from empty space in tab-bar.
    • can undock whole node by dragging from window/collapse menu button.
    • can undock single window by dragging from its tab.
    • can still move (but not undock) whole node or whole hierarchy when node is part of a floating hierarchy.
    • added tooltip when hovering the collapse/window menu button, to facilitate understanding that whole dock node may be undocked or grabbed from here.
  • Docking: Fixed an issue leading to incorrect restoration of selected tab in dock nodes that don't carry the currently focused window. (#2304)
  • Docking: added ImGuiDockNodeFlags_NoUndocking. (#2999, #6823, #6780, #3492)
  • Docking: renamed ImGuiDockNodeFlags_NoSplit to ImGuiDockNodeFlags_NoDockingSplit.
  • Docking: renamed ImGuiDockNodeFlags_NoDockingInCentralNode to ImGuiDockNodeFlags_NoDockingOverCentralNode.
  • Docking: Internals: renamed ImGuiDockNodeFlags_NoDockingSplitMe to ImGuiDockNodeFlags_NoDockingSplit.
  • Docking: Fixed a bug where ClassId compare tests (when using SetNextWindowClass) on success would prevent further filter from running, namely the one that prevent docking over a popup.
  • Backends: GLFW: Fixed an assertion in situation where the WndProc handler is different between main and secondary viewport (may happen due to third-party hooks). (#6889)
  • Backends: DX9: Fixed incorrect assert triggering on reopening session with minimized windows. (#3424)

Changes from 1.89.9 to 1.90.0 related to the prototype range-select branch:

This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. I know I said this API would have been stabilized by now, but it's not! I expect that the latest major API breaking changes are now done. Hopefully this is on track to be stable and merged in 1.91.

Open for details of Multi-Select/Range-Select changes
  • RangeSelect/MultiSelect: (Breaking) ImGuiMultiSelectIO now contains a ImVector<ImGuiSelectionRequest> list. This api will allow box-selection to work. (see a1e85e0).
  • RangeSelect/MultiSelect: (breaking) renamed ImGuiMultiSelectFlags_ClearOnClickWindowVoid to ImGuiMultiSelectFlags_ClearOnClickVoid.
  • RangeSelect/MultiSelect: added support for nested/stacked BeginMultiSelect().
  • RangeSelect/MultiSelect: added ImGuiMultiSelectFlags_ScopeWindow, ImGuiMultiSelectFlags_ScopeRect to override/specify scope.
  • RangeSelect/MultiSelect: added support for ImGuiMultiSelectFlags_BoxSelect (doesn't work well with clipper yet).
  • RangeSelect/MultiSelect: added support for missing EndMultiSelect() recovery in ErrorCheckEndWindowRecover().
  • RangeSelect/MultiSelect: clarified purpose and use of IsItemToggledSelection(). Added assert. Moved to multi-selection section of imgui.h.
  • RangeSelect/MultiSelect: demo: rework and move selection adapter inside ExampleSelection.
  • RangeSelect/MultiSelect: various internal fixes/improvements.

Thank you for reading this changelog!

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Some interesting new third-party projects:

  • imgui-uwp: UWP backend, by @ahmed605
  • Cog: a set of debug tools for Unreal Engine built on top of Dear ImGui, by @arnaud-jamin.
  • imgui_bundle by @pthom: "easily create ImGui applications in Python and C++. Batteries included!"
  • see Useful extensions wiki page for more.

Some debug tools in Alan Wake 2 https://www.remedygames.com/article/how-northlight-makes-alan-wake-2-shine Alan Wake 2 6544c372589da1e2a2285809_luau_weather_system

@allenwp: The AV Latency.com Toolkit is an open source software suite that is used to accurately measure audio latency of consumer electronics for the purpose of audio-video synchronization (AV sync). RTINGS.com will soon be integrating this toolkit into their test methods. AV Latency.com tooltip

@skaarj1989: SupernovaEngine SceneEditor https://github.com/skaarj1989/SupernovaEngine

@coumcashier: "I would like to find out what ImGui's styling system could do. So I created a clone of the sign in page for a popular gaming platform. It implements changing border color on hover/active state for buttons and checkbox as this is commonly found in web apps but not provided by default in ImGui. Its follows the vibe design system from Monday.com."

https://github.com/ocornut/imgui/assets/122149176/3dc68815-c501-42ad-97ea-9f78be8f7df3

@pavelsevecek: "I'm using ImGui for my space simulation software." https://pavelsevecek.github.io/ image

@Froyok: "I'm still iterating on my Game Engine UI and now have switched to the docking branch. I'm using a lot of custom tweaks in here, but without modifying Dear ImGui itself." 2023-09-13__18-28-05

Machina Labs (https://machinalabs.ai) using Dear ImGui, spotted in SmarterEveryDays Video about incremental sheet forming: image

Quake II remastered debug tools https://bethesda.net/en/article/6NIyBxapXOurTKtF4aPiF4/enhancing-quake-ii QII_Tech_debug_in-body

@hugeproblem: "Yet another node graph editor [..] It's not a immediate-mode-node-graph addon for ImGui, but more of a (embeddable, customizable, extensible, scriptable) standalone application. It has nice looking default appearance:" https://github.com/hugeproblem/nged visuals7 (+ many cool gifs at https://github.com/ocornut/imgui/issues/6478#issuecomment-1747288625)

@JorenJoestar: "As needed aid to write our "Mastering Graphics Programming with Vulkan", ImGui was essential. Probably not the most advanced usage of it, but the possibility of debugging any texture in realtime (especially with bindless rendering), or having a simple but effective GPU profiler, needed to check the timings for each technique developed for each chapter, or simply having all the debug options and tweables for each render subsystem was like having a team to help!" https://github.com/PacktPublishing/Mastering-Graphics-Programming-with-Vulkan raptor_ch15_imgui

@ocjb: "My work in progress game engine." image

IOLITE voxel game engine https://iolite-engine.com/ screenshot_19

Meta XR Simulator https://developer.oculus.com/downloads/package/meta-xr-simulator/ 378383830_1358858478377994_5108334384719819498_n

Generative Fill for Video at Adobe Max #ProjectFastFill https://www.youtube.com/watch?v=kyYk-u2rxYA Capture

@arnaud-jamin: "Cog is a set of debug tools for Unreal Engine" https://github.com/arnaud-jamin/Cog image

Adventure game Engine for MSX2 + game Stan the Dreamers https://jamque.itch.io/stan-the-dreamer-msx2/devlog/396876/a-new-adventure-game-engine-has-come-to-msx2
F8d0-TcWwAAMBFd

@guillaC: SQLiteDiskExplorer and "SQLiteDiskExplorer is a tool designed to assist you in the efficient management of your SQLite files. Explore and manage your SQLite files with ease using SQLiteDiskExplorer, Your valuable data is just a scan away !" https://github.com/guillaC/SQLiteDiskExplorer image image

Wallet "is application that lets you manage your stock and finance. It is meant to be lite and efficient. It is not a trading platform." https://wallet.wiimag.com/ wallet

@TheGoodDoktor: "Spectrum Analyser is a program that helps you to reverse engineer ZX Spectrum games. I wrote it for my own amusement but others have found it interesting too." https://github.com/TheGoodDoktor/8BitAnalysers Spectrum Analyser

@quantmage: QuantMage is a SaaS platform for algorithmic & quantitative stock investment. It's using ImGui+WASM for its logic editor and backtesting tool frontend. https://quantmage.app/grimoire/88feda7697abf9d66cf63ae359ac3cb2 Screenshot 2023-10-30 at 10 32 02 AM

@jamesdolezal: "Slideflow Studio is a user interface for deploying deep learning models for digital pathology research applications. Dear Imgui (and the python wrapper, pyimgui) were essential in making this a success. Thank you for developing this wonderful framework!" slideflow_studio

@Saul-Alejandro-Gonzalez-Vilchis: "INDEX 2024 is a game engine IDE program that will be released on December 31, 2023 also powered by the private hazel source code. Its user interface is so beautiful that a lot of effort will be put into it. that's why we will add a "Ribbon Bar" system. [...] Thank for ImGui & Hazel Core Team" https://github.com/INDEV-Technologies/INDEX

https://github.com/ocornut/imgui/assets/126918321/d38e191f-2b9b-4e78-8b0b-848fd9948d5d

@Ermelber: Mario Kart Toolbox: "This is a Mario Kart DS modding suite I've been working on with @Gericom. This uses the latest and greatest .NET 7.0 with C# bindings thanks to ImGui.NET (using an OpenGL backend with [OpenTK] https://github.com/opentk/opentk)) and we use a modified version of ImGuizmo for 3D controls." Screenshot 2023-11-13 100615


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 needs them to sustain and grow. We can invoice and accommodate to many situations. If your company uses Dear ImGui, please reach out. See Sponsors page.

v1.89.9

7 months ago

1.89.9: September release! 🌲

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, sometimes randomly clipped by GitHub..


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Dear ImGui is funded by your contributions and needs them to sustain and grow. We can do regular B2B Invoicing. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

Ongoing work on Dear ImGui is currently financially supported by:

Special thanks to @GamingMinds-DanielC, @sakiodre, @PathogenDavid for their help with github answers.

Reaching 50000 GitHub stars: (49993 as I'm typing those words) image

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7, v1.89.8. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the range-select feature in it, but it's not done... But there are about 650 lines of changelog between 1.89 and 1.89.9.

Breaking Changes:

  • Clipper: Renamed IncludeRangeByIndices() (also called ForceDisplayRangeByIndices() before 1.89.6) again to IncludeItemsByIndex(). Kept inline redirection function. (#6424, #3841)

Other Changes:

  • Tables: Made it possible to use SameLine(0,0) after TableNextColumn()/TableSetColumnIndex() in order to reuse line pos/height from previous cell. (#3740)
  • Tables: Made it possible to change style.CellPadding.y between rows. (#3740)
  • Nav, TreeNode: Pressing Left with ImGuiTreeNodeFlags_NavLeftJumpsBackHere now goes through proper navigation logic: honor scrolling and selection. (#1079, #1131)
  • Sliders: Fixed an integer overflow and div-by-zero in SliderInt() when v_max=INT_MAX. (#6675, #6679) [@jbarthelmes]
  • Windows: Layout of Close/Collapse buttons uses style.ItemInnerSpacing.x between items, stopped incorrectly using FramePadding in a way where hit-boxes could overlap when setting large values. (#6749)
  • InputFloat, SliderFloat, DragFloat: always turn both . and , into the current decimal point character when using Decimal/Scientific character filter. (#6719, #2278) [@adamsepp]
  • ColorEdit, ColorPicker: Manipulating options popup don't mark item as edited. (Note that they may still be marked as Active/Hovered.) (#6722)
  • Clipper: Added IncludeItemByIndex() helper to include a single item. (#6424, #3841)
  • Clipper: Fixed a bug if attempt to force-include a range which matches an already included range, clipper would end earlier. (#3841)
  • ImDrawData: Fixed an issue where TotalVtxCount/TotalIdxCount does not match the sum of individual ImDrawList's buffer sizes when a dimming/modal background is rendered. (#6716)
  • ImDrawList: Automatically calling ChannelsMerge() if not done after a split.
  • ImDrawList: Fixed OOB access in _CalcCircleAutoSegmentCount() when passing excessively large radius to AddCircle(). (#6657, #5317) [@EggsyCRO, @jdpatdiscord]
  • IO: Exposed io.PlatformLocaleDecimalPoint to configure decimal point ('.' or ',') for languages needing it. Should ideally be set to the value of *localeconv()->decimal_point but our backends don't do it yet. (#6719, #2278)
  • IO: Fixed io.AddMousePosEvent() and io.AddMouseButtonEvent() writing MouseSource to wrong union section. Was semantically incorrect and accidentally had no side-effects with default compiler alignment settings. (#6727) [@RickHuang2001]
  • Misc: Made multiple calls to Render() during the same frame early out faster.
  • Debug Tools: Metrics: Fixed "Drawlists" section and per-viewport equivalent appearing empty (regression in 1.89.8).
  • Demo: Reorganized "Examples" menu.
  • Demo: Tables: Demonstrate using SameLine() between cells. (#3740)
  • Demo: Tables: Demonstrate altering CellPadding.y between rows. (#3740)
  • Demo: Custom Rendering: Demonstrate out-of-order rendering using ImDrawListSplitter.
  • Backends: SDL2,SDL3: added ImGui_ImplSDL2_InitForOther()/ImGui_ImplSDL3_InitForOther() for consistency (matching GLFW backend) and as most initialization paths don't actually need to care about rendering backend.
  • Examples: Emscripten+WebGPU: Fixed WGPUInstance creation process + use preferred framebuffer format. (#6640, #6748) [@smileorigin]

image

Changes from 1.89.8 to 1.89.9 related to the docking branch (multi-viewport and docking features):

  • Docking: when io.ConfigDockingWithShift is enabled, staying stationary while moving a window displays an help tooltip to increase affordance. (#6709, #4643)

Changes from 1.89.8 to 1.89.9 related to the prototype range-select branch:

This is a new API that hasn't been discussed much in public yet. Ignore if you are not one of the few users. If you happen to be using this please do get in contact. I know I said this API would have been stabilized by now, but it's not! I expect to make some more changes before 1.90. Hopefully this is on track to be stable and merged in 1.90.

Open for details of MultiSelect changes
  • RangeSelect/MultiSelect: (BREAKING) Renamed SetNextItemSelectionData() to SetNextItemSelectionUserData().

  • RangeSelect/MultiSelect: (BREAKING) Use ImGuiSelectionUserData type (= ImS64) instead of void* for selection user data.

  • RangeSelect/MultiSelect: (BREAKING) RequestSetRange's parameter are RangeFirstItem...RangeLastItem (which are always ordered, unlike RangeSrcItem...RangeDstItem). Removed RangeDstItem. Removed RangeDirection.

  • RangeSelect/MultiSelect: (BREAKING) Removed RangeSrcPassedBy in favor of favoring user to call IncludeByIndex(RangeSrcItem) which is easier/simpler to honor.

  • RangeSelect/MultiSelect: (BREAKING) Renamed ImGuiMultiSelectFlags_NoMultiSelect to ImGuiMultiSelectFlags_SingleSelect as it seems easier to grasp + fixed behavior.

  • RangeSelect/MultiSelect: Added ImGuiMultiSelectFlags_SelectOnClickRelease to allow dragging an unselected item without altering selection + update drag and drop demo.

  • RangeSelect/MultiSelect: Assert if SetNextItemSelectionUserData() is called not in the context of a BeginMultiSelect() block.

  • RangeSelect/MultiSelect: Tweak debug log to print decimal+hex values for item data.

  • RangeSelect/MultiSelect: Clear selection when leaving a scope with a nav directional request (may make optional).

  • RangeSelect/MultiSelect: Demo: Assets Browser: Added assets browser demo.

  • RangeSelect/MultiSelect: Demo: Dual List Box: Added simple dual list box demo. (#6648)

  • RangeSelect/MultiSelect: Demo: added simpler demo using Clipper. Clarify RangeSrcPassedBy doc.

  • RangeSelect/MultiSelect: Demo: rework ExampleSelection with an ExampleSelectionAdapter layer, allowing to share more code across examples using different storage design.

  • RangeSelect/MultiSelect: Demo: rework deletion demo code.

    Previously:

    ImGui::SetNextItemSelectionData((void*)(intptr_t)idx);
    

    Now:

    ImGui::SetNextItemSelectionUserData(idx); 
    

    Previously:

    if (ms_io->RequestSetRange)
    {
        int first = (int)ms_io->RangeSrcItem;
        int last = (int)ms_io->RangeDstItem
        if (first > last)
            swap(first, last);
        for (int idx = first; idx <= last; idx++)
            SetSelection(idx, ms_io->RangeSelected);
    }
    

    Now:

    if (ms_io->RequestSetRange)
        for (int idx = ms_io->RangeFirstItem; idx <= ms_io->RangeLastItem; idx++)
            SetSelection(idx, ms_io->RangeSelected);
    

    Previously: (required inside loop and after loop, when using clipper)

     if (!ms_io->RangeSrcPassedBy && clipper.DisplayStart > ms_io->RangeSrcItem)
         ms_io->RangeSrcPassedBy = true;
    

    Now:

     if (ms_io->RangeSrcItem != -1)
         clipper.IncludeItemByIndex((int)ms_io->RangeSrcItem); // Ensure RangeSrc item is not clipped.
    

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Below a selection of screenshots from Gallery threads...

@simco50: "A simple CPU/GPU profiler with a timeline UI having both CPU and GPU tracks in the same synchronized view. Continuously records and saves N frames and can be paused to analyze." https://github.com/simco50/TimelineProfiler

TimelineProfiler

Intel XeSS Demo https://github.com/intel/xess 260038114-2b8c0114-2f37-4cbb-87c5-1a85d77b23cd

PrusaSlicer (Prusa Slic3r) using Dear ImGui within their 3d viewport: https://www.prusa3d.com/page/prusaslicer_424/ Slic3r

@samuel-watson: "This is a non-game related example. Dear ImGui is used as the GUI for a scientific application to support the design of cluster randomised trials (a type of experimental design). [...] It runs in the browser and is compiled using Emscripten to generate the html, JS, and WASM files. " The app is currently hosted at https://www.clustertrial.app/ and the code is available at the GitHub repo. clusterapp_screenshot

@lukaasm: "Next addition to our game/engine tooling suite: ParticleEditor ( based on modified version of https://github.com/thedmd/imgui-node-editor )" ParticleEditor

@rodan: "Magic Carpet 2 porting effort." https://github.com/rodan/magic_carpet_2 mc2

@cfnptr: "Screenshot from my pet game engine editor. With a visual studio code inspired theme :)" Screenshot from 2023-08-18 15-40-41

YAZE (Yet Another Zelda3 Editor) by @scawful https://github.com/scawful/yaze yaze-01

Property Watcher: A runtime variable watch window for Unreal Engine using ImGui, by @guitarfreak https://github.com/guitarfreak/PropertyWatcher 263518750-2d26cc5b-a054-4200-ac5c-80d698e44d73


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

v1.89.8

9 months ago

1.89.8: August release! 🌞

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, sometimes randomly clipped by GitHub..


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Ongoing work on Dear ImGui is currently financially supported by:

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Dear ImGui is funded by your contributions and needs them right now. We can do regular B2B Invoicing. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6, v1.89.7. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the range-select feature in it, but it's not done... But there are about 600 lines of changelog between 1.89 and 1.89.8.

Breaking Changes:

  • IO: Obsoleted io.ClearInputCharacters() (added in 1.47) as it now ambiguous and often incorrect/misleading considering the existence of a higher-level input queue. This is automatically cleared by io.ClearInputsKeys(). (#4921)
  • ImDrawData: CmdLists[] array is now owned, changed from ImDrawList** to ImVector<ImDrawList*>. Majority of users shouldn't be affected, but you cannot compare to NULL nor reassign manually anymore. Instead use AddDrawList(). Allocation count are identical. (#6406, #4879, #1878)

Other Changes:

  • Fonts: ImFontConfig::OversampleH now defaults to 2 instead of 3, since the quality increase is largely minimal.
  • Fonts, imgui_freetype: Added support to render OpenType SVG fonts using lunasvg. Requires enabling IMGUI_ENABLE_FREETYPE_LUNASVG along with IMGUI_ENABLE_FREETYPE, and providing headers/libraries for lunasvg. (#6591, #6607) [@sakiodre]
  • ImDrawData: CmdLists[] array is now an ImVector<> owned by ImDrawData rather than a pointer to internal state.
    • This makes it easier for user to create their own or append to an existing draw data. Added a ImDrawData::AddDrawList() helper function to do that. (#6406, #4879, #1878)
    • This makes it easier to perform a deep-swap instead of a deep-copy, as array ownership is now clear. (#6597, #6475, #6167, #5776, #5109, #4763, #3515, #1860)
    • Syntax and allocation count are otherwise identical.
  • Fixed CTRL+Tab dimming background assert when target window has a callback in the last ImDrawCmd. (#4857, #5937)
  • IsItemHovered: Fixed ImGuiHoveredFlags_ForTooltip for Keyboard/Gamepad navigation, got broken prior to 1.89.7 due to an unrelated change making flags conflict. (#6622, #1485)
  • InputText: Fixed a case where deactivation frame would write to underlying buffer or call CallbackResize although unnecessary, in a frame where the return value was false.
  • Tables: fixed GetContentRegionAvail().y report not taking account of lower cell padding or of using ImGuiTableFlags_NoHostExtendY. Not taking it into account would make the idiom of creating vertically bottom-aligned content (e.g. a child window) inside a table make the parent window erroneously have a scrollbar. (#6619)
  • Tables: fixed calculation of multi-instance shared decoration/scrollbar width of scrolling tables, to avoid flickering width variation when resizing down a table hosting a child window. (#5920, #6619)
  • Scrollbar: layout needs to take account of window border size, so a border size will slightly reduce scrollbar size. Generally we tried to make it that window border size has no incidence on layout but this can't work with thick borders. (#2522)
  • IO: Added io.ClearEventsQueue() to clear incoming inputs events. (#4921) May be useful in conjunction with io.ClearInputsKeys() if you need to clear both current inputs state and queued events (e.g. when using blocking native dialogs such as Windows's ::MessageBox() or ::GetOpenFileName()).
  • IO: Changed io.ClearInputsKeys() specs to also clear current frame character buffer (what now obsoleted io.ClearInputCharacters() did), as this is effectively the desirable behavior.
  • Misc: Added IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION config macro to disable stb_sprintf implementation when using IMGUI_USE_STB_SPRINTF. (#6626) [@septag]
  • Misc: Avoid stb_textedit.h reincluding string.h while in a namespace, which messes up with building with Clang Modules. (#6653, #4791) [@JohelEGP]
  • Demo: Better showcase use of SetNextItemAllowOverlap(). (#6574, #6512, #3909, #517)
  • Demo: Showcase a few more InputText() flags.
  • Backends: Made all backends sources files support global IMGUI_DISABLE. (#6601)
  • Backends: GLFW: Revert ignoring mouse data on GLFW_CURSOR_DISABLED as it can be used differently. User may set ImGuiConfigFlags_NoMouse if desired. (#5625, #6609) [@scorpion-26]
  • Backends: WebGPU: Update for changes in Dawn. (#6602, #6188) [@williamhCode]
  • Examples: Vulkan: Creating minimal descriptor pools to fit only what is needed by example. (#6642) [@SaschaWillem]

Changes from 1.89.7 to 1.89.8 related to the docking branch (multi-viewport and docking features):

  • Docking, Style: resizing separators use same colors as window borders (ImGuiCol_Border) for consistency. With default styles it doesn't make a big difference. (#2522) [@rmitton] In the future if we promote using thick value for inner/outer docking padding we may need to introduce new colors for it.
  • Docking: added style.DockingSeparatorSize, ImGuiStyleVar_DockingSeparatorSize. Now also scaled by style.ScaleAllSizes(). (#3481, #4721, #2522) [@PossiblyAShrub, @wobbier]
  • Docking: fixed rendering of docked-window scrollbar above outer border. (#2522)

Changes from 1.89.7 to 1.89.8 related to the range-select branch:

This is hopefully the last batch of breaking changes before merging this in 1.90:

  • RangeSelect/MultiSelect: (BREAKING) BeginMultiSelect() doesn't need two last params maintained by users. Moving some storage from user to core.
  • RangeSelect/MultiSelect: Added fields in ImGuiMultiSelectIO to facilitate implementing deletion while providing correct scrolling/focus.
  • RangeSelect/MultiSelect: Added multi-select deletion demo.

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Below a selection of screenshots from Gallery threads...

@ThFriedrich: riCOM is a software used in electron microscopy. It interfaces with direct electron cameras for the real-time creation of atomic resolution microscopy images from 4-dimensional data.

riCOM

@msnh2012: A custom application. (TCP debugger) tcp debugger

Remedy's Northlight Engine image

@sakiodre : I'm developing a ghidra decompiler plugin [...] ended up writing my own editor from scratch.

@FuXiii: Online Shader Compiler 9BJ44G8(5E3}PIHWNZGQ9JV


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

v1.89.7

9 months ago

1.89.7: Summer release! 🌞

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, sometimes randomly clipped by GitHub..


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Getting Started: https://github.com/ocornut/imgui/wiki/Getting-Started Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Getting Started and Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Ongoing work on Dear ImGui is currently financially supported by:

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Dear ImGui is funded by your contributions and needs them right now. We can regular B2B Invoicing. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5, v1.89.6. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the range-select feature in it, but it's not done... But there are about 540 lines of changelog between 1.89 and 1.89.7.

Breaking Changes:

  • Moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. As the fields were added in 1.89 and expected to be left unchanged by most users, or only tweaked once during app initialization, we are exceptionally accepting the breakage. Majority of users are likely to not even notice.
  • Overlapping items: (#6512, #3909, #517)
    • Obsoleted SetItemAllowOverlap(): it didn't and couldn't work reliably since 1.89 (2022-11-15), and relied on ambiguously defined design. Use SetNextItemAllowOverlap() before item instead.
    • Added SetNextItemAllowOverlap() (called before an item) as a replacement for using SetItemAllowOverlap() (called after an item). This is roughly equivalent to using the legacy SetItemAllowOverlap() call (public API) + ImGuiButtonFlags_AllowOverlap (internal).
    • Renamed 'ImGuiTreeNodeFlags_AllowItemOverlaptoImGuiTreeNodeFlags_AllowOverlap` for consistency.
    • Renamed ImGuiSelectableFlags_AllowItemOverlap to ImGuiSelectableFlags_AllowOverlap for consistency.
    • Kept redirecting enums (will obsolete).

Other Changes:

  • Tooltips/IsItemHovered() related changes:
    • Tooltips: Added SetItemTooltip() and BeginItemTooltip() helper functions. They are shortcuts for the common idiom of using IsItemHovered().
      • SetItemTooltip("Hello") == if (IsItemHovered(ImGuiHoveredFlags_Tooltip)) { SetTooltip("Hello"); }
      • BeginItemTooltip() == IsItemHovered(ImGuiHoveredFlags_Tooltip) && BeginTooltip() The newly added ImGuiHoveredFlags_Tooltip is meant to facilitate standardizing mouse hovering delays and rules for a given application. The previously common idiom of using 'if (IsItemHovered()) { SetTooltip(...); }' won't use delay or stationary test.
    • IsItemHovered: Added ImGuiHoveredFlags_Stationary to require mouse being stationary when hovering a new item. Added style.HoverStationaryDelay (~0.15 sec). Once the mouse has been stationary once the state is preserved for same item. (#1485)
    • IsItemHovered: Added ImGuiHoveredFlags_ForTooltip as a shortcut for pulling flags from style.HoverFlagsForTooltipMouse or style.HoverFlagsForTooltipNav depending on active inputs. (#1485)
      • style.HoverFlagsForTooltipMouse defaults to ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort.
      • style.HoverFlagsForTooltipNav defaults to ImGuiHoveredFlags_NoSharedDelay | ImGuiHoveredFlags_DelayNormal.
    • Tooltips: Tweak default offset for non-drag and drop tooltips so underlying items isn't covered as much. (Match offset for drag and drop tooltips)
    • IsItemHovered: Tweaked default value of style.HoverDelayNormal from 0.30 to 0.40, Tweaked default value of style.HoverDelayShort from 0.10 to 0.15. (#1485)
    • IsItemHovered: Added ImGuiHoveredFlags_AllowWhenOverlappedByWindow to ignore window-overlap only. Option ImGuiHoveredFlags_AllowWhenOverlapped now expand into a combination of both _AllowWhenOverlappedByWindow + _AllowWhenOverlappedByItem, matching old behavior.
  • Overlapping items: (#6512, #3909, #517)
    • Most item types should now work with SetNextItemAllowOverlap(). (#6512, #3909, #517)
    • Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything.
    • IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which is being overlapped. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem to opt-out. (#6512, #3909, #517)
    • Selectable, TreeNode: When using ImGuiSelectableFlags_AllowOverlap/ImGuiTreeNodeFlags_AllowOverlap and holding item held, overlapping widgets won't appear as hovered. (#6512, #3909)
  • IsWindowHovered: Added support for ImGuiHoveredFlags_Stationary.
  • IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags.
  • Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either ScrollX or ScrollY flags from being impossible to resize. (#6503)
  • CollapsingHeader/TreeNode: Fixed text padding when using _Framed+_Leaf flags. (#6549) [@BobbyAnguelov]
  • InputText: Fixed not returning true when buffer is cleared while using the ImGuiInputTextFlags_EscapeClearsAll flag. (#5688, #2620)
  • InputText: Fixed a crash on deactivating a ReadOnly buffer. (#6570, #6292, #4714)
  • InputText: ImGuiInputTextCallbackData::InsertChars() accept (NULL,NULL) range, in order to conform to common idioms (e.g. passing .data(), .data() + .size() from a null string). (#6565, #6566, #3615)
  • Combo: Made simple/legacy Combo() function not returns true when picking already selected item. This is consistent with other widgets. If you need something else, you can use BeginCombo(). (#1182)
  • Clipper: Rework inner logic to allow functioning with a zero-clear constructor. This is order to facilitate usage for language bindings (e.g cimgui or dear_binding) where user may not be calling a constructor manually. (#5856)
  • Drag and Drop: Apply default behavior of drag source not reporting itself as hovered at lower-level, so DragXXX, SliderXXX, InputXXX, Plot widgets are fulfilling it. (Behavior doesn't apply when ImGuiDragDropFlags_SourceNoDisableHover is set).
  • Modals: In the case of nested modal, made sure that focused or appearing windows are moved below the lowest blocking modal (rather than the highest one). (#4317)
  • GetKeyName(): Fixed assert with ImGuiMod_XXX values when IMGUI_DISABLE_OBSOLETE_KEYIO is set.
  • Debug Tools: Added io.ConfigDebugIniSettings option to save .ini data with extra comments. Currently mainly for inspecting Docking .ini data, but makes saving slower.
  • Demo: Added more developed Widgets->Tooltips section. (#1485)
  • Backends: OpenGL3: Fixed support for glBindSampler() backup/restore on ES3. (#6375, #6508) [@jsm174]
  • Backends: OpenGL3: Fixed erroneous use glGetIntegerv(GL_CONTEXT_PROFILE_MASK) on contexts lower than 3.2. (#6539, #6333) [@krumelmonster]
  • Backends: Vulkan: Added optional support for VK_KHR_dynamic_rendering (Vulkan 1.3+) in the backend, for applications using it. User needs to set init_info->UseDynamicRendering = true and init_info->ColorAttachmentFormat. RenderPass becomes unused. (#5446, #5037) [@spnda, @cmarcelo]
  • Backends: GLFW: Accept glfwGetTime() not returning a monotonically increasing value. This seems to happens on some Windows setup when peripherals disconnect, and is likely to also happen on browser+Emscripten. Matches similar 1.89.4 fix in SDL backend. (#6491)
  • Examples: Win32+OpenGL3: Changed DefWindowProc() to DefWindowProcW() to match other examples and support the example app being compiled without UNICODE. (#6516, #5725, #5961, #5975) [@yenixing]

Changes from 1.89.6 to 1.89.7 related to the docking branch (multi-viewport and docking features):

  • Viewports+Docking: Fixed extraneous viewport+platform-window recreation in various combination of showing or hiding windows, docking with/without split, undocking. While with some backends and without OS decorations, some extraneous window recreation were visibly not noticeable, they would typically become noticeable when enabling OS decorations on those windows (e.g. Windows title bar fade-in/animation).
  • Viewports: Closing a viewport via OS/platform means (e.g. OS close button or task-bar menu), mark all windows in this viewport as closed.
  • Docking: Fixed one-frame flickering on reappearing windows binding to a dock node where a later-submitted window was already bound.
  • Docking: Fixed dragging from title-bar empty space (regression from 1.88 related to keeping ID alive when calling low-level ButtonBehavior() directly). (#5181, #2645)
  • Docking: [Internal] DockBuilderDockWindow() API calls don't clear docking order if the target node is same as existing one.
  • Backends: Win32: Added support for changing ParentViewportID after viewport creation.

Changes from 1.89.6 to 1.89.7 related to the range-select branch: (aimed to finish, apply some api changes and merge in 1.90):

  • RangeSelect/MultiSelect: (BREAKING) In ImGuiMultiSelectIO, renamed "RangeSrc" -> "RangeSrcItem", "RangeDst" -> "RangeDstItem". "RangeValue" -> "RangeSelected". This is designed to make things more consistent with upcoming features and polish/merge of the branch.
  • RangeSelect/MultiSelect: Removed the need for polling IsItemToggledSelection() and toggling per-item selection. This can now be completely handled by the BeginMultiSelect() and EndMultiSelect() requests.
  • RangeSelect/MultiSelect: Removed ImGuiMultiSelectFlags_NoUnselect because I currently can't find use for this specific design.
  • RangeSelect/MultiSelect: Update various comments. Simplified/tidied up internal code.

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Below a selection of screenshots from Gallery threads...

@eleriaqueen: "WIP modding tool for a somewhat retro game made with my limited programming knowledge and skills." Screenshot_20230530_204531

@alipbcs: "I used ImGui, ImPlot, and imnodes in my hobby real-time renderer. Full source code available on GitHub." 3

@lucabart97: TII Unimore Racing, a University of Modena and Reggio Emilia team. "This is our perception stack completing a full lap in Autodromo Nazionale Monza using LiDAR localization only during Indy Autonomous Challenge." Video: TII Unimore Racing

"Spotted in S.T.A.L.K.E.R. 2: Heart of Chornobyl." out2087

@sarchar: "RDS (Retro Disassembler Studio) aims to be a complete disassembler tool for retro systems. Currently, the only supported system is the Nintendo Entertainment System (NES) but others are planned for the future." https://github.com/sarchar/RetroDisassemblerStudio image

@qoala101: "PONC is the graphical tool used by telecommunication engineers to design, manage, and optimize Passive Optical Network layouts." https://github.com/qoala101/ponc Feature 3

@gboisse: "Some shots from the ImGui-based editor we used to produce our Revision 2023 demo: Reality Check" https://www.pouet.net/prod.php?which=94177 "Dear ImGui has been amazing from the start and remains a pleasure to work with πŸ™‚" behind_the_scenes-00

@tildearrow: "Furnace - a multi-system chiptune tracker with support for many chips and a customizable interface." https://github.com/tildearrow/furnace Furnace

@aiekick "Just for fun. see my WIP ToolBar :)" ImCoolbar: https://github.com/aiekick/ImCoolBar ImCoolBarApp_WIn32_cpUeIWSPfZ

@RorySoh: "Nin Online is an MMORPG that started development in 2013 and launched in 2017 built with a Visual Basic 6 engine. In recent years, we ported the game to C# with .NET Framework. Now, we're using .NET 6 and all our UI systems have been replaced with just ImGui (We had 6 separate systems, including WinForms for our in-game editor suite). The HUD and every UI piece in the screen is also ImGui. There's actually a lot more cool stuff in the game, like animated UI elements that are done in ImGui. Performance has been amazing too." [..] "Thank you @ocornut and all the contributors for ImGui, it's amazing." https://www.ninonline.org MapEditor Here are more screenshots! https://imgur.com/a/6urSiYC

@pixtur Tooll v3.6 www.tooll.io image

@ta-david-yu "I made an editor for my ECS game engine - DYEngine. I can't live without Dear ImGui anymore, it's so useful. " Here is a feature highlight video: https://youtu.be/ZrwCcynemSA
DYEngineEditor_Screenshot


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

v1.89.6

11 months ago

1.89.6: May release! (*)

(*) Technically it is still May!

Reading the changelog is a good way to keep up to date with the things Dear ImGui has to offer, and maybe will give you ideas of some features that you've been ignoring until now!

πŸ“£ Click version number above to display full release note contents, sometimes randomly clipped by GitHub..


Homepage: https://github.com/ocornut/imgui Release notes: https://github.com/ocornut/imgui/releases FAQ: https://www.dearimgui.com/faq/ Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki! It has sections such as this Useful Extensions Gallery! πŸ‘Œ

Thank you! ❀️

Ongoing work on Dear ImGui is currently financially supported by:

Huge thank you to all past and present supporters! Also thanks to PVS Studio (great static analyzer) for providing us with a license for this project.

Dear ImGui is funded by your contributions and needs them right now. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

Changes

This is a followup to v1.89, v1.89.1, v1.89.2, v1.89.3, v1.89.4, v1.89.5. We are trying to make more frequent releases. Because: some people are relying on tagging and auto-generated bindings for other languages. And: it sets a beat and may encourage teams to update more frequently.

I have been stubbornly deferring tagging 1.90 for while because I wanted to include the range-select feature in it, but it's not done... But there are nearly 500 lines of changelog between 1.89 and 1.89.6.

Breaking Changes:

  • Clipper: Commented out obsolete redirection constructor which was marked obsolete in 1.79:
    • ImGuiListClipper(int items_count, float items_height) --> Use ImGuiListClipper() + clipper.Begin().
  • Clipper: Renamed ForceDisplayRangeByIndices() to IncludeRangeByIndices(), kept inline redirection function (introduced in 1.86 and rarely used). (#6424, #3841)
  • Commented out obsolete/redirecting functions that were marked obsolete more than two years ago:
    • ListBoxHeader() -> use BeginListBox()
    • ListBoxFooter() -> use EndListBox()
    • Note how two variants of ListBoxHeader() existed. Check commented versions in imgui.h for refeence.
  • Backends: SDL_Renderer: Renamed 'imgui_impl_sdlrenderer.h/cpp' to 'imgui_impl_sdlrenderer2.h/cpp', in order to accomodate for upcoming SDL3 and change in its SDL_Renderer API. (#6286)
  • Backends: GLUT: Removed call to ImGui::NewFrame() from ImGui_ImplGLUT_NewFrame(). It needs to be called from the main app loop, like with every other backends. (#6337) [@GereonV]

Other Changes:

  • Window: Fixed resizing from upper border when io.ConfigWindowsMoveFromTitleBarOnly is set. (#6390)
  • Tables: Fixed a small miscalculation in TableHeader() leading to an empty tooltip showing when a sorting column has no visible name. (#6342) [@lukaasm]
  • Tables: Fixed command merging when compiling with VS2013 (one array on stack was not initialized on VS2013. Unsure if due to a bug or UB/standard conformance). (#6377)
  • InputText: Avoid setting io.WantTextInputNextFrame during the deactivation frame. (#6341) [@lukaasm]
  • Drag, Sliders: if the format string doesn't contain any %, CTRL+Click to input text will use the default format specifier for the type. Allow display/input of raw value when using "enums" patterns (display label instead of value) + allow using when value is hidden. (#6405)
  • Nav: Record/restore preferred position on each given axis after a movement on that axis, then score movement on the other axis using this as a bias. This allows going up and down between e.g. a large header spanning horizontal space and three-ways-columns, landing on the same column as before.
  • Nav: Fixed navigation within tables/columns where item boundaries goes beyond columns limits, unclipped bounding boxes would interfere with other columns. (#2221) [@zzzyap, @ocornut]
  • Nav: Fixed CTRL+Tab into a root window with only childs with _NavFlattened flags erroneously initializing default nav layer to menu layer.
  • Menus: Fixed an issue when opening a menu hierarchy in a given menu-bar would allow opening another via simple hovering. (#3496, #4797)
  • Fonts: Fixed crash when merging fonts and the first font has no valid glyph. (#6446) [@JaedanC]
  • Fonts: Fixed crash when manually specifying an EllipsisChar that doesn't exist. (#6480)
  • Misc: Added ImVec2 unary minus operator. (#6368) [@Koostosh]
  • Debug Tools: Debug Log: Fixed not parsing 0xXXXXXXXX values for geo-locating on mouse hover hover when the identifier is at the end of the line. (#5855)
  • Debug Tools: Added io.ConfigDebugIgnoreFocusLoss option to disable io.AddFocusEvent(false) handling. May facilitate interactions with a debugger when focus loss leads to clearing inputs data. (#4388, #4921)
  • Backends: Clear bits sets io.BackendFlags on backend Shutdown(). (#6334, #6335] [@GereonV] Potentially this would facilitate switching runtime backend mid-session.
  • Backends: Win32: Added ImGui_ImplWin32_InitForOpenGL() to facilitate combining raw Win32/Winapi with OpenGL. (#3218)
  • Backends: OpenGL3: Restore front and back polygon mode separately when supported by context (Desktop 3.0, 3.1, or 3.2+ with compat bit). (#6333) [@GereonV]
  • Backends: OpenGL3: Support for glBindSampler() backup/restore on ES3. (#6375) [@jsm174]
  • Backends: SDL3: Fixed build on Emscripten/iOS/Android. (#6391) [@jo-codegirl]
  • Backends: SDLRenderer3: Added SDL_Renderer for SDL3 backend. (#6286) [@Carcons, @ocornut]
  • Examples: Added native Win32+OpenGL3 example. We don't recommend using this setup but we provide it for completeness. (#3218, #5170, #6086, #2772, #2600, #2359, #2022, #1553) [@learn-more]
  • Examples: Vulkan: Use integrated GPU if nothing else is available. (#6359) [@kimidaisuki22]
  • Examples: DX9, DX10, DX11: Queue framebuffer resize instead of processing in WM_SIZE, as some drivers tends to only cleanup after existing the native resize modal loop. (#6374)
  • Examples: Added SDL3+SDL_Renderer example. (#6286)
  • Examples: Updated all Visual Studio projects and batches to use /utf-8 argument.

Changes from 1.89.5 to 1.89.6 related to the docking branch (multi-viewport and docking features) include:

  • Viewports: Fixed platform-side focus (e.g. Alt+Tab) from leading to accidental closure of Modal windows. Regression from 1.89.5. (#6357, #6299)
  • Viewports: Fixed erroneous popup closure on closing a previous popup. (#6462, #6299)
  • Viewports: Fixed loss of imgui-side focus when dragging a secondary viewport back in main viewport, due to platform-side handling changes. Regression from 1.89.5 (#6299)
  • Viewports: Added void* ImGuiPlatformMonitor::PlatformHandle field (backend-dependant), for usage by user code.
  • Backends: GLFW: Preserve monitor list when there are no monitor, may briefly happen when recovering from macOS sleeping mode. (#5683) [@Guistac]
  • Backends: SDL2: Update monitor list when receiving a display event. (#6348) Note however that SDL2 currently doesn't have an event for a DPI/Scaling change, so monitor data won't be updated in this situation.
  • Backends: SDL3: Update monitor list when receiving a display event. (#6348)

Changes from 1.89.5 to 1.89.6 related to the range-select branch: (aimed to finish, apply some api changes and merge in 1.90):

  • RangeSelect/MultiSelect: (BREAKING) Renamed ImGuiMultiSelectData to ImGuiMultiSelectIO.
  • RangeSelect/MultiSelect: Made SetNextItemSelectionData() optional to allow disjoint selection (e.g. with a CollapsingHeader between items).
  • RangeSelect/MultiSelect: Enter can alter selection if current item is not selected.
  • RangeSelect/MultiSelect: Removed DragDropActive/preserve_existing_selection logic which seems unused + comments.
  • RangeSelect/MultiSelect: Demo tweak. Removed multi-scope from Advanced (too messy), made it a separate mini-demo

New exciting projects!

Since 1.89 we semi-sneakily soft launched two new entire projects!

Dear ImGui Automation/Test Engine & Test Suite https://github.com/ocornut/imgui_test_engine

Dear Bindings: alternative binding generator for C and other languages by @ShironekoBen (as an alternative to good old cimgui). https://github.com/dearimgui/dear_bindings

Below a selection of screenshots from Gallery threads...

@DickyQi "MediaEditor Community (MEC) is a highly integrated and easy to learn application software that can be used to create, edit, and produce high-quality videos. [...] Support complete timeline editing functions, including move, crop, cut, thumbnail preview, scale and delete. [...] Support more flexible and easily blueprint system. BlueprintπŸ’« is represented in the form of nodes, which can handle complex functions through nodes and flows. [...]Support about 30+ built-in media filters and 60+ built-in media fusions [...] Support about 10 video and audio analysis tools [...] Support audio mixing, including mixer, pan, equalizer, gate, limiter and compressor. " https://github.com/opencodewin/MediaEditor

timeline fusion add-filter

@kem0x VPN Client VCT_essi68YEaz

@aloneguid Browser profile proxy/redirector https://www.aloneguid.uk/projects/bt

@XorJS "git-whale is a Windows tool to synchronize git and github repositories (done in C++ and ImGui)." https://www.jsr-productions.com/git-whale.html) git-whale0 webp

Spotted in this GDC Talk for God of War: Ragnarok some uses of Dear ImGui: https://www.gdcvault.com/play/1028846/Rendering-God-of-War-Ragnark God of War Ragnarock 02-halfsize

@psyq321: "DigiCortex v2 (artificial brain simulator) is using Dear ImGui" DigiCortex v2

@EddieEldridge: _"Some GUI's made using ImGUI (as part of the Engine Overhaul Project for Medieval II: Total War)" https://youneuoy.github.io/M2TWEOP-library image

@Vasili-Sk: "Made configuration app for my CAN-bus devices, never been so easy! Main app on C#" screenshot

@Hunternif: "I'm building a 3d editor for procedural generation of blocky buildings, a la Minecraft :)" Screenshot 2023-05-13 15 10 05

@morgongad: "Bit Animation Editor: A pixelart composition tool for game developers (with export to Unreal 5)" https://store.steampowered.com/app/1370650/Bit__Animation_Editor/ image

@Froyok: "I have been working with Dear ImGui for a few years now, it's always my goto library to build UI nowamdays (I presume I'm not the only one). I love it and wanted to share my many and sincere thanks for it. It's such a pleasure to work with !"

"I have been using Dear ImGui as the window management and behavior for the UI of a little RPG project. It uses custom drawing, but widget placement, sizing and state is driven by Dear ImGui underneath." flairepg_scrollbar_final

"I'm currently working on my own game engine called Ombre, the debug UI is also driven by Dear ImGui. The editor/in-game UI will likely be using it too." [...] "I like to push as far as I can the customization of the look, without editing the original library (since I use wrappers,notably Python and LUA ones). :)" Ombre Engine

Drag Your GAN (technical paper/demo) https://vcai.mpi-inf.mpg.de/projects/DragGAN/ https://github.com/XingangPan/DragGAN DragGAN

@AlonsoCerpa: "First of all, thank you very much ocornut and all the contributors for Dear ImGui. I will share with you my simple 3D Game Engine called "Neon Engine" that I implemented with Dear ImGui, OpenGL, glm and Assimp." neon_engine_image2

Yacht Club Games (Shovel Knight & co) posted about their tech for Mina The Hollower: Tweet: https://twitter.com/YachtClubGames/status/1662139803541082112 Blog: https://www.yachtclubgames.com/blog/engine-sneak-peek

They are full GIF on the Blog page, some stills: cutscene fire


See previous releases details.