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 toio.AddInputCharacter(unsigned int c)
. - ๐ Renamed
SetNextTreeNodeOpen()
toSetNextItemOpen()
. 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. SoSetNextWindowContentSize(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
orAlwaysHorizontalScrollbar
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 insertingstyle.ItemInnerSpacing.x
worth of trailing spacing. - ๐ Fixed
InputFloatX
,SliderFloatX
,DragFloatX
functions erroneously reportingIsItemEdited()
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()
withImGuiSelectableFlags_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 setio.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset
to enable this, and honor theImDrawCmd::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)
- ๐ Made