Skip to content

Releases: ocornut/imgui

v1.91.9b

17 Mar 19:27
Compare
Choose a tag to compare

v1.91.9b: hotfix

1.91.9 has an assert/crashing bug related to loading table settings in certain instances.

Changes (since v1.91.9)

  • Tables: Fixed assert when loading .ini settings with reordered columns. (#8496, #7934)
  • Tables: Fixed issues when loading .ini settings for a table with columns using ImGuiTableColumnFlags_DefaultHide or ImGuiTableColumnFlags_DefaultSort. (#8496, #7934)

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

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

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

v1.91.9

14 Mar 16:18
Compare
Choose a tag to compare

v1.91.9

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


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

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

❤️ Thanks to recent years sponsors ❤️

❤️ And many individuals ❤️

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


Changes (since v1.91.8)

Breaking Changes:

  • Image: removed tint_col and border_col parameter from Image() function. (#8131, #8238)
    • Old function signature:
      void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 tint_col = (1,1,1,1), ImVec4 border_col = (0,0,0,0));
    • New function signatures:
      void Image (ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1));
      void ImageWithBg(ImTextureID tex_id, ImVec2 image_size, ImVec2 uv0 = (0,0), ImVec2 uv1 = (1,1), ImVec4 bg_col = (0,0,0,0), ImVec4 tint_col = (1,1,1,1));
    • TL;DR: border_col had misleading side-effect on layout, bg_col was missing, parameter order couldn't be consistent with ImageButton().
    • New behavior always use ImGuiCol_Border color + style.ImageBorderSize / ImGuiStyleVar_ImageBorderSize.
    • Old behavior altered border size (and therefore layout) based on border color's alpha, which caused variety of problems.
    • Old behavior used a fixed value of 1.0f for border size which was not tweakable.
    • Kept legacy signature (will obsolete), which mimics the old behavior, but uses Max(1.0f, style.ImageBorderSize) when border_col is specified.
    • Added ImageWithBg() function which has both bg_col (which was missing and most useful) and tint_col. It was impossible to add bg_col to Image() with a parameter order consistent with other functions, so we decided to remove tint_col and introduce ImageWithBg().
  • Renamed ImFontConfig::GlyphExtraSpacing.x option to GlyphExtraAdvanceX. (#242)
  • Renamed style.TabMinWidthForCloseButton to style.TabCloseButtonMinWidthUnselected.
  • Backends: Vulkan: Added uint32_t api_version argument to ImGui_ImplVulkan_LoadFunctions(). Note that it was also added to ImGui_ImplVulkan_InitInfo() but for the later it is optional. (#8326, #8365, #8400)
  • Internals: Fonts: ImFontAtlas::ConfigData[] has been renamed to ImFontAtlas::Sources[],
  • Internals: Fonts: ImFont::ConfigData[], ConfigDataCount has been renamed to Sources[], SourcesCount.
  • Internals: Menus: reworked mangling of menu windows to use "###Menu_00" etc. instead of "##Menu_00", allowing them to also store the menu name before it. This shouldn't affect code unless directly accessing menu window from their mangled name.

Other changes:

  • Fixed IsItemDeactivatedAfterEdit() signal being broken for Checkbox(), RadioButton(), Selectable(). Regression from 2025/01/13. (#8370)
  • Windows: Fixed an issue where BeginChild() inside a collapsed Begin() wouldn't inherit the SkipItems flag, resulting in missing coarse clipping opportunities for code not checking the BeginChild() return value.
  • Windows, Style: Added style.WindowBorderHoverPadding setting to configure inner/outer padding applied to hit-testing of windows borders and detection of hovered window.
  • InputText: Allow CTRL+Shift+Z to redo even outside of OSX. (#8389) [@tanksdude]
  • InputText: Pasting a multi-line buffer into a single-line edit replaces carriage return by spaces. (#8459)
  • InputTextWithHint(): Fixed buffer-overflow (luckily often with no visible effect) when a user callback modified the buffer contents in a way that altered the visibility of the preview/hint buffer. (#8368) [@m9710797, @ocornut]
  • Scrollbar: Rework logic that fades-out scrollbar when it becomes too small, which amusingly made it disappear when using very big font/frame size.
  • Scrollbar: Automatically stabilize ScrollbarX visibility when detecting a feedback loop manifesting with ScrollbarX visibility toggling on and off repeatedly. (#8488, #3285, #4539) (feedback loops of this sort can manifest in various situations, but combining horizontal + vertical scrollbar + using a clipper with varying width items is one frequent cause. The better solution is to, either: (1) enforce visibility by using ImGuiWindowFlags_AlwaysHorizontalScrollbar or (2) declare stable contents width with SetNextWindowContentSize(), if you can compute it.)
  • Tables: fixed calling SetNextWindowScroll() on clipped scrolling table to not leak the value into a subsequent window. (#8196)
  • Tables: fixed an issue where Columns Visible/Width state wouldn't be correctly restored when hot-reloading .ini state. (#7934)
  • Tables: tamed some .ini settings optimizations to more accurately allow overwriting/hot-reloading settings in more situations. (#7934)
  • Tables, Error Handling: Recovery from invalid index in TableSetColumnIndex(). (#1651)
  • Image: Added ImageWithBg() variant with bg color and tint color. (#8131, #8238)
  • Image, Style: Added style.ImageBorderSize, ImGuiStyleVar_ImageBorderSize. (#8131, #8238)
  • Selectable: Fixed horizontal label alignment with SelectableTextAlign.x > 0.0f and specifying a selectable size. (#8338)
  • Tabs, Style: made the Close Button of selected tabs always visible by default, without requiring to hover the tab. (#8387)
    • Added style.TabCloseButtonMinWidthSelected/TabCloseButtonMinWidthUnselected settings to configure visibility of the Close Button for selected and unselected tabs. (-1: always visible. 0.0f: visible when hovered. >0.0f: visible when hovered if minimum width)
    • Default for selected tabs: TabCloseButtonMinWidthSelected == -1.0f (always visible)
    • Default for unselected tabs: TabCloseButtonMinWidthUnselected == 0.0f (visible when hovered)
  • Tabs: fixed middle-mouse-button to close tab not checking that close button is hovered, merely its visibility. (#8399, #8387) [@nicovanbentum]
  • TextLink(), TextLinkOpenURL(): fixed honoring text baseline alignment. (#8451, #7660) [@achabense]
  • TextLinkOpenURL(): fixed default Win32 io.PlatformOpenInShellFn handler to handle UTF-8 regardless of system regional settings. (#7660) [@achabense]
  • Disabled: Fixed an issue restoring Alpha in EndDisabled() when using nested BeginDisabled() calls with PushStyleVar(ImGuiStyleVar_DisabledAlpha) within. (#8454, #7640)
  • Clipper: Fixed an issue where passing an out of bound index to clipper.IncludeItemByIndex() could incorrectly offset the final cursor, even if that index was not iterated through. One case where it would manifest was calling Combo() with an out of range index. (#8450)
  • Debug Tools: Added io.ConfigDebugHighlightIdConflictsShowItemPicker (defaults to true) to allow disabled Item Picker suggestion in user facing builds. (#7961, #7669)
  • Debug Tools: Tweaked layout of ID Stack Tool and always display full path. (#4631)
  • Misc: Various zealous warning fixes for newer version of Clang.
  • Misc: Added ImGuiMouseCursor_Wait and ImGuiMouseCursor_Progress mouse cursors (busy/wait/hourglass shape, with or without an arrow cursor).
  • Demo: Reorganized "Widgets" section to be alphabetically ordered and split in more functions.
  • Demo: Combos: demonstrate a very simple way to add a filter to a combo, by showing the filter inside the combo contents. (#718)
  • Examples: SDL3: Added comments to clarify setup for users of the unfortunate SDL_MAIN_USE_CALLBACKS feature. (#8455)
  • IO: Added ImGuiKey_Oem102 to ImGuiKey enum. (#7136, #7201, #7206, #7306, #8468)
  • Backends: reworked key handlers to use/prioritize untranslated ...
Read more

v1.91.8

31 Jan 15:22
Compare
Choose a tag to compare

v1.91.8

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


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

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

❤️ Thanks to recently joining sponsors: MachineGames, id Software!, SCS Software! ! ! ❤️
❤️ Thanks to our sponsors incl Supercell! Valve!, G3Dvu! OTOY! Adobe! Lucid Games! Planestate Software! Aras P! Gravity Well! FUTO! & many individuals ❤️

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


Recently released third-party extensions include:

See more extensions in our wiki page Useful Extensions.


Changes (since v1.91.7)

Breaking Changes:

  • ColorEdit, ColorPicker: redesigned how alpha is displayed in the preview square. (#8335, #1578, #346)
    • Removed ImGuiColorEditFlags_AlphaPreview (made value 0): it is now the default behavior.
    • Prior to 1.91.8: alpha was made opaque in the preview by default unless using ImGuiColorEditFlags_AlphaPreview.
    • We now display the preview as transparent by default. You can use ImGuiColorEditFlags_AlphaOpaque to use old behavior.
    • The new flags may be combined better and allow finer controls:
      • ImGuiColorEditFlags_AlphaOpaque: disable alpha in the preview, but alpha value still editable.
      • ImGuiColorEditFlags_AlphaNoBg: disable rendering a checkerboard background behind transparent color.
      • ImGuiColorEditFlags_AlphaPreviewHalf: display half opaque / half transparent preview.
  • Backends: SDLGPU3: Renamed ImGui_ImplSDLGPU3_InitInfo::GpuDevice to Device for consistency. (#8163, #7998, #7988)

Other changes:

  • imgui_freetype: fixed issue where glyph advances would incorrectly be snapped to pixels. Effectively it would only be noticeable when hinting is disabled with ImGuiFreeTypeBuilderFlags_NoHinting, as hinting itself snaps glyph advances.
  • Inputs: added IsMouseReleasedWithDelay() helper. (#8337, #8320). Use if you absolutely need to distinguish single-click from double-clicks by introducing a delay. This is a very rarely used UI idiom, but some apps use this: e.g. MS Explorer single-click on an icon triggers a rename. Generally use with delay >= io.MouseDoubleClickTime + combine with a GetMouseClickedCount() == 1 check.
  • Windows: legacy SetWindowFontScale() is properly inherited by nested child windows. Note that an upcoming major release should make this obsolete, but in the meanwhile it works better now. (#2701, #8138, #1018)
  • Windows, Style: Fixed small rendering issues with menu bar, resize grip and scrollbar when using thick border sizes. (#8267, #7887)
  • Windows: Fixed IsItemXXXX() functions not working on append-version of EndChild(). (#8350) Also made some of the fields accessible after BeginChild() to match Begin() logic.
  • Error Handling: Recovery from missing EndMenuBar() call. (#1651)
  • Tables, Menus: Fixed using BeginTable() in menu layer (any menu bar). (#8355) It previously overrode the current layer back to main layer, which caused an issue with MainMenuBar attempted to release focus when leaving the menu layer.
  • Tables, Menus: Fixed tables or child windows submitted inside BeginMainMenuBar() being unable to save their settings, as the main menu bar uses ImGuiWindowFlags_NoSavedSettings. (#8356)
  • ColorEdit, ColorPicker: Fixed alpha preview broken in 1.91.7. (#8336, #8241). [@PathogenDavid]
  • Tabs, Style: reworked selected overline rendering to better accommodate for rounded tabs. Reduced default thickness (style.TabBarOverlineSize), increased default rounding (style.TabRounding). (#8334) [@Kian738, @ocornut]
  • Debug Tools: Tweaked font preview.
  • ImDrawList: texture baked storage for thick line reduced from ~64x64 to ~32x32. (#3245)
  • Fonts: IndexLookup[] table hold 16-bit values even in ImWchar32 mode, as it accounts for number of glyphs in same font. This is favorable to CalcTextSize() calls touching less memory.
  • Fonts: OversampleH/OversampleV defaults to 0 for automatic selection.
    • OversampleH == 0 --> use 1 or 2 depending on font size and use of PixelSnapH.
    • OversampleV == 0 --> always use 1.
  • ImFontAtlas: made calling ClearFonts() call ClearInputData(), as calling one without the other is never correct. (#8174, #6556, #6336, #4723)
  • Examples: DirectX12: Reduced number of frame in flight from 3 to 2 in provided example, to reduce latency.
  • Examples: Vulkan: better handle VK_SUBOPTIMAL_KHR being returned by vkAcquireNextImageKHR() or vkQueuePresentKHR(). (#7825, #7831) [@NostraMagister]
  • Backends: SDL2: removed assert preventing using ImGui_ImplSDL2_SetGamepadMode() with ImGui_ImplSDL2_GamepadMode_Manual and an empty array. (#8329)
  • Backends: SDL3: removed assert preventing using ImGui_ImplSDL3_SetGamepadMode() with ImGui_ImplSDL3_GamepadMode_Manual and an empty array. (#8329)
  • Backends: SDLGPU3: Exposed ImGui_ImplSDLGPU3_CreateDeviceObjects()/_DestroyDeviceObjects().
    Removed return value from ImGui_ImplSDLGPU3_CreateFontsTexture(). (#8163, #7998, #7988)
  • Backends: SDL_Renderer2/3: Use endian-dependent RGBA32 texture format, to match SDL_Color. (#8327) [@dkosmari]
  • Backends: DirectX12: Texture upload use the command queue provided in ImGui_ImplDX12_InitInfo instead of creating its own.
  • Backends: OSX: Removed notification observer when shutting down. (#8331) [@jrachele]

Changes from 1.91.7 to 1.91.8 specific to the Docking+Multi-Viewports branch:

  • Docking: Fixed an issue in 1.91.7 where using legacy ImGuiWindowFlags_NavFlattened flag (instead of ImGuiChildFlags_NavFlattened) in docking branch would conflict with internal docking flags. (#8357) [@DanielGibson]
  • Backends: SDL3: new viewport windows are created with the SDL_WINDOW_HIDDEN flag before calling SDL_ShowWindow(). (#8328) [@PathogenDavid]

Gallery

"Autonomous dry stone: On-site planning and assembly of stone walls with a robotic excavator"
https://www.researchgate.net/publication/345902778_Autonomous_dry_stone_On-site_planning_and_assembly_of_stone_walls_with_a_robotic_excavator

Screen-capture-of-geometric-planning-software-a-Imgui-Interface-b-active-environment

"Screen capture of geometric planning software. a Imgui Interface, b active environment with search space, solutions, and placed stones, c available scanned stones in inventory, d selected stone viewer with VSA faces"

@CosmoCortney: _"3D Mini Maps in my game enhancement tool, ...

Read more

v1.91.7

14 Jan 12:42
Compare
Choose a tag to compare

1.91.7: happy new year!

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


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

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

❤️ Thanks to recently joining sponsors: id Software!, Valve!, SCS Software! ! Gravity Well! ❤️
❤️ Thanks to other present and past sponsors incl Supercell! BeamNG! OTOY! Arkane Lyon, Asobo Studio, Lucid Games! Asobo! G3Dvu! Planestate Software! Aras P! FUTO! & many individuals ❤️

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


New third-party extension!

See more extensions in our wiki page Useful Extensions.


Changes (since v1.91.6)

Breaking Changes:

  • TreeNode: renamed ImGuiTreeNodeFlags_SpanTextWidth to ImGuiTreeNodeFlags_SpanLabelWidth for consistency with other names. Kept redirection enum (will obsolete). (#6937)

Other changes:

  • Fixed issues with IsItemDeactivated() and IsItemDeactivatedAfterEdit() not emitting a reliable signal when an item is deactivated externally: e.g. via an explicit clear of focus, clear of active id, opening of modal etc. (#5184, #5904, #6766, #8303, #8004)
    • It used to work when the interruption happened in the frame before the active item as submitted, but not after. It should work in both cases now.
    • While this is not specific to a certain widgets, typically it would mostly be noticeable on InputText() because it keeps ActiveId for a longer time while allowing other interaction to happen.
  • Error Handling: Fixed bugs recovering from within a table that created a child window, and from nested child windows. (#1651)
  • Error Handling: Turned common EndTable() and other TableXXX functions fail cases into a recoverable error. (#1651, #8314)
  • Error Handling: Exposed basic error handling options in Demo->Tools->Debug Options. (#1651)
  • InputText: Fixed a bug where character replacements performed from a callback were not applied when pasting from clipboard. (#8229)
  • InputText: Fixed issue when activating a ReadOnly field when the underlying value is being modified. (#8242)
  • InputText: Added sanity check to detect some cases of passing a non zero-terminated input buffer.
  • InputText: Fixed not calling CallbackEdit on revert/clear with Escape key, although IsItemEdited() was behaving correctly. (#8273)
  • Tables: Fixed TableAngledHeadersRow() creating an infinite horizontal scrolling region when the table is hosted in a viewport with negative coordinates (left of primary monitor, with multi-viewports enabled).
  • Tables, MultiSelect: Fixed an issue where column width may be miss-measured when calling BeginMultiSelect() while inside a table. (#8250)
  • TreeNode, Tables: Added ImGuiTreeNodeFlags_LabelSpanAllColumns to make the label (not only the highlight/frame) also spans all columns. This is useful for table rows where you know nothing else is submitted. (#8318, #3565) (Obviously best used with ImGuiTableFlags_NoBordersInBodyUntilResize).
  • Drags: Added ImGuiSliderFlags_NoSpeedTweaks flag to disable keyboard modifiers altering the tweak speed. Useful if you want to alter tweak speed yourself based on your own logic. (#8223)
  • Nav: Fixed an issue where Alt key would clear current active item on windows with the ImGuiWindowFlags_NoNavInputs flag. (#8231)
  • Debug Tools: Debug Log: hovering 0xXXXXXXXX values in log is allowed even if a popup is blocking mouse access to the debug log window. (#5855)
  • Debug Tools: Item Picker: Always available in Tools menu regardless of value of io.ConfigDebugIsDebuggerPresent. (#2673)
  • Fonts: Fixed miscalculation of Ellipsis ("...") character width when automatically created from a single comma character, affecting some fonts/settings (not all).
  • Demo: Added label edition to Property Editor demo + fix an ID issue. (#8266) [@moritz-h]
  • Misc: Fixed misc/cpp/imgui_stdlib.h/.cpp not supporting #define IMGUI_DISABLE. (#8294) [@juur]
  • Misc: Fixed MinGW builds not using UTF-8 friendly _wfopen(). (#8300)
  • Backends: SDL_GPU for SDL3: Added backend for SDL_GPU! (#8163, #7998, #7988) [@DeltaW0x].
  • Backends: SDL3: Added ImGui_ImplSDL3_InitForSDLGPU() for consistency, even though it is currently not doing anything particular. (#8163, #7998, #7988)
  • Backends: Allegro5: Avoid calling al_set_mouse_cursor() repeatedly since it appears to leak on on X11 (#8256). [@Helodity]
  • Backends: Metal: Fixed leaks when using metal-cpp. (#8276, #8166) [@selimsandal]
  • Backends: Metal: Fixed resource leak when using multiple contexts. (#7419) [@anszom]
  • Backends: Vulkan: Fixed setting VkSwapchainCreateInfoKHR::preTransform for platforms not supporting VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR. (#8222) [@Zer0xFF]
  • Backends: Vulkan: Added a few more ImGui_ImplVulkanH_XXX helper functions primarily for the purpose of making our examples simpler.
  • Backends: Vulkan: Added IMGUI_IMPL_VULKAN_MINIMUM_IMAGE_SAMPLER_POOL_SIZE to clarify how many image sampler descriptors are expected to be available in the provided descriptor pool. Current backend needs 1 but it is expected that by end of Q1 2025 this number will grow (will stay a small number). (#6642)
  • Backends: DX11: Expose vertex constant buffer in ImGui_ImplDX11_RenderState.
    Reset projection matrix in ImDrawCallback_ResetRenderState handlers. (#6969, #5834, #7468, #3590)
  • Backends: DX10: Expose ImGui_ImplDX10_RenderState for completeness. (#6969, #5834, #7468, #3590)
  • Examples: Added Win32+Vulkan example for completeness. (#8180) [@jristic]

ImGuiTreeNodeFlags_LabelSpanAllColumns2

Gallery

@axjxwright: "AX Tracker: Custom tracking software for an upcoming large scale museum installation."

o3.mp4

@ItsBranK: "Been working on a reflection system helper for Unreal Engine for a bit, lets you view games objects and lets you modify their properties in real time. Very helpful for debugging issues in the production version of your game, where having access to the editor is not possible. This is just for personal use and not open to the public."
Untitled

@daedlock: "binutils"
image

@bcace: "short video of mechanical engineering software in early stages of development"

AirFrame.2024.11.26.22.02.47.D0APbFicf1Y.mp4

@ima...

Read more

v1.91.6

11 Dec 14:16
Compare
Choose a tag to compare

1.91.6: general maintenance release

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


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

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

❤️ Thanks to recently joining sponsors: id Software!, SCS Software! Valve! Gravity Well! ❤️
❤️ Thanks to other present and past sponsors incl Supercell! BeamNG! OTOY! Arkane Lyon, Asobo Studio, Lucid Games! Asobo! G3Dvu ! Planestate Software! Aras P! FUTO! & many individuals ❤️

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


Changes (since v1.91.5)

This is an unusual small release. It is mostly motivated by the fact that the Win32 backend in docking branch of v1.91.5 had a crash when running multiple program instances. Most of the work done this month is part of a larger feature I will talk about later :)

Breaking Changes:

  • Backends: DX12: Changed ImGui_ImplDX12_Init() signature to take a ImGui_ImplDX12_InitInfo struct.
    • Using the new API, application is now required to pass function pointers to allocate/free SRV Descriptors.
    • We provide convenience legacy fields to pass a single descriptor, matching the old API, but upcoming features will want multiple.
    • Legacy ImGui_ImplDX12_Init() signature is still supported (will obsolete).
  • Misc: changed CRC32 table from CRC32-adler to CRC32c polynomial in order to be compatible with the result of SSE 4.2 instructions. (#8169, #4933) [@Teselka]
    • As a result, some .ini data may be partially lost when storing checksums (docking and tables information particularly).
    • Because some users have crafted and storing .ini data as a way to workaround limitations of the docking API, we are providing a #define IMGUI_USE_LEGACY_CRC32_ADLER compile-time option to keep using old CRC32 tables if you cannot afford invalidating old .ini data.

Other changes:

  • InputText: added ImGuiInputTextFlags_ElideLeft to elide left side and ensure right side of contents is visible when whole text is not fitting (useful for paths/filenames). (#1442, #1440, #4391, #7208, #8216) [@kucoman, @ocornut]
  • InputText: reactivating last activated InputText() doesn't restore horizontal scrolling (which was disabled during deactivation anyway).
  • Error Handling: fixed cases where recoverable error handling would crash when processing errors outside of the NewFrame()..EndFrame() scope. (#1651)
  • Tables: fixed SetNextWindowScroll() value being ignored by BeginTable() during the first frame or when scrolling flags have changed. (#8196)
  • Misc: changed embedded ProggyClean encoding to save a bit of binary space (~12kb to 9.5kb).
  • Misc: added IMGUI_DISABLE_DEFAULT_FONT to strip embedded font from binary. (#8161) [@Demonese]
  • Demo: example tree used by Property Editor & Selection demos properly freed on application closure. (#8158) [@Legulysse]
  • Fonts: fixed AddCustomRect() not being packed with TexGlyphPadding + not accounted for surface area used to determine best-guess texture size. (#8107) [@YarikTH, @ocornut]
  • Misc: use SSE 4.2 crc32 instructions when available. (#8169, #4933) [@Teselka]
  • Tools: binary_to_compressed_c: added -u8/-u32/-base85 export options.
  • Backends: DirectX12: Let user specifies the DepthStencilView format by setting ImGui_ImplDX12_InitInfo::DSVFormat. (#8217) [@bmarques1995]
  • Backends: Vulkan: Make user-provided descriptor pool optional. As a convenience, when setting init_info->DescriptorPoolSize then the backend will create and manage one itself. (#8172, #4867) [@zeux]
  • Examples: Win32+DX12: Using a basic free-list allocator to manage multiple SRV descriptors.

Changes from 1.91.5 to 1.91.6 in the Docking branch:

  • Backends: Win32: Fixed a crash/regression in 1.91.5 when running two processes with multi-viewports (was using GetProp() to query property which could have belonged to another process). (#8162, #8069) [@sammyfreg, @ocornut]
  • Docking: Added an assert to clarify that ImGuiDockNodeFlags_CentralNode flag (from internals) does not need to be passed to DockSpace(), as it causes general havoc. (#8145)

Gallery

@HODAKdev: "ImGui is amazing, you can make any editor you want. This is what my game engine looks like. ❤️"
https://github.com/HODAKdev/StarEngine
image

@734vin: "a node base editor use ImGui, pegborad module."
pegboard

LightAct 4 (Media Server for Big Shows & Fast Workflows)
https://lightact.com

lightact
2023-04-21-09 50 39-1920x1080px

@matheusgarcez "Working in progress markdown renderer for a game guide overlay (using md4c for building the node tree):"
P5R_fGVrWv1BB9

@coderloff "Here is my basic C++ game engine for learning purposes, Ferx Engine, I'm developing as a 16-year-old:"
Engine

Orion Drift upcoming game by Another Axiom
https://www.meta.com/experiences/orion-drift/7181769438517329/
https://www.youtube.com/watch?v=LWvzanMj_
Orion Drift Level Editor
https://www.meta.com/experiences/orion-drift/7181769438517329/

@BigJk "I'm using ImGui for the whole UI of a small game I'm currently developing for fun after work. It's a First Person Dungeon Crawler with Monster Collecting Elements called Gloamvault."

"It's the first time I had a usecase for ImGui's drag and drop features. I use it so that you can easily move monsters in your party around or cast spells by dragging the spell onto the target 😄 Was super easy to implement. Working with ImGui is a breeze as always!"
image
image


Read on more gallery posts.


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.

❤️ A few months ago was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉

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

v1.91.5

07 Nov 19:00
Compare
Choose a tag to compare

1.91.5: many tweaks/fixes & obsoleted old IO

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


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

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

❤️ Thanks to recently joining sponsors: id Software, SCS Software! Valve! Gravity Well! ❤️
❤️ Thanks to other present and past sponsors incl Supercell! BeamNG! OTOY! Arkane Lyon, Asobo Studio, Lucid Games! Asobo! G3Dvu ! Planestate Software! Aras P! FUTO! & many individuals ❤️

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


Changes (since v1.91.4)

Breaking Changes:

  • Commented out pre-1.87 IO system (equivalent to using IMGUI_DISABLE_OBSOLETE_KEYIO or IMGUI_DISABLE_OBSOLETE_FUNCTIONS before).
    • io.KeyMap[] and io.KeysDown[] are removed (obsoleted February 2022).
    • io.NavInputs[] and ImGuiNavInput enum are removed (obsoleted July 2022).
    • Pre-1.87 backends are not supported:
      • backends need to call io.AddKeyEvent(), io.AddMouseEvent() instead of writing to io.KeysDown[], io.MouseDown[] fields.
      • backends need to call io.AddKeyAnalogEvent() for gamepad values instead of writing to io.NavInputs[] fields.
    • For more references:
      • read #4921
      • read Changelogs for 1.87 and 1.88. Read API BREAKING CHANGES section of imgui.cpp.
    • If you have trouble updating a very old codebase using legacy backend-specific key codes:
      consider updating to 1.91.4 first, then #define IMGUI_DISABLE_OBSOLETE_KEYIO, then update to latest.
    • Obsoleted ImGuiKey_COUNT (it was unusually error-prone/misleading since valid keys don't start at 0). Probably use ImGuiKey_NamedKey_BEGIN/ImGuiKey_NamedKey_END instead?
  • Fonts: removed const qualifiers from most font functions in prevision for upcoming fonts improvements.

Other changes:

  • Selectable: selected Selectable use ImGuiCol_Header instead of an arbitrary lerp between _Header and _HeaderHovered which was introduced v1.91 (#8106, #1861)
  • Buttons: using ImGuiItemFlags_ButtonRepeat makes default button behavior use _PressedOnClick instead of _PressedOnClickRelease when unspecified.
    • This is intended to make the +/- buttons of InputInt()/InputFloat() react on the initial mouse down event.
    • Note that it may reveal incorrect usage if you were using InputInt()/InputFloat() without persistent storage by relying solely on e.g. IsItemDeactivatedAfterEdit(): this was never supported and didn't work consistently (see #8149).
  • InputText: fixed a bug (regression in 1.91.2) where modifying text buffer within a callback would sometimes prevents further appending to the buffer.
  • Tabs, Style: made ImGuiCol_TabDimmedSelectedOverline alpha 0 (not visible) in default styles as the current look is not right (but ImGuiCol_TabSelectedOverline stays the same).
  • Log/Capture: added experimental io.ConfigWindowsCopyContentsWithCtrlC option to automatically copy window contents into clipboard using CTRL+C. This is experimental because (1) it currently breaks on nested Begin/End, (2) text output quality varies, and (3) text output comes in submission order rather than spatial order.
  • Log/Capture: better decorating of BeginMenu() and TabItem() output.
  • Log/Capture: a non terminated log ends automatically in the window which called it.
  • imgui_freetype: Fixed a crash in build font atlas when using merged fonts and the first font in a merged set has no loaded glyph. (#8081)
  • Backends: DX12: Unmap() call specify written range. The range is informational and may be used by debug tools.
  • Backends: SDL2: Replace SDL_Vulkan_GetDrawableSize() forward declaration with the actual include. (#8095, #7967, #3190) [@sev-]
  • Backends: SDL2, SDL3: SDL_EVENT_MOUSE_WHEEL event doesn't require dividing by 100.0f on Emscripten target. (#4019, #6096, #1463)
  • Examples: SDL3+Vulkan: Added example. (#8084, #8085)
  • Examples: Android+OpenGL: Using ALooper_pollOnce() instead of ALooper_pollAll() which has been deprecated. (#8013) [@feather179]

Changes from 1.91.4 to 1.91.5 in the Docking branch:

  • Backends: GLFW: added Linux workaround for spurious mouse up events emitted while dragging and creating new viewports. Generally they would be interrupting a dragging operations. (#3158, #7733, #7922) [@rokups, @ocornut]
  • Docking: fixed using ImGuiDockNodeFlags_KeepAliveOnly with DockSpaceOverViewport(): the normally invisible space did erroneously claim mouse hover and could be potentially focused. (#8125) [@kcbanner]
  • ‼️ *EDIT* The imgui_impl_win32 backend in this release has a crashing bug when using multi-viewports + running multiple processes simultaneously (because I didn't realize Win32's SetProp()/GetProp() data were not process bound). Fixed by dad1047 head but not in a tagged release yet. You may cherry-pick dad1047 from 1.91.5. ‼️

How the output of io.ConfigWindowsCopyContentsWithCtrlC looks:

window ctrl-c (3)

Gallery

@elvissteinjr: "I've just released Desktop+ 3.0, a SteamVR desktop/windows mirroring application, which features a fully revamped UI, naturally using ImGui. While it was using ImGui before (last gallery post in 2020), the UI is now fancier with multiple windows floating in VR, some animated widgets and a custom VR keyboard (which is also just a ImGui window).
Nowadays also available on Steam (free). The Steam announcement for this release also has some short video clips and more screencaps, though not all focused on the interface itself."
read more

screenshot

@koki10190: "Editor for my game engine! The engine itself is similar to how unity works"
https://github.com/Vault-Software-Team/Vault-Engine
image

@vircon32: "Hi! Never got to show it here, but for some time now I have been using Dear Imgui. I made Vircon32, a game console I designed from scratch, and my emulator uses ImGui to show menus."
Vircon32 emulator Dear ImGui

@343587787: "I used ImGui combined with OpenCASCADE to create a 3D model visualization software for debugging some of my graphics algorithms."
Quicker_20241103_064852

@Riztazz: "We built a single/multi-webcam motion capture app AImation Studio with the help of ImGui, thank you for this library! Testing some of the features, streaming to unreal and other features available on our website if anyone is interested"

aimation_imgui_ver_three.mp4

@tay10r: "I use ImGui for practically everything at work and at home. Here's an app I made for monitoring training loops for neural networks. In this particular case I'm training an anomaly detector based on data augmentation techniques from: https://www.sciencedirect.com/science/article/abs/pii/S0031320320305094 Thanks @ocornut for maintaining this awesome library!"

Screenshot 2024-10-31 121139


[Read on more gallery...

Read more

v1.91.4

18 Oct 20:09
Compare
Choose a tag to compare

1.91.4: keyboard/gamepad nav options, draw callback data & backend render state & more

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


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

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

❤️ Thank you Supercell! BeamNG! OTOY! Lucid Games! Asobo! Planestate Software! Aras! Gravity Well! SCS Software! & many individuals ❤️

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


Changes (since v1.91.3)

Breaking Changes:

  • Style: renamed ImGuiCol_NavHighlight to ImGuiCol_NavCursor, for consistency with newly exposed and reworked features. Kept inline redirection enum (will obsolete).
  • The typedef for ImTextureID now defaults to ImU64 instead of void*. (#1641)
    • This removes the requirement to redefine it for backends which are e.g. storing descriptor sets or other 64-bits structures when building on 32-bits archs (namely our DX12 and Vulkan backends). It therefore simplify various building scripts/helpers.
    • You may have compile-time warnings if you were casting to void* instead of ImTextureID when passing your types to functions taking ImTextureID values, e.g. ImGui::Image(). In doubt it is almost always better to do an intermediate intptr_t cast, since it allows casting any pointer/integer type without warning:
      • May warn: ImGui::Image((void*)MyTextureData, ...);
      • May warn: ImGui::Image((void*)(intptr_t)MyTextureData, ...);
      • Won't warn: ImGui::Image((ImTextureID)(intptr_t)MyTextureData), ...);
    • Note that you can always #define ImTextureID to be your own high-level structures (with dedicated constructors and extra render parameters) if you like.
  • IO: moved ImGuiConfigFlags_NavEnableSetMousePos to standalone io.ConfigNavMoveSetMousePos bool.
  • IO: moved ImGuiConfigFlags_NavNoCaptureKeyboard to standalone io.ConfigNavCaptureKeyboard bool (note the inverted value!). (#2517, #2009). Kept legacy names (will obsolete) + code that copies settings once the first time. Dynamically changing the old value won't work. Switch to using the new value!

Other changes:

  • IO: added void* platform_io.Renderer_RenderState which is set during the ImGui_ImplXXXX_RenderDrawData() of standard backends to expose selected render states to your draw callbacks. (#6969, #5834, #7468, #3590)
  • IO: io.WantCaptureKeyboard is never set when ImGuiConfigFlags_NoKeyboard is enabled. (#4921)
  • Error Handling: turned a few more functions into recoverable errors. (#1651)
  • Nav (Keyboard/Gamepad navigation):
    • Nav: added io.ConfigNavCursorVisibleAuto and io.ConfigNavCursorVisibleAlways to configure visibility of navigation cursor. (#1074, #2048, #7237, #8059, #3200, #787)
      • Set io.ConfigNavCursorVisibleAuto = true (default) to enable automatic toggling of cursor visibility (mouse click hide the cursor, arrow keys makes it visible).
      • Set io.ConfigNavCursorVisibleAlways to keep cursor always visible.
    • Nav: added NavSetCursorVisible(bool visible) function to manipulate visibility of navigation cursor (e.g. set default state, or after some actions). (#1074, #2048, #7237, #8059)
    • Nav: added io.ConfigNavEscapeClearFocusItem and io.ConfigNavEscapeClearFocusWindow to change how pressing Escape affects navigation. (#8059, #2048, #1074, #3200)
      • Set io.ConfigNavEscapeClearFocusItem = true (default) to clear focused item and highlight.
      • Set io.ConfigNavEscapeClearFocusItem = false for Escape to not have an effect.
      • Set io.ConfigNavEscapeClearFocusWindow = true to completely unfocus the Dear ImGui window, is for some reason your app relies on imgui focus to take other decisions.
    • Nav: pressing Escape to hide the navigation cursor doesn't clear current location, so it may be restored when Ctrl+Tabbing back into the same window later.
    • Nav: fixed Ctrl+Tab initiated with no focused window from skipping the top-most window. (#3200)
    • Nav: navigation cursor is not rendered for items with ImGuiItemFlags_NoNav. Can be relevant when e.g activating a _NoNav item with mouse, then Ctrl+Tabbing back and forth.
  • Disabled: clicking a disabled item focuses parent window. (#8064)
  • InvisibleButton, Nav: fixed an issue when InvisibleButton() would be navigable into but not display navigation highlight. Properly navigation on it by default. (#8057)
  • InvisibleButton: added ImGuiButtonFlags_EnableNav to enable navigation over the invisible button. (#8057)
  • Tooltips: fixed incorrect tooltip positioning when using keyboard/gamepad navigation (1.91.3 regression). (#8036)
  • DrawList: AddCallback() added an optional size parameter allowing to copy and store any amount of user data for usage by callbacks: (#6969, #4770, #7665)
    • If userdata_size == 0: we copy/store the userdata argument as-is (existing behavior). It will be available unmodified in ImDrawCmd::UserCallbackData during render.
    • If userdata_size > 0, we copy/store userdata_size bytes pointed to by userdata (new behavior). We store them in a buffer stored inside the drawlist. ImDrawCmd::UserCallbackData will point inside that buffer so you have to retrieve data from there. Your callback may need to use ImDrawCmd::UserCallbackDataSize if you expect dynamically-sized data.
    • Note that we use a raw type-less copy.
  • Tables: fixed initial auto-sizing issue with synced-instances. (#8045, #7218)
  • InputText: fixed an issue with not declaring ownership of Delete/Backspace/Arrow keys, preventing use of external shortcuts that are not guarded by an ActiveId check. (#8048) [@geertbleyen]
  • InputText: ensure mouse cursor shape is set regardless of whether keyboard mode is enabled or not. (#6417)
  • InputScalar: added an assert to clarify that ImGuiInputTextFlags_EnterReturnsTrue is not
    supported by InputFloat()/InputInt()/InputScalar() etc. widgets. It actually never was. (#8065, #3946)
  • imgui_freetype: Added support for plutosvg (as an alternative to lunasvg) to render OpenType SVG fonts. Requires defining IMGUI_ENABLE_FREETYPE_PLUTOSVG along with IMGUI_ENABLE_FREETYPE. Providing headers/librairies for plutosvg + plutovg is up to you (see #7927 for help). (#7927, #7187, #6591, #6607) [@pthom]
  • Backends: DX11, DX12, SDLRenderer2/3. Vulkan, WGPU: expose selected state in ImGui_ImplXXXX_RenderState structures during render loop, for user draw callbacks. (#6969, #5834, #7468, #3590)
  • Backends: DX9, DX10, DX11, DX12, OpenGL, Vulkan, WGPU: Changed default texture sampler to Clamp instead of Repeat/Wrap. (#7468, #7511, #5999, #5502, #7230)

Changes from 1.91.3 to 1.91.4 in the Docking branch:

  • Backends: changed all backends to allow enabling ImGuiConfigFlags_ViewportsEnable after initialization. (#5371)

Gallery

@abdullahoday710 : "World editor I made for my game engine"
VortexEditor

@Redcrafter: "I'm using ImGui for the unofficial Animal Well map editor."
aw

@fchen99: "I'm working on this car audio flow editing and tuning tool recently. I've posted screen shot of its early version a couple of weeks ago, and now it's getting to its first release. Thanks @ocornut and all other contributors for your great work, imgui makes my work easier and more enjoyable."
screenshot

@ypujante: _"I made an Emscripten port for ImGui. What this means is that you only need the port file to use ImGui and it has simple options to configure it (like which renderer to use and which backend and the branch). The port takes care of downloading the proper version and compiling it. Check out the port on pongasoft/emscripten-ports.

imgui-port


Read on more gallery posts.


Also see previous releases details.
Note that GitHub are now clamping re...

Read more

v1.91.3

04 Oct 13:48
Compare
Choose a tag to compare

1.91.3: opt-in error recovery features + misc drags/tooltips/scrollbar/backends work.

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


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

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

In recent year, Dear ImGui has been financially supported by many companies. Thank you SCS Software for starting to sponsor Dear ImGui!

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


error handling 4

Changes (since v1.91.2)

Breaking Changes:

  • Drags: treat v_min==v_max as a valid clamping range when != 0.0f. Zero is still a special value due to legacy reasons, unless using ImGuiSliderFlags_ClampZeroRange. (#7968, #3361, #76)
  • Drags: extended behavior of ImGuiSliderFlags_AlwaysClamp to include ImGuiSliderFlags_ClampZeroRange. It considers v_min==v_max==0.0f as a valid clamping range (aka edits not allowed). Although unlikely, it you wish to only clamp on text input but want v_min==v_max==0.0f to mean unclamped drags, you can use _ClampOnInput instead of _AlwaysClamp. (#7968, #3361, #76)

Other changes:

  • Error Handling: Enabled/improved error recovery systems. (#1651, #5654)
    • Read https://github.com/ocornut/imgui/wiki/Error-Handling for a bit more details.
    • Error recovery is provided as a way to facilitate:
      • Recovery after a programming error. Native code or scripting language (the later tends to facilitate iterating on code while running).
      • Recovery after running an exception handler or any error processing which may skip code after an error has been detected.
    • Error recovery is not perfect nor guaranteed! It is a feature to ease development.
      You not are not supposed to rely on it in the course of a normal application run.
    • Functions that support error recovery are using IM_ASSERT_USER_ERROR() instead of IM_ASSERT().
    • By design, we do not allow error recovery to be 100% silent. One of the options needs to be enabled!
    • Possible usage: facilitate recovery from errors triggered from a scripting language or after specific exceptions handlers. Surface errors to programmers in less aggressive ways.
    • Always ensure that on programmers seats you have at minimum Asserts or Tooltips enabled when making direct imgui API calls! Otherwise it would severely hinder your ability to catch and correct mistakes!
    • Added io.ConfigErrorRecovery to enable error recovery support.
    • Added io.ConfigErrorRecoveryEnableAssert to assert on recoverable errors.
    • Added io.ConfigErrorRecoveryEnableDebugLog to output to debug log on recoverable errors.
    • Added io.ConfigErrorRecoveryEnableTooltip to enable displaying an error tooltip on recoverable errors. The tooltip include a way to enable asserts if they were disabled.
    • All options are enabled by default.
  • Windows: BeginChild(): made it possible to call SetNextWindowSize() on a child window using ImGuiChildFlags_ResizeX, ImGuiChildFlags_ResizeY in order to override its current size. (#1710, #8020)
  • Scrollbar: Shift+Click scroll to clicked location (pre-1.90.8 default). (#8002, #7328)
  • Scrollbar: added io.ConfigScrollbarScrollByPage setting (default to true). Set io.ConfigScrollbarScrollByPage=false to enforce always scrolling to clicked location. (#8002, #7328)
  • Drags: split ImGuiSliderFlags_AlwaysClamp into two distinct flags: (#7968, #3361, #76)
    • ImGuiSliderFlags_AlwaysClamp = ImGuiSliderFlags_ClampOnInput + ImGuiSliderFlags_ClampZeroRange.
    • Previously _AlwaysClamp only did the equivalent of _ClampOnInput.
    • Added ImGuiSliderFlags_ClampOnInput which is now a subset of _AlwaysClamp (note that it was the old name of _AlwaysClamp, but we are reintroducing that name).
    • Added ImGuiSliderFlags_ClampZeroRange to enforce clamping even when v_min==v_max==0.0f in drag functions. Sliders are not affected.
  • Tooltips, Drag and Drop: Fixed an issue where the fallback drag and drop payload tooltip appeared during drag and drop release.
  • Tooltips, Drag and Drop: Stabilized name of drag and drop tooltip window so thattransitioning from an item tooltip to a drag tooltip doesn't leak window auto-sizing info from one to the other. (#8036)
  • Tooltips: Tooltips triggered from touch inputs are positioned above the item. (#8036)
  • Backends: SDL3: Update for API changes: SDL_bool removal. SDL_INIT_TIMER removal.
  • Backends: WebGPU: Fixed DAWN api change using WGPUStringView in WGPUShaderSourceWGSL. (#8009, #8010) [@blitz-research]

Changes from 1.91.2 to 1.91.3 in the Docking branch:

  • Backends: SDL2, SDL3: Fixed building for UWP platforms. (#8008)
  • Backends: Win32: Use ResisterClassW()/CreateWindowExW() for secondary viewports, to ensure correct IME input even if the backend was compiled in MBCS mode. (#7979, #5725)

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.

❤️ A month ago was the 10th anniversary of v1.00! Read: 10 years of Dear ImGui ! 🎉

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

v1.91.2

19 Sep 12:53
Compare
Choose a tag to compare

1.91.2: detect id conflicts, table fixes, faster input text & more.

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


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

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

In recent year, Dear ImGui has been financially supported by many companies.
Thank you SCS Software for joining the list! Thank you to FUTO for their recent migrogrant!
Following the 10 years of Dear ImGui post, there has been an unusually high amount of individual donations. Thank you Adam, Albert, Antoine, Arthur, Bruno, Caleb, Charles, Daniel, Geoff, Giacomo, Israelle, Jean-Sebastien, Jonathan, Liam, Lucas, Martin, Nathaniel, Ondrej, Peter, Simon, Yuvan.

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


Changes (since v1.91.1)

detect id conflicts

  • Added io.ConfigDebugHighlightIdConflicts debug feature! (#7961, #7669)
    THIS DETECTS THE MOST COMMON USER ERROR BY FIRST-TIME DEAR IMGUI PROGRAMMERS! See Debug Tools page.
  • Nav: pressing any keyboard key while holding Alt disable toggling nav layer on Alt release. (#4439)
  • MultiSelect+Tables: fixed an issue where box-select would skip items while drag-scrolling in a table with outer borders. (#7970, #7821).
  • Inputs: SetNextItemShortcut() with ImGuiInputFlags_Tooltip doesn't show tooltip when item is active.
  • InputText: internal refactoring to simplify and optimize the code. The ImWchar buffer has been removed. Simplifications allowed to implement new optimizations for handling very large text buffers (e.g. in our testing, handling of a 1 MB text buffer is now 3 times faster in VS2022 Debug build). This is the first step toward more refactoring. (#7925) [@alektron, @ocornut]
  • InputText: added CJK double-width punctuation to list of separators considered for CTRL+Arrow.
  • Tables: fixed auto-width columns when using synced-instances of same table. The previous fix done in v1.90.5 was incomplete. (#7218)
  • Tables: fixed assertion related to inconsistent outer clipping when sizes are not rounded. (#7957) [@eclbtownsend]
  • Tables: fixed assertion with tables with borders when clipped by parent. (#6765, #3752, #7428)
  • Windows: fixed an issue where double-click to collapse could be triggered even while another item is active, if the item didn't use the left mouse button. (#7841)
  • Misc: Made it accepted to call SetMouseCursor() with any out-of-bound value, as a way to allow hacking in custom cursors if desirable.
  • Fonts: fixed ellipsis "..." rendering width miscalculation bug introduced in 1.91.0. (#7976) [@DDeimos]
  • TextLinkOpenURL(): modified tooltip to display a verb "Open 'xxxx'". (#7885, #7660)
  • Backends: SDL2: use SDL_Vulkan_GetDrawableSize() when available. (#7967, #3190) [@scribam]
  • Backends: GLFW+Emscripten: use OSX behaviors automatically when using contrib glfw port. (#7965, #7915) [@ypujante]
  • Backends: WebGPU: Added support for optional IMGUI_IMPL_WEBGPU_BACKEND_DAWN / IMGUI_IMPL_WEBGPU_BACKEND_WGPU
    defines to handle ever-changing native implementations. (#7977, #7969, #6602, #6188, #7523) [@acgaudette]

Changes from 1.91.1 to 1.91.2 in the Docking branch:

  • Viewports: fixed an issue where a window manually constrained to the main viewport while crossing over main viewport bounds isn't translated properly. (#7985)
  • Backends: SDL2, SDL3, Win32: ensure that ImGuiPlatformMonitor list is available after backend Init call. (#7995)
  • Backends: Win32: fixed direct calls to platform_io.Platform_SetWindowPos()/Platform_SetWindowSize() on windows created by application (typically main viewport).
  • Backends: Win32: fixed an issue where a viewport destroyed while clicking would hog mouse tracking and temporary lead to incorrect update of HoveredWindow. (#7971)
  • Backends: SDL3: added support for viewport->ParentViewportId field to support parenting windows at OS level. (#7973, #7989) [@RT2Code]

Gallery

@EddieEldridge: "Using ImGUI and a custom Lua wrapper to enable users to create their own custom GUI elements for the base game and it's modifications in the strategy game Medieval II: Total War" (Demo video,Medieval 2 Engine Overhaul Project).
Screenshot 2024-09-05 at 10 09 15

@untodesu: "I'm back at it with my ImGui-based Game UI for my voxel game - Voxelius This time the game features an almost-full fledged UI with the most recent addition being in-game chat! "
image

@Green-Sky: "Recently I also started to use DearImGui for a non game program, my messenger (framework frontend) tomato, which has Tox support built-in. It also supports loading plugins."
image
"With doom as a plugin 😏 :"
tomato2.2

@SirMallard: "Used at Roblox as an internal development tool for the engine. Shown during RDC24 (Roblox Developer Conference)."

Dear ImGui

"Only the engine programmers (Roblox employees) are able to use Dear ImGui. Developers using the Roblox engine do not have access to it, nor the ability to add it to the engine themselves, hence the implementation of Dear ImGui in Roblox Luau, Iris."

@bryanedds:
Nu Game Engine and Omni Blade (steam) from @bryanedds
https://github.com/bryanedds/Nu
"ImGui is the KEY factor that enables our game editor's user-extensibility far beyond what any retained gui can provide in practice. To us, the extensibility built into the ImGui paradigm was and continues to be the primary value proposition. And Dear ImGui specifically is the reason why we didn't even have to consider writing an ImGui ourselves! There's no sufficient way to emphasize how Dear ImGui and its lineage makes straight-forward the otherwise impractical!"
366103351-1fab2002-2f14-4c85-bd31-278d81277b0f


Also see [previous releases details](https://gi...

Read more

v1.91.1

04 Sep 15:19
Compare
Choose a tag to compare

1.91.1: moving to ImGuiPlatformIO + many fixes & improvements.

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


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

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

In recent year, Dear ImGui has been financially supported by: Aras Pranckevičius / Arkane Lyon / Asobo Studio / Avalanche Studios Group / BeamNG / Esoterica Engine / FUTO / G3Dvu / Lucid Games / Noel Berry / Mobigame / OTOY / Planestate Software / Remedy Entertainment / Sofistik / Supercell / Tuxedo Labs, Valve and many individual contributors. Thank you to FUTO for their recent migrogrant. Thank you for allowing Dear ImGui to stay on its path.

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


Changes (since v1.91.0)

We are moving a few platform related handlers from the ImGuiIO to the ImGuiPlatformIO structure.

  • If you are using standard backends you'll have nothing to do.
  • If you are using a custom and or third-party backend: we kept a legacy redirection but consider updating (you can check by enabling IMGUI_DISABLE_OBSOLETE_FUNCTIONS. Most likely the only functions you used that have moved are GetClipboardTextFn/SetClipboardTextFn().
  • The ImGuiPlatformIO structure already existed in the docking branch to support multi-viewports, we are slowly introducing selected parts of it in the master branch in order to (in the future) add features related to e.g. querying monitor/desktop DPI scale.

Breaking Changes:

  • BeginChild(): renamed ImGuiChildFlags_Border to ImGuiChildFlags_Borders for consistency. [@cfillion]
    Kept inline redirection flag (will obsolete).
  • IO: moved clipboard functions from ImGuiIO to ImGuiPlatformIO:
    • io.GetClipboardTextFn -> platform_io.Platform_GetClipboardTextFn
    • io.SetClipboardTextFn -> platform_io.Platform_SetClipboardTextFn
    • in function signatures, changed void* user_data to ImGuiContext* ctx for consistency with other functions. Pull your user data from platform_io.ClipboardUserData if used.
    • as this is will affect all users of custom engines/backends, we are providing proper legacy redirection (will obsolete).
  • IO: moved other functions from ImGuiIO to ImGuiPlatformIO:
    • io.PlatformOpenInShellFn -> platform_io.Platform_OpenInShellFn (#7660)
    • io.PlatformSetImeDataFn -> platform_io.Platform_SetImeDataFn
    • io.PlatformLocaleDecimalPoint -> platform_io.Platform_LocaleDecimalPoint (#7389, #6719, #2278)
    • access those via GetPlatformIO() instead of GetIO().
      (Because PlatformOpenInShellFn and PlatformSetImeDataFn were introduced extremely recently and
      often automatically set by core library and backends, we are exceptionally not maintaining a legacy redirection symbol for those two.)
  • Commented the old ImageButton() signature obsoleted in 1.89 (~August 2022). (#5533, #4471, #2464, #1390)
    • old ImageButton() used ImTextureId as item id (created issue with e.g. multiple buttons in same scope, transient texture id values, opaque computation of ID)
    • new ImageButton() requires an explicit const char* str_id
    • old ImageButton() had a frame_padding override argument.
    • new ImageButton() always use style.FramePadding, which you can modify using PushStyleVar()/PopStyleVar().

Other Changes

  • IO: Added GetPlatformIO() and ImGuiPlatformIO, pulled from 'docking' branch, which is a centralized spot to connect os/platform/renderer related functions. Clipboard, IME and OpenInShell hooks are moved here. (#7660)
  • IO, InputText: fixed an issue where typing text in an InputText() would defer character processing by one frame, because of the trickling input queue. Reworked interleaved keys<>char trickling to take account for keys known to input characters. (#7889, #4921, #4858)
  • Windows: adjust default ClipRect to better match rendering of thick borders (which are in theory not supported). Compensate for the fact that borders are centered around the windows edge rather than inner. (#7887, #7888 + #3312, #7540, #3756, #6170, #6365)
  • Made BeginItemTooltip() and IsItemHovered() with delay flag infer an implicit ID (for ID-less items such as Text element) in a way that works when item resizes. (#7945, #1485)
  • MultiSelect+TreeNode+Drag and Drop: fixed an issue where carrying a drag and drop payload over an already open tree node using multi-select would incorrectly select it. (#7850)
  • MultiSelect+TreeNode: default open behavior is _OpenOnDoubleClick + _OpenOnArrow
    when used in a multi-select context without any ImGuiTreeNode_OpenOnXXX flags set. (#7850)
  • Tables: fixes/revert a 1.90 change were outer border would be moved bottom and right by an extra pixel + rework the change so that contents doesn't overlap the bottom and right border in a scrolling table. (#6765, #3752, #7428)
  • Tables: fixed an issue resizing columns or querying hovered column/row when using multiple synched instances that are layed out at different X positions. (#7933)
  • Tabs: avoid queuing a refocus when tab is already focused, which would have the side-effect of e.g. closing popup on a mouse release. (#7914)
  • InputText: allow callback to update buffer while in read-only mode. (imgui_club/#46)
  • InputText: fixed an issue programmatically refocusing a multi-line input which was just active. (#4761, #7870)
  • TextLink(), TextLinkOpenURL(): change mouse cursor to Hand shape when hovered. (#7885, #7660)
  • Tooltips, Drag and Drop: made it possible to override BeginTooltip() position while inside a drag and drop source or target: a SetNextWindowPos() call won't be overridden. (#6973)
  • PlotHistogram, PlotLines: register item ID and use button behavior in a more idiomatic manner, fixes preventing e.g. GetItemID() and other ID-based helper to work. (#7935, #3072)
  • Style: added PushStyleVarX(), PushStyleVarY() helpers to conveniently modify only one component of a ImVec2 var.
  • Fonts: made it possible to use PushFont()/PopFont() calls across Begin() calls. (#3224, #3875, #6398, #7903)
  • Backends:
    • Backends: GLFW: added ImGui_ImplGlfw_Sleep() helper function because GLFW does not provide a way to do a portable sleep. (#7844)
    • Backends: GLFW+Emscripten: Use OpenURL() from GLFW3 contrib port when available and using the contrib port instead of Emscripten own GLFW3 implementation. (#7647, #7915, #7660) [@ypujante]
    • Backends: SDL2, SDL3: ignore events of other SDL windows. (#7853) [@madebr, @ocornut]
    • Backends: SDL2, SDL3: storing SDL_WindowID inside ImGuiViewport::PlatformHandle instead of SDL_Window*.
    • Backends: SDL3: Update for API changes: SDL_GetGamepads() memory ownership logic was reverted back by SDL3 on July 27. (#7918, #7898, #7807) [@cheyao, @MattGuerrette]
    • Backends: GLFW: passing null window to glfwGetClipboardString()/glfwSetClipboardString() since GLFW own tests are doing that and it seems unnecessary.
    • Backends: SDL2, SDL3, GLFW, OSX, Allegro: update to set function handlers in ImGuiPlatformIO instead of ImGuiIO.
  • Examples:
    • Examples: GLFW (all), SDL2 (all), SDL3 (all), Win32+OpenGL3: rework examples main loop to handle minimization without burning CPU or GPU by running unthrottled code. (#7844)
    • Examples: SDL3: Update for API changes: SDL_Init() returns 0 on failure.

Changes from 1.91.0 to 1.91.1 in the Docking branch:

  • Viewports: added optional platform_io.Platform_GetWindowWorkAreaInsets() hook to allow backends to alter the default per-viewport work-area. (#7823)
  • Backends: don't report ...
Read more