imgui v1.71 Release Notes

Release Date: 2019-06-12 // almost 5 years ago
  • ๐Ÿš€ Monthly release!

    ๐Ÿš€ This is a general release following 1.70, keeping with the rhythm of having more frequent, smaller releases. Reading the full 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!


    ๐Ÿ‘€ See https://github.com/ocornut/imgui for the project homepage.
    ๐Ÿš€ See https://github.com/ocornut/imgui/releases for earlier release notes.
    ๐Ÿ‘€ See https://github.com/ocornut/imgui/wiki for language/framework bindings, links, 3rd parties helpers/extensions.
    ๐Ÿ‘ Issues and support: https://github.com/ocornut/imgui/issues
    ๐Ÿ†• Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    Thank you!

    Ongoing work on dear imgui is currently being sponsored by Blizzard Entertainment + general & community work by many individual users, hobbyists and studios. See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful.

    TL;DR;

    • ๐Ÿ‘ Made it possible to support large meshes (64k+ vertices) while compiling with 16-bit indices, back-end need to set ImGuiBackendFlags_RendererHasVtxOffset and honor ImDrawCmd::VtxOffset. Added support for this in most back-ends.
    • ๐Ÿ‘€ Made SetNextWindowContentSize() actually useful (see details below).
    • ๐Ÿ‘ Freetype: Support for Monochrome rasterizing which for some fonts can get you high-quality non-AA looking output.
    • ๐Ÿ›  Fixes for tree nodes, collapsing headers, tab bars, columns inside an horizontally scrolling region.
    • ๐Ÿ”€ Dozens of other fixes and small additions. Also synched the Docking branch accordingly.

    ๐Ÿ’ฅ Breaking Changes

    • IO: changed io.AddInputCharacter(unsigned short c) signature to io.AddInputCharacter(unsigned int c).
    • ๐Ÿ“‡ Renamed SetNextTreeNodeOpen() to SetNextItemOpen(). Kept inline redirection function (will obsolete).
    • ๐Ÿ Window: rendering of child windows outer decorations (e.g. bg color, border, scrollbars) is now performed as part of their parent window, avoiding the creation of an extraneous draw commands. If you have overlapping child windows with decorations, and relied on their relative z-order to be mapped to submission their order, this will affect your rendering. The optimization is disabled if the parent window has no visual output because it appears to be the most common situation leading to the creation of overlapping child windows. Please reach out if you are affected by this change!

    Other Changes:

    • ๐Ÿ Window: clarified behavior of SetNextWindowContentSize(). Content size is defined as the size available after removal of WindowPadding on each sides. So SetNextWindowContentSize(ImVec2(100,100)) + auto-resize will always allow submitting a 100x100 item without creating a scrollbar, regarding of the WindowPadding value. The exact meaning of ContentSize for decorated windows was previously ill-defined.
    • ๐Ÿ›  Window: Fixed auto-resize with AlwaysVerticalScrollbar or AlwaysHorizontalScrollbar flags.
    • ๐Ÿ›  Window: Fixed one case where auto-resize by double-clicking the resize grip would make either scrollbar appear for a single frame after the resize.
    • โช Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect but it breaks existing some layout patterns. Will return back to it when we expose Separator flags.
    • ๐Ÿ›  Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting style.ItemInnerSpacing.x worth of trailing spacing.
    • ๐Ÿ›  Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000"). It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here.
    • ๐Ÿ›  Fixed uses of IsItemDeactivated(), IsItemDeactivatedAfterEdit() on multi-components widgets and after EndGroup(). (#2550, #1875)
    • ๐Ÿ›  Fixed crash when appending with BeginMainMenuBar() more than once and no other window are showing. (#2567)
    • ๐Ÿ›  ColorEdit: Fixed the color picker popup only displaying inputs as HSV instead of showing multiple options. (#2587, broken in 1.69 by #2384).
    • ๐Ÿ‘ CollapsingHeader: Better clipping when a close button is enabled and it overlaps the label. (#600)
    • Scrollbar: Minor bounding box adjustment to cope with various border size.
    • ๐Ÿ’… Scrollbar, Style: Changed default style.ScrollbarSize from 16 to 14.
    • ๐Ÿ›  Combo: Fixed rounding not applying with the ImGuiComboFlags_NoArrowButton flag. (#2607) [@DucaRii]
    • ๐Ÿšš Nav: Fixed gamepad/keyboard moving of window affecting contents size incorrectly, sometimes leading to scrollbars appearing during the movement.
    • ๐Ÿš€ Nav: Fixed rare crash when e.g. releasing Alt-key while focusing a window with a menu at the same frame as clearing the focus. This was in most noticeable in back-ends such as Glfw and SDL which emits key release events when focusing another viewport, leading to Alt+clicking on void on another viewport triggering the issue. (#2609)
    • ๐Ÿ›  TreeNode, CollapsingHeader: Fixed highlight frame not covering horizontal area fully when using horizontal scrolling. (#2211, #2579)
    • ๐Ÿ›  TabBar: Fixed BeginTabBar() within a window with horizontal scrolling from creating a feedback loop with the horizontal contents size.
    • ๐Ÿ›  Columns: Fixed Columns() within a window with horizontal scrolling from not covering the full horizontal area (previously only worked with an explicit contents size). (#125)
    • ๐Ÿ›  Columns: Fixed Separator() from creating an extraneous draw command. (#125)
    • ๐Ÿ›  Columns: Fixed Selectable() with ImGuiSelectableFlags_SpanAllColumns from creating an extraneous draw command. (#125)
    • ๐Ÿ’… Style: Added style.WindowMenuButtonPosition (left/right, defaults to ImGuiDir_Left) to move the collapsing/docking button to the other side of the title bar.
    • ๐Ÿ’… Style: Made window close button cross slightly smaller.
    • ๐Ÿ›  Log/Capture: Fixed BeginTabItem() label not being included in a text log/capture.
    • ๐Ÿ‘ ImDrawList: Added ImDrawCmd::VtxOffset value to support large meshes (64k+ vertices) using 16-bits indices. The renderer back-end needs to set io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset to enable this, and honor the ImDrawCmd::VtxOffset field. Otherwise the value will always be zero. This has the advantage of preserving smaller index buffers and allowing to execute on hardware that do not support 32-bits indices. Most examples back-ends have been modified to support the VtxOffset field.
    • ImDrawList: Added ImDrawCmd::IdxOffset value, equivalent to summing element count for each draw command. This is provided for convenience and consistency with VtxOffset.
    • ImDrawCallback: Allow to override the signature of ImDrawCallback by #define-ing it. This is meant to facilitate custom rendering back-ends passing local render-specific data to the draw callback.
    • ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. Combine with RasterizerFlags::MonoHinting for best results. (#2545) [@HolyBlackCat]
    • ๐Ÿ›  ImFontGlyphRangesBuilder: Fixed unnecessarily over-sized buffer, which incidentally was also not fully cleared. Fixed edge-case overflow when adding character 0xFFFF. (#2568). [@NIKE3500]
    • ๐Ÿ Demo: Added full "Dear ImGui" prefix to the title of "Dear ImGui Demo" and "Dear ImGui Metrics" windows.
    • 0๏ธโƒฃ Backends: Add native Mac clipboard copy/paste default implementation in core library to match what we are dealing with Win32, and to facilitate integration in custom engines. (#2546) [@andrewwillmott]
    • Backends: OSX: imgui_impl_osx: Added mouse cursor support. (#2585, #1873) [@actboy168]
    • ๐Ÿ‘ Examples/Backends: DirectX9/10/11/12, Metal, Vulkan, OpenGL3 (Desktop GL only): Added support for large meshes (64k+ vertices) with 16-bits indices, enable 'ImGuiBackendFlags_RendererHasVtxOffset' in those back-ends.
    • ๐Ÿ‘ Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode support. (#2538, #2541)

    Beta features!

    The docking (#2109) and multi-viewport (#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. There's a CMake pull-request (#1713).

    Future features!

    A sneak peak at what I am currently working on..

    Tables (multi-purpose replacement for columns)
    Tables

    โœ… Testing suite
    Automation

    Help wanted!

    • ๐Ÿง Multi-viewports in particular needs help on Linux and Mac, and specific workarounds for both SDL and GLFW are becoming highly desirable. (#2117),
    • ๐Ÿ‘€ The Vulkan renderer appears to have issues (see vulkan tag)
    • ๐Ÿ‘ The DirectX12 renderer needs multi-viewports support.
    • Browsing issues and todo list you may find something something to contribute to!

    Gallery

    ๐Ÿ‘€ See Gallery threads for more pictures and to post yours!

    OpenSage (https://github.com/OpenSAGE/OpenSAGE)
    OpenSage

    NVIDIA Omniverse viewer (https://developer.nvidia.com/nvidia-omniverse)
    OpenSage in motion: https://twitter.com/NVBackchannel/status/1131712329446506497

    Unnamed game by @Aarkham

    pcsx-redux by @grumpycoders https://github.com/grumpycoders/pcsx-redux
    pcsx-redux

    Orbital (https://github.com/AlexAltea/orbital)
    orbital