Skip to content

v1.85

Compare
Choose a tag to compare
@ocornut ocornut released this 12 Oct 12:20
· 1925 commits to master since this release

Hello!
Reading the 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!


Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, extensions, links, etc.
FAQ: https://www.dearimgui.org/faq/
Issues: https://github.com/ocornut/imgui/issues

Did you know? We have a Wiki!
It has sections such as this Useful Extensions Gallery! 👌


Thank you!

Special thanks to @rokups for their continued work on stuff that are still not visible e.g. regression tests.
Special thanks to @PathogenDavid, @AidanSun05, @thedmd, for their continued contributions and helping with github answers.

Ongoing work on Dear ImGui is currently financially supported by:

Huge thank you to all past and present supporters!

Dear ImGui is funded by your contributions and needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.

TL;DR;

  • New Stack Tool to help debugging the source of ID. Access from Demo>Tools or Metrics>Tools.
  • SetKeyboardFocusHere() now works on clipped items (finally).
  • Nav: Plenty of fixes for gamepad/keyboard navigation.
  • Docking, Viewports: various fixes.
  • Menus: Fixed layout issue with MenuItem() calls inside a menu bar.
  • Added SDL_Renderer backend for upcoming SDL 2.0.18+ (yet unreleased). Note that using native GL/DX backends is generally recommended but this is now available for users of the SDL_Renderer features.
  • Dozens of other fixes and improvements.

stack_tool_03b

stack_tool_03

Breaking Changes

(Suggestion: once in a while, add #define IMGUI_DISABLE_OBSOLETE_FUNCTIONS in your imconfig.h file to make sure you are not using to-be-obsoleted symbols.)

  • Removed GetWindowContentRegionWidth() function. keep inline redirection helper. Can use GetWindowContentRegionMax().x - GetWindowContentRegionMin().x instead but it's not very useful in practice, and the only use of it in the demo was ill-fit. Using GetContentRegionAvail().x is generally a better choice.

Other Changes

  • Debug: Stack Tool: Added Stack Tool available in Demo->Tools->Stack Tool, Metrics->Tools, or by calling the ShowStackToolWindow() function. The tool run queries on hovered id to display details about individual components that were hashed to create an ID. It helps understanding the ID stack system and debugging potential ID collisions. (#4631) [@ocornut, @rokups]
  • Windows: Fixed background order of overlapping childs submitted sequentially. (#4493)
  • IsWindowFocused: Added ImGuiFocusedFlags_NoPopupHierarchy flag allowing to exclude child popups from the tested windows when combined with ImGuiFocusedFlags_ChildWindows.
  • IsWindowHovered: Added ImGuiHoveredFlags_NoPopupHierarchy flag allowing to exclude child popups from the tested windows when combined with ImGuiHoveredFlags__ChildWindows.
  • InputTextMultiline: Fixed label size not being included into window contents rect unless the whole widget is clipped.
  • InputText: Allow activating/cancelling/validating input with gamepad nav events. (#2321, #4552)
  • InputText: Fixed selection rectangle appearing one frame late when selecting all.
  • TextUnformatted: Accept null ranges including (NULL,NULL) without asserting, in order to conform to common idioms (e.g. passing .data(), .data() + .size() from a null string). (#3615)
  • Disabled: Added assert guard for mismatching BeginDisabled()/EndDisabled() blocks. (#211)
  • Nav: Fixed using SetKeyboardFocusHere() on non-visible/clipped items. It now works and will scroll toward the item. When called during a frame where the parent window is appearing, scrolling will aim to center the item in the window. When calling during a frame where the parent window is already visible, scrolling will aim to scroll as little as possible to make the item visible. We will later expose scroll functions and flags in public API to select those behaviors. (#343, #4079, #2352)
  • Nav: Fixed using SetKeyboardFocusHere() from activating a different item on the next frame if submitted items have changed during that frame. (#432)
  • Nav: Fixed toggling menu layer with Alt or exiting menu layer with Esc not moving mouse when the ImGuiConfigFlags_NavEnableSetMousePos config flag is set.
  • Nav: Fixed a few widgets from not setting reference keyboard/gamepad navigation ID when activated with mouse. More specifically: BeginTabItem(), the scrolling arrows of BeginTabBar(), the arrow section of TreeNode(), the +/- buttons of InputInt()/InputFloat(), Selectable() with ImGuiSelectableFlags_SelectOnRelease. More generally: any direct use of ButtonBehavior() with the PressedOnClick/PressedOnDoubleClick/PressedOnRelease button policy.
  • Nav: Fixed an issue with losing focus on docked windows when pressing Alt while keyboard navigation is disabled. (#4547, #4439) [@PathogenDavid]
  • Nav: Fixed vertical scoring offset when wrapping on Y in a decorated window.
  • Nav: Improve scrolling behavior when navigating to an item larger than view.
  • TreePush(): removed unnecessary/inconsistent legacy behavior where passing a NULL value to the TreePush(const char*) and TreePush(const void*) functions would use an hard-coded replacement. The only situation where that change would make a meaningful difference is TreePush((const char*)NULL) (explicitly casting a null pointer to const char*), which is unlikely and will now crash. You may replace it with anything else.
  • ColorEdit4: Fixed not being able to change hue when saturation is 0. (#4014) [@rokups]
  • ColorEdit4: Fixed hue resetting to 0 when it is set to 255. [@rokups]
  • ColorEdit4: Fixed hue value jitter when source color is stored as RGB in 32-bit integer and perform RGB<>HSV round trips every frames. [@rokups]
  • ColorPicker4: Fixed picker being unable to select exact 1.0f color when dragging toward the edges of the SV square (previously picked 0.999989986f). (#3517) [@rokups]
  • Menus: Fixed vertical alignments of MenuItem() calls within a menu bar (broken in 1.84). (#4538)
  • Menus: Improve closing logic when moving diagonally in empty between between parent and child menus to accommodate for varying font size and dpi.
  • Menus: Fixed crash when navigating left inside a child window inside a sub-menu. (#4510).
  • Menus: Fixed an assertion happening in some situations when closing nested menus (broken in 1.83). (#4640)
  • Drag and Drop: Fixed using BeginDragDropSource() inside a BeginChild() that returned false. (#4515)
  • PlotHistogram: Fixed zero-line position when manually specifying min<0 and max>0. (#4349) [@filippocrocchini]
  • Misc: Added asserts for missing PopItemFlag() calls.
  • Misc: Fixed printf-style format checks on Clang+MinGW. (#4626, #4183, #3592) [@guusw]
  • IO: Added io.WantCaptureMouseUnlessPopupClose alternative to io.WantCaptureMouse. (#4480) This allows apps to receive the click on void when that click is used to close popup (by default, clicking on a void when a popup is open will close the popup but not release io.WantCaptureMouse).
  • Fonts: imgui_freetype: Fixed crash when FT_Render_Glyph() fails to render a glyph and returns NULL (which apparently happens with Freetype 2.11). (#4394, #4145?).
  • Fonts: Fixed ImFontAtlas::ClearInputData() marking atlas as not built. (#4455, #3487)
  • Backends: Added more implicit asserts to detect invalid/redundant calls to Shutdown functions. (#4562)
  • Backends: OpenGL3: Fixed our custom GL loader conflicting with user using GL3W. (#4445) [@rokups]
  • Backends: WebGPU: Fixed for latest specs. (#4472, #4512) [@Kangz, @bfierz]
  • Backends: SDL_Renderer: Added SDL_Renderer backend compatible with upcoming SDL 2.0.18. (#3926) [@1bsyl]
  • Backends: Metal: Fixed a crash when clipping rect larger than framebuffer is submitted via a direct unclipped PushClipRect() call. (#4464)
  • Backends: OSX: Use mach_absolute_time as CFAbsoluteTimeGetCurrent can jump backwards. (#4557, #4563) [@lfnoise]
  • Backends: All renderers: Normalize clipping rect handling across backends. (#4464)
  • Examples: Added SDL + SDL_Renderer example in examples/example_sdl_sdlrenderer folder. (#3926) [@1bsyl]

Other branches & Beta features!

Also see previous release notes such as 1.80, 1.81, 1.80, 1.83, 1.84.

The docking (#2109) and multi-viewports (#1542) features are available in the docking branch, they are in beta but actively maintained and being used by many teams already. Your continuous feedback is always appreciated.

Some of changes from 1.84 to 1.85 related to the docking branch (multi-viewport and docking features) include:

  • IsWindowFocused: Fixed using ImGuiFocusedFlags_ChildWindows (without _RootWindow) from leaking the docking hierarchy. Added ImGuiFocusedFlags_DockHierarchy flag to consider docking hierarchy in the test.
  • IsWindowHovered: Fixed using ImGuiHoveredFlags_ChildWindows (without _RootWindow) from leaking the docking hierarchy. Added ImGuiHoveredFlags_DockHierarchy flag to consider docking hierarchy in the test.
  • Nav: Fixed an issue with losing focus on docked windows when pressing Alt while keyboard navigation is disabled. (#4547, #4439) [@PathogenDavid]
  • Docking: Fixed IsItemHovered() and functions depending on it (e.g. BeginPopupContextItem()) when called after Begin() on a docked window (broken 2021/03/04). (#3851)
  • Docking: Improved resizing system so that non-central zone are better at keeping their fixed size. The algorithm is still not handling the allocation of size ideally for nested sibling, but it got better.
  • Docking: Fixed settings load issue when mouse wheeling. (#4310)
  • Docking: Fixed manually created floating node with a central node from not hiding when windows are gone.
  • Docking + Drag and Drop: Fixed using BeginDragDropSource() or BeginDragDropTarget() inside a Begin() that returned false because the window is docked. (#4515)
  • Viewports: Fixed a crash while a window owning its viewport disappear while being dragged. It would manifest when e.g. reconfiguring dock nodes while dragging.
  • Viewports: Fixed unnecessary creation of temporary viewports when multiple docked windows got reassigned to a new node (created mid-frame) which already has a HostWindow.
  • Viewports: Fixed window with viewport ini data immediately merged into a host viewport from leaving a temporary viewport alive for a frame (would leak into backend).

There's a CMake pull-request (#1713) if you prefer a traditional CMake integration over registering sources files in your own project. There's a premake5 branch if you prefer Visual Studio projects generated by premake.

Gallery

Below a selection of screenshots from Gallery threads...

@mnesarco "BAWR This is a tool to automate the icons generation from sets of svg files into fonts and atlases."
https://github.com/mnesarco/bawr
BAWR

@xhighway999 "LuaPad An awesome online Lua sandbox"
https://coffeecupentertainment.com/static/luapad/luapad.html
screenshot

@vtushevskiy _"GLSL exlorer (standalone shadertoy "on steroids")"
https://vimeo.com/605113516
Screen Shot 2021-09-14 at 15 48 09

@AidanSun05 "Network Socket Terminal (NST) is an application for Internet and Bluetooth communication on Windows and Linux computers."
https://github.com/NSTerminal/terminal

image

@Jaysmito101 "Procedural Terrain Generation And Shading Tool With Node Editor, Shader Editor, Skybox, Lua Scripting, ,..."
Screenshot (0)

@parbo Custom/experimental Spotify client
custom spotify client


PS: Dear ImGui is funded by your contributions and needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.