Skip to content

v1.91.1

Compare
Choose a tag to compare
@ocornut ocornut released this 04 Sep 15:19
· 235 commits to master since this release

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 monitors with DpiScale of 0, which seemed to be reported for virtual monitors instead by accessibility drivers. (#7902) [@nicolasnoble, @ocornut]
  • Backends: SDL2, SDL3: using SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN to support the ImGuiViewportFlags_NoFocusOnAppearing flag, instead of using a Win32-specific hack. (#7896) [@RT2Code]

Gallery

IKEA are using Dear ImGui: IKEA STRÅLA Editor (internal IKEA tool)
Ikea01
https://www.youtube.com/watch?v=Kup0d4Te3n0

Nintendo EPD are using Dear ImGui: Legend of Zelda: Tears of the Kingdom
Slide from CEDEC2024: https://x.com/R_Nikaido/status/1827252823526142412
GVux-sOaIAAT7TM

@Hoek67: Goblin 2D+ Engine. _"Been using Dear ImGui for a few years now and it has made a huge difference to my semi-stalled DX11 game/rendering engine. With it I was able to build a large debug suite that allowed me to see "inside" the engine in real-time and nail down some hard to find issues/bugs. [...]"
image

@StrikerX3: "Here are some screenshots of the debugging tools on my Nintendo DS emulator."
image
image
image
(see more)

@ronak69: "4 months ago I made an unofficial Dear ImGui frontend for the Ladybird web browser."
Repo: https://codeberg.org/ronak69/dear-ladybird
Demo gif: https://serenityos.social/@ronak69/112282372320979700
screenshot-april-24

gigi released by SEED/electronicarts
"A framework for rapid prototyping and development of real-time rendering techniques."
Maintained by @Atrix256
https://github.com/electronicarts/gigi
https://www.ea.com/seed/news/gigi <- Announcement page
https://www.youtube.com/watch?v=qknK-tahICE <- 25 mins tutorial video
editor
gigi

HAVOK (navigation debugger)
https://x.com/momo_zzz/status/1826490841147605370
Havok

Posted by @fchen99:
微信图片_20240827173003


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