v1.68
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)
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 ofio.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 fromio.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 usedraw_data->FramebufferScale instead
ofio.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
andImGuiStyleVar_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).
- 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
RemedyBG is a 64-bit Windows debugger written from scratch with the goal of replacing the behemoth Visual Studio debugger.
Single-header file for Markdown rendering.
GPU profiler at game studio Endroad
(Right-side) VJ software based on imgui & openFrameworks, by @yumataesu
Also see GIF.