Skip to content

v1.83

Compare
Choose a tag to compare
@ocornut ocornut released this 24 May 15:56
· 1576 commits to master since this release

Hello!
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!


Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, extensions, links, etc.
FAQ: https://www.dearimgui.org/faq/
Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki!
It has sections such as this Useful Extensions Gallery! 👌


Thank you!

Special thanks to @rokups for their continued work on e.g. regression tests.
Special thanks to @PathogenDavid for helping with github answers. For a treat read the amazing story that unfolded in #4029 !

Ongoing work on Dear ImGui is currently financially supported by:

Huge thank you to all past and present supporters!

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

TL;DR;

  • This is a general maintenance release.
  • Various Keyboard/Gamepad Navigation fixes.
  • Various programmatic scrolling fixes.
  • Tables share more of their allocations.
  • Dozens of other additions, fixes and optimizations.

Breaking Changes

(Suggestion: once in a while, add #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS in your imconfig.h file to make sure you are not using to-be-obsoleted symbols.)

  • Backends: Obsoleted direct access to ImDrawCmd::TextureId in favor of calling ImDrawCmd::GetTexID(). (#3761) [@thedmd]
    • If you are using official backends from the source tree: you have nothing to do.
    • If you copied old backend code or using your own: change access to draw_cmd->TextureId to draw_cmd->GetTexID().
  • Why are we doing this?
    • This change will be required in the future when adding support for incremental texture atlas updates.
    • Please note this won't break soon, but we are making the change ahead of time.

All Changes

  • Scrolling: Fix scroll tracking with e.g. SetScrollHereX()/SetScrollHereY() when WindowPadding < ItemSpacing.
  • Scrolling: Fix scroll snapping on edge of scroll region when both scrollbars are enabled.
  • Scrolling: Fix mouse wheel axis swap when using SHIFT on macOS (system already does it). (#4010)
  • Window: Fix IsWindowAppearing() from returning true twice in most cases. (#3982, #1497, #1061)
  • Nav: Fixed toggling menu layer while an InputText() is active not stealing active id. (#787)
  • Nav: Fixed pressing Escape to leave menu layer while in a popup or child window. (#787)
  • Nav, InputText: Fixed accidental menu toggling while typing non-ascii characters using AltGR. [@rokups] (#370)
  • Nav: Fixed using SetItemDefaultFocus() on windows with _NavFlattened flag. (#787)
  • Nav: Fixed Tabbing initial activation from skipping the first item if it is tabbable through. (#787)
  • Nav: Fixed fast CTRL+Tab (where keys are only held for one single frame) from properly enabling the menu layer of target window if it doesn't have other active layers.
  • Tables: Expose TableSetColumnEnabled() in public api. (#3935)
  • Tables: Better preserve widths when columns count changes. (#4046)
  • Tables: Sharing more memory buffers between tables, reducing general memory footprints. (#3740)
  • TabBar: Fixed mouse reordering with very fast movements (e.g. crossing multiple tabs in a single frame and then immediately standing still (would only affect automation/bots). [@rokups]
  • Menus: made MenuItem() in a menu bar reflect the 'selected' argument with a highlight. (#4128) [@mattelegende]
  • Drags, Sliders, Inputs: Specifying a NULL format to Float functions default them to "%.3f" to be consistent with the compile-time default. (#3922)
  • DragScalar: Add default value for v_speed argument to match higher-level functions. (#3922) [@eliasdaler]
  • ColorEdit4: Alpha default to 255 (instead of 0) when omitted in hex input. (#3973) [@squadack]
  • InputText: Do not filter private unicode codepoints (e.g. icons) when pasted from clipboard. (#4005) [@dougbinks]
  • InputText: Align caret/cursor to pixel coordinates. (#4080) [@elvissteinjr]
  • InputText: Fixed CTRL+Arrow or OSX double-click leaking the presence of spaces when ImGuiInputTextFlags_Password
    is used. (#4155, #4156) [@michael-swan]
  • LabelText: Fixed clipping of multi-line value text when label is single-line. (#4004)
  • LabelText: Fixed vertical alignment of single-line value text when label is multi-line. (#4004)
  • Combos: Changed the combo popup to use a different id to also using a context menu with the default item id. Fixed using BeginPopupContextItem() with no parameter after a combo. (#4167)
  • Popups: Added OpenPopup(ImGuiID id) overload to facilitate calling from nested stacks. (#3993, #331) [@zlash]
  • Tweak computation of io.Framerate so it is less biased toward high-values in the first 120 frames. (#4138)
  • Optimization: Disabling some of MSVC most aggressive Debug runtime checks for some simple/low-level functions
    (e.g. ImVec2, ImVector) leading to a 10-20% increase of performances with MSVC "default" Debug settings.
  • ImDrawList: Add and use SSE-enabled ImRsqrt() in place of 1.0f / ImSqrt(). (#4091) [@wolfpld]
  • ImDrawList: Fixed/improved thickness of thick strokes with sharp angles. (#4053, #3366, #2964, #2868, #2518, #2183) Effectively introduced a regression in 1.67 (Jan 2019), and a fix in 1.70 (Apr 2019) but the fix wasn't actually on par with original version. Now incorporating the correct revert.
  • ImDrawList: Fixed PathArcTo() regression from 1.82 preventing use of counter-clockwise angles. (#4030, #3491) [@thedmd]
  • Demo: Improved popups demo and comments.
  • Metrics: Added "Fonts" section with same information as available in "Style Editor">"Fonts".
  • Backends: SDL: Rework global mouse pos availability check listing supported platforms explicitly, effectively fixing mouse access on Raspberry Pi. (#2837, #3950) [@lethal-guitar, @hinxx]
  • Backends: Win32: Clearing keyboard down array when losing focus (WM_KILLFOCUS). (#2062, #3532, #3961)
    [@1025798851]
  • Backends: OSX: Fix keys remaining stuck when CMD-tabbing to a different application. (#3832) [@rokups]
  • Backends: DirectX9: calling IDirect3DStateBlock9::Capture() after CreateStateBlock() which appears to workaround/fix state restoring issues. Unknown exactly why so, bit of a cargo-cult fix. (#3857)
  • Backends: DirectX9: explicitly setting up more graphics states to increase compatibility with unusual non-default states. (#4063)
  • Backends: DirectX10, DirectX11: fixed a crash when backing/restoring state if nothing is bound when entering the rendering function. (#4045) [@Nemirtingas]
  • Backends: GLFW: Adding bound check in KeyCallback because GLFW appears to send -1 on some setups. [#4124]
  • Backends: Vulkan: Fix mapped memory Vulkan validation error when buffer sizes are not multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize. (#3957) [@AgentX1994]
  • Backends: WebGPU: Update to latest specs (Chrome Canary 92 and Emscripten 2.0.20). (#4116, #3632) [@bfierz, @Kangz]
  • Backends: OpenGL3: Don't try to read GL_CLIP_ORIGIN unless we're OpenGL 4.5. (#3998, #2366, #2186) [@s7jones]
  • Examples: OpenGL: Add OpenGL ES 2.0 support to modern GL examples. (#2837, #3951) [@lethal-guitar, @hinxx]
  • Examples: Vulkan: Rebuild swapchain on VK_SUBOPTIMAL_KHR. (#3881)
  • Examples: Vulkan: Prefer using discrete GPU if there are more than one available. (#4012) [@rokups]
  • Examples: SDL2: Link with shell32.lib required by SDL2main.lib since SDL 2.0.12. [#3988]
  • Examples: Android: Make Android example build compatible with Gradle 7.0. (#3446)
  • Docs: Improvements to description of using colored glyphs/emojis. (#4169, #3369)
  • Docs: Improvements to minor mistakes in documentation comments (#3923) [@ANF-Studios]

Other branches & Beta features!

Also see previous release notes such as 1.80.

The docking (#2109) and multi-viewports (#1542) features are available in the docking branch, they are in beta but actively maintained and being used by many teams already. Your continuous feedback is always appreciated.

Some of changes from 1.82 to 1.83 related to the docking branch (multi-viewport and docking features) include:

  • [Breaking] Removed io.ConfigDockingWithShift config option. Behavior always equivalent to having the option set to false (dock/undock by default, hold shift to avoid docking). (#2109)
  • Docking: DockSpace() returns its node ID.
  • Docking: Dockspace() never draws a background. (#3924)
  • Docking: Undocking nodes/windows covering most of the monitor max their size down to 90% to ease manipulations.
  • Docking: Docking node tab bar honors ItemInnerSpacing.x before first tab. (#4130)
  • Docking: Tweak rendering and alignment of dock node menu marker. (#4130)
  • Docking: Fixed restoring of tab order within a dockspace or a split node.
  • Docking: Fixed reappearing docked windows with no close button showing a tab with extraneous space for one frame.
  • Docking: Fixed multiple simultaneously reappearing window from appearing undocked for one frame.
  • Viewports: Hotfix for crash in monitor array access, caused by 4b9bc49. (#3967)
  • Backends, Viewports: GLFW: Add a workaround for stuck keys after closing a GLFW window (#3837).
  • Backends, Viewports: Vulkan: Rebuild swapchain on VK_SUBOPTIMAL_KHR. (#3881)

There's a CMake pull-request (#1713) if you prefer a traditional CMake integration over registering sources files in your own project. There's a premake5 branch if you prefer Visual Studio projects generated by premake.

Gallery

Below a selection of screenshots from Gallery threads...

@jarikomppa: Sassy "Audio spreadsheet, or in other words, virtual modular synthesizer using spreadsheet as the user interface."
https://sol-hsa.itch.io/sassy
ss2

@vertver: "ImGui - perfect library with great perfomance and excelent API, and that's why we are using this in our plugin.
Plugin is free, and it's can be downloaded from https://suirless.com"

dynation

@slajerek "Retro debugger screenshot"

@Kayzaks "Been using ImGui to create a Designer for Integrated Photonics for a Startup Idea I'm pursuing (Akhetonics). Still in early development though. Have always liked ImGui from my game-dev days, so why not for a more industrial application!"
2021-04-10 AtetDesigner

8th Wall's SLAM system & Omniscope
Blog post: https://www.8thwall.com/blog/post/45697581391/building-the-next-generation-of-slam-for-the-browser
EzmnHF9UYAAwaaC

@gboisse "Particles timeline editing with ImGui ✨"
IMG_8764

Cafe-Shader-Studio
https://github.com/KillzXGaming/Cafe-Shader-Studio
https://gbatemp.net/threads/cafe-shader-studio.587670
image

@Moneyl "A modding tool for Red Faction Guerrilla. Started off as a file viewer so it can view maps, textures, and some meshes. So far it can only edit textures. "
Nanoforge_wrOXwCjWR9


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