imgui v1.71 Release Notes

Release Date: 2019-08-19 // over 4 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!

    TL;DR;

    • ๐Ÿ‘€ Made SetNextWindowContentSize() actually useful (see details below).
    • ๐Ÿ›  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. (not on JVM)
    • 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.
    • ๐Ÿ‘ 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)