Skip to content

v1.90.9

Latest
Compare
Choose a tag to compare
@ocornut ocornut released this 01 Jul 15:20
· 19 commits to master since this release

1.90.9: Last shy version increment before 1.91!

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

Consider reading the foreword for v1.90.5. If you contacted me in March consider following up :)

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 you need an excuse to pay, you may buy licenses for Test Engine and that will contribute to fund Dear ImGui.

In the last years, Dear ImGui has been financially supported by: Aras Pranckevičius / Arkane Lyon / Asobo Studio / Avalanche Studios Group / BeamNG / Blizzard / Esoterica Engine / G3Dvu / Lucid Games / Noel Berry / Mobigame / Planestate Software / Pocketwatch Games / Remedy Entertainment / Supercell / Terrible Toybox / Tuxedo Labs / Wonderland Engine and many individual contributors. Thank you for allowing Dear ImGui to stay on its path.

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

Changes

Breaking Changes:

  • Removed old nested structure: renaming ImGuiStorage::ImGuiStoragePair type to ImGuiStoragePair (simpler for many languages). No significant nested type left.
  • BeginChild: added ImGuiChildFlags_NavFlattened as a replacement for the window flag ImGuiWindowFlags_NavFlattened: the feature only ever made sense for BeginChild() calls anyhow. (#7687) [@cfillion]
    • old: BeginChild("Name", size, 0, ImGuiWindowFlags_NavFlattened);
    • new: BeginChild("Name", size, ImGuiChildFlags_NavFlattened, 0)
      Kept inline redirection flag (will obsolete).
  • Style: renamed tab colors for clarity and consistency with other changes: (#261, #351)
    • ImGuiCol_TabActive -> ImGuiCol_TabSelected
    • ImGuiCol_TabUnfocused -> ImGuiCol_TabDimmed
    • ImGuiCol_TabUnfocusedActive -> ImGuiCol_TabDimmedSelected
      Kept inline redirecting enums (will obsolete).
  • IO: io.ClearInputKeys() (first exposed in 1.89.8) doesn't clear mouse data. Newly added io.ClearInputMouse() does. (#4921)
  • Drag and Drop: renamed ImGuiDragDropFlags_SourceAutoExpirePayload to ImGuiDragDropFlags_PayloadAutoExpire. Kept inline redirecting enum (will obsolete). (#1725, #143)

Other Changes

  • IO: do not disable io.ConfigWindowsResizeFromEdges (which allow resizing from borders and lower-left corner) when ImGuiBackendFlags_HasMouseCursors is not set by backend. The initial reasoning is that resizing from borders feels better when correct mouse cursor shape change as honored by backends. Keeping this enabling will hopefully increase pressure on third-party backends to set ImGuiBackendFlags_HasMouseCursors and honor changes of ImGui::GetMouseCursor() value. (#1495)
  • IO: do not claim io.WantCaptureMouse=true on the mouse release frame of a button which was pressed over void/underlying app, which is consistent/needed to allow the mouse up event of a drag over void/underlying app to catch release. (#1392) [@Moka42]
  • IO: Added io.ClearInputMouse() to clear mouse state. (#4921)
  • Windows: BeginChild(): fixed a glitch when during a resize of a child window which is tightly close to the boundaries of its parent (e.g. with zero WindowPadding), the child position could have temporarily be moved around by erroneous padding application. (#7706)
  • TabBar, Style: added ImGuiTabBarFlags_DrawSelectedOverline option to draw an horizontal line over selected tabs to increase visibility. This is used by docking. Added corresponding ImGuiCol_TabSelectedOverline and ImGuiCol_TabDimmedSelectedOverline colors.
  • Tables: added TableGetHoveredColumn() to public API, as an alternative to testing for TableGetColumnFlags(column) & ImGuiTableColumnFlags_IsHovered on each column. (#3740)
  • Disabled, Inputs: fixed using Shortcut() or SetNextItemShortcut() within a disabled block bypassing the disabled state. (#7726)
  • Disabled: Reworked 1.90.8 behavior of Begin() not inheriting current BeginDisabled() state, to make it that only tooltip windows are temporarily clearing it. (#211, #7640)
  • Drags: added ImGuiSliderFlags_WrapAround flag for DragInt(), DragFloat() etc. (#7749)
  • Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceExtern sets active id so a multi-frame extern source doesn't interfere with hovered widgets. (#143)
  • Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceExtern does not assume a mouse button being pressed. Facilitate implementing cross-context drag and drop. (#143)
  • Drag and Drop: Added ImGuiDragDropFlags_PayloadNoCrossContext/ImGuiDragDropFlags_PayloadNoCrossProcess flags as metadata to specify that a payload may not be copied outside the context/process by some logic aiming to copy payloads around.
  • Drag and Drop: Fixes an issue when elapsing payload would be based on last payload frame instead of last drag source frame, which makes a difference if not resubmitting payload every frame. (#143)
  • Debug Tools: Metrics/Debugger: Browsing a Storage perform hover lookup on identifier.
  • Viewports: Backported void* ImGuiViewport::PlatformHandle from docking branch for use by backends.
  • imgui_freetype: Fixed divide by zero while handling FT_PIXEL_MODE_BGRA glyphs. (#7267, #3369)
  • Backends: OpenGL2, OpenGL3: ImGui_ImplOpenGL3_NewFrame() recreates font texture if it has been destroyed by ImGui_ImplOpenGL3_DestroyFontsTexture(). (#7748) [@mlauss2]
  • Backends: SDL3: Update for API removal of keysym field in SDL_KeyboardEvent. (#7728)
  • Backends: SDL3: Update for SDL_StartTextInput()/SDL_StopTextInput() API changes. (#7735)
  • Backends: SDL3: Update for SDL_SetTextInputRect() API rename. (#7760, #7754) [@maxortner01]
  • Backends: SDLRenderer3: Update for SDL_RenderGeometryRaw() API changes. (SDL#9009).
  • Backends: Vulkan: Remove Volk/ from volk.h #include directives. (#7722, #6582, #4854) [@martin-ejdestig]
  • Examples: SDL3: Remove use of SDL_HINT_IME_NATIVE_UI since new SDL_HINT_IME_IMPLEMENTED_UI values has a more suitable default for our case case.
  • Examples: GLFW+Vulkan, SDL+Vulkan: handle swap chain resize even without Vulkan returning VK_SUBOPTIMAL_KHR, which doesn't seem to happen on Wayland. (#7671) [@AndreiNego, @ocornut]

Changes from 1.90.8 to 1.90.9 related to the Docking branch: (aimed to merge in 1.91)

  • Windows, Menus: Fixed an issue where the size of sub-menu in their own viewport would be erroneously clamped to the size of main viewport. (#7730)
  • Merged GetBackgroundDrawList() and GetBackgroundDrawList(ImGuiViewport* viewport) api entry points into a same one GetBackgroundDrawList(ImGuiViewport* viewport = NULL);
  • Merged GetForegroundDrawList() and GetForegroundDrawList(ImGuiViewport* viewport) api entry points into a same one GetForegroundDrawList(ImGuiViewport* viewport = NULL);
  • Backends: SDL3: Update for introduction of SDL_GLContext type from void*. (#7701, #7702) [@bcsanches]
  • Backends: Win32: Secondary viewports WndProc handler retrieve/set imgui context from the HWND, allowing WndProc dispatch to work in multi-context setups.

Changes from 1.90.8 to 1.90.9 related to the Multi-Select/Range-Select branch: (aimed to merge in 1.91)

https://github.com/ocornut/imgui/wiki/Multi-Select

  • MultiSelect: provide RangeDirection to allow selection handler to handler backward shift+click if they wish to make use of that order.
  • MultiSelect: Shift+Tab doesn't enable Shift select on landing item.
  • MultiSelect: added courtesy ImGuiMultiSelectFlags_NavWrapX flag so we can demo this until a nav api is designed.
  • MultiSelect: added ImGuiMultiSelectFlags_NoAutoClearOnReselect. (#7424)
  • MultiSelect: BoxSelect: (breaking) renamed ImGuiMultiSelectFlags_BoxSelect -> ImGuiMultiSelectFlags_BoxSelect2d. Which include not assuming one flag imply the other.
  • MultiSelect: BoxSelect: uses SetActiveIdUsingAllKeyboardKeys() to avoid nav interference, much like most drag operations.
  • MultiSelect: BoxSelect: made Escape disable box-select and clear selection.
  • MultiSelect: ImGuiSelectionBasicStorage: rework to accept massive selections requests without flinching.
  • MultiSelect: ImGuiSelectionBasicStorage: added GetNextSelectedItem() to abstract selection storage from user.
  • MultiSelect: ImGuiSelectionBasicStorage: added PreserveOrder, maintain implicit order data in storage.
  • Demo: Assets Browser: added a way to disable sorting and hide sorting options.
  • Demo: Assets Browser: amend demo to handle drag and drop correctly.

Gallery

ImNES = NES Emulator + Rust + ImGui by @gordnzhou
https://github.com/gordnzhou/imnes-emulator
image

vīcĭus updater agent
https://github.com/nefarius/vicius
nefarius_HidHide_Updater_GDFudys8mB
Updater_mc9y7o4qcL

Assassin's Creed Mirage
IMG_4538

@native-m "continuation from this last post: #6897 (comment)"
"An update of my toy DAW... Really love Dear ImGui!"
https://github.com/native-m/whitebox
DAW

Chronicles IV: Ebonheim
https://mastodon.gamedev.place/@britown
https://www.reddit.com/r/roguelikedev/comments/1d8vvbt/introducing_chronicles_iv_ebonheim/
image

@alektron: "Engine/Editor/Runtime for my VR game "Fear of Falling":"
https://alektron.itch.io/fear-of-falling
image

@dromer "The past year we've been creating audio plugins using Imgui for their interface. Our most extensive UI so far is M3NGLR, a multi-band "modular distortion" plugin:"
https://github.com/Wasted-Audio/wstd-m3nglr


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. Did you know? If you need an excuse to pay, you may buy licenses for Test Engine and that will contribute to fund Dear ImGui.