github ocornut/imgui v1.90.1

latest releases: v1.91.5-docking, v1.91.5, v1.91.4-docking...
10 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:

Gallery

@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

preview.mp4

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

Don't miss a new imgui release

NewReleases is sending notifications on new releases.