imgui v1.67 Release Notes

Release Date: 2019-01-15 // over 5 years ago
  • Happy new year!

    👀 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: https://github.com/ocornut/imgui/issues
    👍 Technical support for new users: https://discourse.dearimgui.org (also search in GitHub Issues)

    🚑 Next morning hotfix: A previous tag for the 1.67 release pointed to commit 7a5058e it is now pointing d38d7c6 (two commits later) including a fix for when using multiple append calls to BeginChild/EndChild.

    Thank you

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

    TL;DR;

    • ➕ Added Tab Bar api. This was extracted from the Docking branch (#2109) which is its primary user. You can now uses programatically created tabs without relying on Docking.
    • 🛠 Fixes and optimizations to the font atlas builder (both stb_truetype and freetype versions).
    • Resizing windows from edge is now enabled by default if the backend supports mouse cursors shapes.
    • ⚡️ About 20% faster in typical debug/unoptimized builds.
    • 🏁 A dozen of other additions and fixes (in gamepad/keyboard navigation, DragFloat, auto-resizing windows uncollapsing, ImGuiWindowFlags_UnsavedDocument, io.ConfigWindowsMoveFromTitleBarOnly, io.AddInputCharacter, etc. read details below).

    (Demo->Layout->Tabs and Demo->Examples->Documents)
    image

    (Demo->Examples->Documents)
    imgui_capture_0002

    💥 Breaking Changes

    • Made it illegal to call Begin("") with an empty string. This somehow accidentally worked before but had various undesirable side-effect as the window would have ID zero. In particular it is causing problems in viewport/docking branches.
    • 🏁 Renamed io.ConfigResizeWindowsFromEdges to io.ConfigWindowsResizeFromEdges and removed its [Beta] mark. The addition of new configuration options in the Docking branch is pushing for a little reorganization of those names.
    • 📇 Renamed ImFontAtlas::GlyphRangesBuilder to ImFontGlyphRangesBuilder. Keep redirection typedef (will obsolete).

    Other Changes:

    • ➕ Added BETA api for Tab Bar/Tabs widgets: (#261, #351)
      • Added BeginTabBar(), EndTabBar(), BeginTabItem(), EndTabItem(), SetTabItemClosed() API.
      • Added ImGuiTabBarFlags flags for BeginTabBar() (currently has 8 options).
      • Added ImGuiTabItemFlags flags for BeginTabItem() (currently has 4 options).
      • Style: Added ImGuiCol_Tab, ImGuiCol_TabHovered, ImGuiCol_TabActive, ImGuiCol_TabUnfocused, ImGuiCol_TabUnfocusedActive colors.
      • Demo: Added Layout->Tabs demo code.
      • Demo: Added "Documents" example app showcasing possible use for tabs. This feature was merged from the Docking branch in order to allow the use of regular tabs in your code. (It does not provide the docking/splitting/merging of windows available in the Docking branch)
    • Added ImGuiWindowFlags_UnsavedDocument window flag to append '*' to title without altering the ID, as a convenience to avoid using the ### operator. In the Docking branch this also has an effect on tab closing behavior.
    • 🚚 Window, Focus, Popup: Fixed an issue where closing a popup by clicking another window with the _NoMove flag would refocus the parent window of the popup instead of the newly clicked window.
    • Window: Contents size is preserved while a window collapsed. Fix auto-resizing window losing their size for one frame when uncollapsed.
    • Window: Contents size is preserved while a window contents is hidden (unless it is hidden for resizing purpose).
    • Window: Resizing windows from edge is now enabled by default (io.ConfigWindowsResizeFromEdges=true). Note that it only works if the back-end sets ImGuiBackendFlags_HasMouseCursors, which the standard back-ends do.
    • 🏁 Window: Added io.ConfigWindowsMoveFromTitleBarOnly option. This is ignored by window with no title bars (often popups). This affects clamping window within the visible area: with this option enabled title bars need to be visible. (#899)
    • 🛠 Window: Fixed using SetNextWindowPos() on a child window (which wasn't really documented) position the cursor as expected in the parent window, so there is no mismatch between the layout in parent and the position of the child window.
    • InputFloat: When using ImGuiInputTextFlags_ReadOnly the step buttons are disabled. (#2257)
    • 🛠 DragFloat: Fixed broken mouse direction change with power!=1.0. (#2174, #2206) [@Joshhua5]
    • 🏁 Nav: Fixed an keyboard issue where holding Activate/Space for longer than two frames on a button would unnecessary keep the focus on the parent window, which could steal it from newly appearing windows. (#787)
    • ⚡️ Nav: Fixed animated window titles from being updated when displayed in the CTRL+Tab list. (#787)
    • 🌲 Error recovery: Extraneous/undesired calls to End() are now being caught by an assert in the End() function closer to the user call site (instead of being reported in EndFrame). Past the assert, they don't lead to crashes any more. (#1651). Missing calls to End(), past the assert, should not lead to crashes or to the fallback Debug window appearing on screen. Those changes makes it easier to integrate dear imgui with a scripting language allowing, given asserts are redirected into e.g. an error log and stopping the script execution.
    • ImFontAtlas: Stb and FreeType: Atlas width is now properly based on total surface rather than glyph count (unless overridden with TexDesiredWidth).
    • 🏗 ImFontAtlas: Stb and FreeType: Fixed atlas builder so missing glyphs won't influence the atlas texture width. (#2233)
    • 🏗 ImFontAtlas: Stb and FreeType: Fixed atlas builder so duplicate glyphs (when merging fonts) won't be included in the rasterized atlas.
    • 🛠 ImFontAtlas: FreeType: Fixed abnormally high atlas height.
    • 🛠 ImFontAtlas: FreeType: Fixed support for any values of TexGlyphPadding (not just only 1).
    • 🚀 ImDrawList: Optimized some of the functions for performance of debug builds where non-inline function call cost are non-negligible. (Our test UI scene on VS2015 Debug Win64 with /RTC1 went ~5.9 ms -> ~4.9 ms. In Release same scene stays at ~0.3 ms.)
    • IO: Added io.BackendPlatformUserData, io.BackendRendererUserData, io.BackendLanguageUserData void* for storage use by back-ends.
    • IO: Renamed InputCharacters[], marked internal as was always intended. Please don't access directly, and use AddInputCharacter() instead!
    • IO: AddInputCharacter() goes into a queue which can receive as many characters as needed during the frame. This is useful for automation to not have an upper limit on typing speed. Will later transition key/mouse to use the event queue later.
    • 💅 Style: Tweaked default value of style.DisplayWindowPadding from (20,20) to (19,19) so the default style as a value which is the same as the title bar height.
    • 💅 Demo: "Simple Layout" and "Style Editor" are now using tabs.
    • 🏁 Demo: Added a few more things under "Child windows" (changing ImGuiCol_ChildBg, positioning child, using IsItemHovered after a child).
    • Examples: DirectX10/11/12: Made imgui_impl_dx10/dx11/dx12.cpp link d3dcompiler.lib from the .cpp file to ease integration.
    • Examples: Allegro 5: Properly destroy globals on shutdown to allow for restart. (#2262) [@DomRe]

    I want more!

    🐧 The docking (#2109) and multi-viewport (#1542) features are actively being used by dozens of teams. Your continuous feedback is always appreciated. Multi-viewport in particular needs help on Linux and Mac (#2117).
    There's a CMake pull-request (#1713).

    Gallery

    Zep (text editor widget) by @cmaughan
    sample

    glChAoS.P by @BrutPitt
    sshot_201917_6158

    Internal tooling for Crossout by Targem Games
    crossout

    💅 C64 style by @Nullious (font, colors)
    c64 imgui