imgui v1.68 Release Notes

Release Date: 2019-02-19 // about 5 years ago
  • ๐Ÿš€ This is a general release, keeping with the beat 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 features to explore 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)

    image

    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 via e.g. Patreon or support contracts. See the readme for details. Huge thank you to all of you, past and present supporters! You help is very meaningful.

    TL;DR;

    • โž• Added ImDrawData::FramebufferScale to facilitate future support for multiple-viewport over multiple screen with varying retina scale factor (prefer using instead of io.DisplayFramebufferScale!
    • โž• Added ImGui::IsItemActivated().
    • โž• Added ImGuiTabBarFlags_TabListPopupButton flag.
    • โž• Added ImGuiStyle::SelectableTextAlign.
    • ๐Ÿ‘ Examples: Win32: Added support for XInput gamepad (if ImGuiConfigFlags_NavEnableGamepad is enabled).
    • ๐Ÿ›  Dozens of bug fixes and other improvements.

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ‘ป Made it illegal/assert when io.DisplayTime == 0.0f (with an exception for the first frame). This shouldn't affect you unless for some reason your time step calculation lack precision and give you a zero value, in which case you may e.g. replace it with a dummy small value. Because that replacement would be arbitrary we currently don't try to do it on dear imgui's side.
    • โœ‚ Removed io.DisplayVisibleMin/DisplayVisibleMax (which were marked obsolete and removed from viewport/docking branch already).

    Other Changes:

    • โž• Added .editorconfig file for text editors to standardize using spaces. (#2038) [@kudaba]
    • ImDrawData: Added FramebufferScale field (currently a copy of the value from io.DisplayFramebufferScale). This is to allow render functions being written without pulling any data from ImGuiIO, allowing incoming multi-viewport feature to behave on Retina display and with multiple displays.
      โšก๏ธ If you are not using a custom binding, please update your render function code ahead of time, and use draw_data->FramebufferScale instead of io.DisplayFramebufferScale. (#2306, #1676)
    • โž• Added IsItemActivated() as an extension to the IsItemDeactivated/IsItemDeactivatedAfterEdit functions
      which are useful to implement variety of undo patterns. (#820, #956, #1875)
    • โช InputText: Fixed a bug where ESCAPE would not restore the initial value in all situations. (#2321) [@relick]
    • ๐Ÿ›  InputText: Fixed a bug where ESCAPE would be first captured by the Keyboard Navigation code. (#2321, #787)
    • ๐Ÿ›  InputText: Fixed redo buffer exhaustion handling (rare) which could corrupt the undo character buffer. The way the redo/undo buffers work would have made it generally unnoticeable to the user. (#2333)
    • ๐Ÿ›  Fixed range-version of PushID() and GetID() not honoring the "###" operator to restart from the seed value.
    • ๐Ÿ›  Fixed CloseCurrentPopup() on a child-menu of a modal incorrectly closing the modal. (#2308)
    • Tabs: Added ImGuiTabBarFlags_TabListPopupButton flag to show a popup button on manual tab bars. (#261, #351)
    • ๐Ÿšš Tabs: Removed ImGuiTabBarFlags_NoTabListPopupButton which was available in 1.67, but not documented and actually had zero use (taking the liberty of not listing this in breaking change since it was thoroughly unused).
    • ๐Ÿ’… Tabs: Fixed a minor clipping glitch when changing style's FramePadding from frame to frame.
    • ๐Ÿ›  Tabs: Fixed border (when enabled) so it is aligned correctly mid-pixel and appears as bright as other borders.
    • ๐Ÿ’… Style, Selectable: Added ImGuiStyle::SelectableTextAlign and ImGuiStyleVar_SelectableTextAlign. (#2347) [@haldean]
    • ๐Ÿ’… Menus: Tweaked horizontal overlap between parent and child menu (to help convey relative depth) from using style.ItemSpacing.x to style.ItemInnerSpacing.x, the later being expected to be smaller. (#1086)
    • ๐Ÿ›  RadioButton: Fixed label horizontal alignment to precisely match Checkbox().
    • ๐Ÿ‘ Window: When resizing from an edge, the border is more visible and better follow the rounded corners.
    • ๐Ÿ Window: Fixed initial width of collapsed windows not taking account of contents width (broken in 1.67). (#2336, #176)
    • Scrollbar: Fade out and disable interaction when too small, in order to facilitate using the resize grab on very small window, as well as reducing visual noise/overlap.
    • โšก๏ธ ListBox: Better optimized when clipped / non-visible.
    • โšก๏ธ InputTextMultiline: Better optimized when clipped / non-visible.
    • ๐Ÿ›  Font: Fixed high-level ImGui::CalcTextSize() used by most widgets from erroneously subtracting 1.0f*scale to calculated text width. Among noticeable side-effects, it would make sequences of repeated Text/SameLine calls not align the same as a single call, and create mismatch between high-level size calculation and those performed with the lower-level ImDrawList api. (#792) [@SlNPacifist]
    • ๐Ÿ— Font: Fixed building atlas when specifying duplicate/overlapping ranges within a same font. (#2353, #2233)
    • ๐Ÿ›  ImDrawList: Fixed AddCircle(), AddCircleFilled() angle step being off, which was visible when drawing a "circle" with a small number of segments (e.g. an hexagon). (#2287) [@baktery]
    • ImGuiTextBuffer: Added append() function (unformatted).
    • 0๏ธโƒฃ ImFontAtlas: Added 0x2000-0x206F general punctuation range to default ChineseFull / ChineseSimplifiedCommon ranges. (#2093)
    • ๐Ÿ‘ ImFontAtlas: FreeType: Added support for imgui allocators + custom FreeType only SetAllocatorFunctions. (#2285) [@Vuhdo]
    • ๐Ÿ— ImFontAtlas: FreeType: Fixed using imgui_freetype.cpp in unity builds. (#2302)
    • ๐Ÿ›  Demo: Fixed "Log" demo not initializing properly, leading to the first line not showing before a Clear. (#2318) [@bluescan]
    • ๐ŸŒฒ Demo: Added "Auto-scroll" option in Log/Console demos. (#2300) [@nicolasnoble, @ocornut]
    • ๐Ÿ›  Examples: Metal, OpenGL2, OpenGL3, Vulkan: Fixed offsetting of clipping rectangle with ImDrawData::DisplayPos != (0,0) when the display frame-buffer scale scale is not (1,1). While this doesn't make a difference when using master branch, this is effectively fixing support for multi-viewport with Mac Retina Displays on those examples. (#2306) [@rasky, @ocornut]
      Also using ImDrawData::FramebufferScale instead of io.DisplayFramebufferScale.
    • Examples: Clarified the use the ImDrawData::DisplayPos to offset clipping rectangles.
    • ๐Ÿ Examples: Win32: Using GetForegroundWindow()+IsChild() instead of GetActiveWindow() to be compatible with windows created in a different thread or parent. (#1951, #2087, #2156, #2232) [many people]
    • Examples: SDL: Using the SDL_WINDOW_ALLOW_HIGHDPI flag. (#2306, #1676) [@rasky]
    • ๐Ÿ‘ Examples: Win32: Added support for XInput gamepad (if ImGuiConfigFlags_NavEnableGamepad is enabled).
    • Examples: Win32: Added support for mouse buttons 4 and 5 via WM_XBUTTON* messages. (#2264)
    • Examples: DirectX9: Explicitly disable fog (D3DRS_FOGENABLE) before drawing in case user state has it set. (#2288, #2230)
    • Examples: OpenGL2: Added #define GL_SILENCE_DEPRECATION to cope with newer XCode warnings.
    • Examples: OpenGL3: Using GLSL 4.10 shaders for any GLSL version over 410 (e.g. 430, 450). (#2329) [@BrutPitt]

    I want more!

    ๐Ÿง The docking (#2109) and multi-viewport (#1542) features are available in the docking branch, 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

    Imogen by @CedricGuillemet
    68747470733a2f2f692e696d6775722e636f6d2f7351664f3542722e706e67

    RemedyBG

    ๐Ÿ > RemedyBG is a 64-bit Windows debugger written from scratch with the goal of replacing the behemoth Visual Studio debugger.

    remedybg-01

    imgui_markdown.h

    Single-header file for Markdown rendering.

    imgui_markdown_avoyd_about_oss

    GPU profiler at game studio Endroad
    gpuprofiler

    (Right-side) VJ software based on imgui & openFrameworks, by @yumataesu
    ๐Ÿ‘€ Also see GIF.
    dwxpuxsu0aar02i jpg large