Releases: ocornut/imgui
v1.85
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.
 
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 useGetWindowContentRegionMax().x - GetWindowContentRegionMin().xinstead but it's not very useful in practice, and the only use of it in the demo was ill-fit. UsingGetContentRegionAvail().xis generally a better choice. 
Other Changes
- Debug: Stack Tool: Added 
Stack Toolavailable inDemo->Tools->Stack Tool,Metrics->Tools, or by calling theShowStackToolWindow()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_NoPopupHierarchyflag allowing to exclude child popups from the tested windows when combined withImGuiFocusedFlags_ChildWindows. - IsWindowHovered: Added 
ImGuiHoveredFlags_NoPopupHierarchyflag allowing to exclude child popups from the tested windows when combined withImGuiHoveredFlags__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_NavEnableSetMousePosconfig 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 ofBeginTabBar(), the arrow section ofTreeNode(), the +/- buttons ofInputInt()/InputFloat(),Selectable()withImGuiSelectableFlags_SelectOnRelease. More generally: any direct use ofButtonBehavior()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*)andTreePush(const void*)functions would use an hard-coded replacement. The only situation where that change would make a meaningful difference isTreePush((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 aBeginChild()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.WantCaptureMouseUnlessPopupClosealternative toio.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 releaseio.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 ...
v1.84.2
Apologies, 1.84.1 still had issue with nested BeginDisabled()/EndDisabled() calls. What a botched release! Issuing a fix for it.
See 1.84 release notes for the full list.
All changes:
- Disabled: Fixed nested 
BeginDisabled()/EndDisabled()calls. (#211, #4452, #4453, #4462) [@Legulysse] - Backends: OpenGL3: OpenGL: Fixed ES 3.0 shader (
"#version 300 es") to use normal precision floats. Avoid wobbly rendering at HD resolutions. (#4463) [@nicolasnoble] 
v1.84.1
Apologies, 1.84 had an issue with BeginDisabled(false) (whereas BeginDisabled(true) worked correctly). Issuing a fix for it.
See 1.84 release notes for the full list.
v1.84
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!
*EDIT* Grab 1.84.1 instead for the hotfix for BeginDisabled(false)
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;
BeginDisabled()/EndDisabled()groups *EDIT* Grab 1.84.1 instead for the hotfix forBeginDisabled(false)- Tables fixes and improvements
 - Backends refactored to store their state in current context
 - Backends are reporting mouse position even when host platform window is not focused (as long as mouse not captured by another app)
 - OpenGL backends now embeds its own GL loader (#4445)
 - Countless other fixes, improvements.... details below...
 
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.)
- Commented out redirecting functions/enums names that were marked obsolete in 1.67 and 1.69 (March 2019):
ImGui::GetOverlayDrawList()-> useImGui::GetForegroundDrawList()ImFont::GlyphRangesBuilder-> useImFontGlyphRangesBuilder
 - Backends: OpenGL3: added a third source file 
imgui_impl_opengl3_loader.h. [@rokups] - Backends: GLFW: backend uses 
glfwSetCursorEnterCallback()+glfwSetWindowFocusCallback()(#3751, #4377, #2445, #4388)- If calling ImGui_ImplGlfw_InitXXX with install_callbacks=true: this is already done for you.
 - If calling ImGui_ImplGlfw_InitXXX with install_callbacks=false: you WILL NEED to register the GLFW callbacks
and forward them to the backend: - Register 
glfwSetCursorEnterCallback, forward events toImGui_ImplGlfw_CursorEnterCallback(). - Register 
glfwSetWindowFocusCallback, forward events toImGui_ImplGlfw_WindowFocusCallback(). 
 - Backends: SDL2: removed unnecessary/duplicate 
SDL_Window*parameter fromImGui_ImplSDL2_NewFrame(). (#3244) [@funchal] Kept inline redirection function (will obsolete). - Backends: SDL2: backend needs to set 
SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1")in order to receive mouse clicks events on window focus, otherwise SDL doesn't emit the event. (#3751, #4377, #2445) This is unfortunately a global SDL setting, so enabling it might have a side-effect on your application. It is unlikely to make a difference, but if your app absolutely needs to ignore the initial on-focus click: you can ignoreSDL_MOUSEBUTTONDOWNevents coming right after aSDL_WINDOWEVENT_FOCUS_GAINEDevent). - Internals: (for custom widgets): because disabled items now sets HoveredID, if you want custom widgets to not react as hovered when disabled, in the majority of use cases it is preferable to check the "hovered" return value of 
ButtonBehavior()rather thanHoveredId == id. 
All Changes
- IO: Added 
io.AddFocusEvent()api for backend to tell when host window has gained/lost focus. (#4388) [@thedmd]
If you use a custom backend, consider adding support for this! - Disabled: added 
BeginDisabled()/EndDisabled()api to create a scope where interactions are disabled. (#211)- Added 
style.DisabledAlpha(default to 0.60f) and correspondingImGuiStyleVar_DisabledAlphaenum. (#211) - Unlike the internal-and-undocumented-but-somehow-known PushItemFlag(ImGuiItemFlags_Disabled), this also alters
visuals. Currently this is done by lowering alpha of all widgets. Future styling system may do that differently. - Disabled items set HoveredId, allowing e.g. HoveredIdTimer to run. (#211, #3419) [@rokups]
 - Disabled items more consistently release ActiveId if the active item got disabled. (#211)
 - Nav: Fixed disabled items from being candidate for default focus. (#211, #787)
 - Fixed Selectable() selection not showing when disabled. (#211)
 - Fixed 
IsItemHovered()returning true on disabled item when navigated to. (#211) - Fixed 
IsItemHovered()when popping disabled state after item, or when using Selectable_Disabled. (#211) 
 - Added 
 - Windows: 
ImGuiWindowFlags_UnsavedDocument/ImGuiTabItemFlags_UnsavedDocumentdisplays a dot instead of a '*' so it
is independent from font style. When in a tab, the dot is displayed at the same position as the close button.
Added extra comments to clarify the purpose of this flag in the context of docked windows. - Tables: Added 
ImGuiTableColumnFlags_Disabledacting a master disable over (hidden from user/context menu). (#3935) - Tables: Clarified that 
TableSetColumnEnabled()requires the table to use theImGuiTableFlags_Hideableflag, because it manipulates the user-accessible show/hide state. (#3935) - Tables: Added 
ImGuiTableColumnFlags_NoHeaderLabelto requestTableHeadersRow()to not submit label for a column.
Convenient for some small columns. Name will still appear in context menu. (#4206). - Tables: Fixed columns order on 
TableSetupScrollFreeze()if previous data got frozen columns out of their section. - Tables: Fixed invalid data in 
TableGetSortSpecs()when SpecsDirty flag is unset. (#4233) - TabBar: Fixed using more than 32 KB-worth of tab names. (#4176)
 - InputInt/InputFloat: When used with Steps values and 
_ReadOnlyflag, the step button look disabled. (#211) - InputText: Fixed named filtering flags disabling newline or tabs in multiline inputs (#4409, #4410) [@kfsone]
 - Drag and Drop: drop target highlight doesn't try to bypass host clipping rectangle. (#4281, #3272)
 - Drag and Drop: Fixed using 
AcceptDragDropPayload()withImGuiDragDropFlags_AcceptNoPreviewTooltip. [@JeffM2501] - Menus: 
MenuItem()andBeginMenu()are not affected/overlapping whenstyle.SelectableTextAlignis altered. - Menus: Fixed hovering a disabled menu or menu item not closing other menus. (#211)
 - Popups: Fixed 
BeginPopup()/OpenPopup()sequence failing when there are no focused windows. (#4308) [@rokups] - Nav: Alt doesn't toggle menu layer if other modifiers are held. (#4439)
 - Fixed printf-style format checks on non-MinGW flavors. (#4183, #3592)
 - Fonts: Functions with a 
float size_pixelsparameter can accept zero if it is set inImFontSize::SizePixels. - Fonts: Prefer using 
U+FFFDcharacter for fallback instead of '?', if available. (#4269) - Fonts: Use 
U+FF0Edot character to construct an ellipsis ifU+002E'.' is not available. (#4269) - Fonts: Added 
U+FFFD("replacement character") to default Asian glyphs ranges. (#4269) - Fonts: Fixed calling ClearTexData() (clearing CPU side font data) triggering an assert in NewFrame(). (#3487)
 - DrawList: Fixed 
AddCircle()/AddCircleFilled() with auto-tesselation not using accelerated paths for small circles. FixedAddCircle()/AddCircleFilled()` with 12 segments which had a broken edge. (#4419, #4421) [@thedmd] - Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if 
IMGUI_DISABLE_METRICS_WINDOWis not set. (#4171)
Normally the right way to disable compiling the demo is to setIMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid
implying that the file is required. - Metrics: Fixed a crash when inspecting the individual draw command of a foreground drawlist. [@rokups]
 - Backends: Reorganized most backends (Win32, SDL, GLFW, OpenGL2/3, DX9/10/11/12, Vulkan, Allegro) to pull their
data from a single structure stored inside the main Dear ImGui context. This facilitate/allow usage of standard
backends with multiple-contexts BUT is only partially tested and not well supported. It is generally advised to
instead use the multi-viewports feature of docking branch where a single Dear ImGui context can be used across
multiple windows. (#586, #1851, #2004, #3012, #3934, #4141) - Backends: Win32: Rework to handle certain Windows 8.1/10 features without a manifest. (#4200, #4191)
ImGui_ImplWin32_GetDpiScaleForMonitor()will handle per-monitor DPI on Windows 10 without a manifest.ImGui_ImplWin32_EnableDpiAwareness()will callSetProcessDpiAwareness()fallback on Windows 8.1 without a manifest.
 - Backends: Win32: IME functions are disabled by default for non-Visual Studio compilers (MinGW etc.). Enable with
#define IMGUI_ENABLE_WIN32_DEFAULT_IME_FUNCTIONSfor those compilers. Undo change... 
v1.83
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 e.g. regression tests.
Special thanks to @PathogenDavid for helping with github answers. For a treat read the amazing story that unfolded in #4029 !
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard.
 - Also recently supported by Adobe and O-Net Communications (USA).
 
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;
- This is a general maintenance release.
 - Various Keyboard/Gamepad Navigation fixes.
 - Various programmatic scrolling fixes.
 - Tables share more of their allocations.
 - Dozens of other additions, fixes and optimizations.
 
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.)
- Backends: Obsoleted direct access to 
ImDrawCmd::TextureIdin favor of callingImDrawCmd::GetTexID(). (#3761) [@thedmd]- If you are using official backends from the source tree: you have nothing to do.
 - If you copied old backend code or using your own: change access to 
draw_cmd->TextureIdtodraw_cmd->GetTexID(). 
 - Why are we doing this?
- This change will be required in the future when adding support for incremental texture atlas updates.
 - Please note this won't break soon, but we are making the change ahead of time.
 
 
All Changes
- Scrolling: Fix scroll tracking with e.g. 
SetScrollHereX()/SetScrollHereY()whenWindowPadding < ItemSpacing. - Scrolling: Fix scroll snapping on edge of scroll region when both scrollbars are enabled.
 - Scrolling: Fix mouse wheel axis swap when using SHIFT on macOS (system already does it). (#4010)
 - Window: Fix 
IsWindowAppearing()from returning true twice in most cases. (#3982, #1497, #1061) - Nav: Fixed toggling menu layer while an 
InputText()is active not stealing active id. (#787) - Nav: Fixed pressing Escape to leave menu layer while in a popup or child window. (#787)
 - Nav, InputText: Fixed accidental menu toggling while typing non-ascii characters using AltGR. [@rokups] (#370)
 - Nav: Fixed using 
SetItemDefaultFocus()on windows with_NavFlattenedflag. (#787) - Nav: Fixed Tabbing initial activation from skipping the first item if it is tabbable through. (#787)
 - Nav: Fixed fast CTRL+Tab (where keys are only held for one single frame) from properly enabling the menu layer of target window if it doesn't have other active layers.
 - Tables: Expose 
TableSetColumnEnabled()in public api. (#3935) - Tables: Better preserve widths when columns count changes. (#4046)
 - Tables: Sharing more memory buffers between tables, reducing general memory footprints. (#3740)
 - TabBar: Fixed mouse reordering with very fast movements (e.g. crossing multiple tabs in a single frame and then immediately standing still (would only affect automation/bots). [@rokups]
 - Menus: made 
MenuItem()in a menu bar reflect the 'selected' argument with a highlight. (#4128) [@mattelegende] - Drags, Sliders, Inputs: Specifying a NULL format to Float functions default them to 
"%.3f"to be consistent with the compile-time default. (#3922) - DragScalar: Add default value for 
v_speedargument to match higher-level functions. (#3922) [@eliasdaler] - ColorEdit4: Alpha default to 255 (instead of 0) when omitted in hex input. (#3973) [@squadack]
 - InputText: Do not filter private unicode codepoints (e.g. icons) when pasted from clipboard. (#4005) [@dougbinks]
 - InputText: Align caret/cursor to pixel coordinates. (#4080) [@elvissteinjr]
 - InputText: Fixed CTRL+Arrow or OSX double-click leaking the presence of spaces when 
ImGuiInputTextFlags_Password
is used. (#4155, #4156) [@michael-swan] - LabelText: Fixed clipping of multi-line value text when label is single-line. (#4004)
 - LabelText: Fixed vertical alignment of single-line value text when label is multi-line. (#4004)
 - Combos: Changed the combo popup to use a different id to also using a context menu with the default item id. Fixed using 
BeginPopupContextItem()with no parameter after a combo. (#4167) - Popups: Added 
OpenPopup(ImGuiID id)overload to facilitate calling from nested stacks. (#3993, #331) [@zlash] - Tweak computation of 
io.Framerateso it is less biased toward high-values in the first 120 frames. (#4138) - Optimization: Disabling some of MSVC most aggressive Debug runtime checks for some simple/low-level functions
(e.g. ImVec2, ImVector) leading to a 10-20% increase of performances with MSVC "default" Debug settings. - ImDrawList: Add and use SSE-enabled 
ImRsqrt()in place of1.0f / ImSqrt(). (#4091) [@wolfpld] - ImDrawList: Fixed/improved thickness of thick strokes with sharp angles. (#4053, #3366, #2964, #2868, #2518, #2183) Effectively introduced a regression in 1.67 (Jan 2019), and a fix in 1.70 (Apr 2019) but the fix wasn't actually on par with original version. Now incorporating the correct revert.
 - ImDrawList: Fixed 
PathArcTo()regression from 1.82 preventing use of counter-clockwise angles. (#4030, #3491) [@thedmd] - Demo: Improved popups demo and comments.
 - Metrics: Added "Fonts" section with same information as available in 
"Style Editor">"Fonts". - Backends: SDL: Rework global mouse pos availability check listing supported platforms explicitly, effectively fixing mouse access on Raspberry Pi. (#2837, #3950) [@lethal-guitar, @hinxx]
 - Backends: Win32: Clearing keyboard down array when losing focus (WM_KILLFOCUS). (#2062, #3532, #3961)
[@1025798851] - Backends: OSX: Fix keys remaining stuck when CMD-tabbing to a different application. (#3832) [@rokups]
 - Backends: DirectX9: calling 
IDirect3DStateBlock9::Capture()afterCreateStateBlock()which appears to workaround/fix state restoring issues. Unknown exactly why so, bit of a cargo-cult fix. (#3857) - Backends: DirectX9: explicitly setting up more graphics states to increase compatibility with unusual non-default states. (#4063)
 - Backends: DirectX10, DirectX11: fixed a crash when backing/restoring state if nothing is bound when entering the rendering function. (#4045) [@Nemirtingas]
 - Backends: GLFW: Adding bound check in KeyCallback because GLFW appears to send -1 on some setups. [#4124]
 - Backends: Vulkan: Fix mapped memory Vulkan validation error when buffer sizes are not multiple of 
VkPhysicalDeviceLimits::nonCoherentAtomSize. (#3957) [@AgentX1994] - Backends: WebGPU: Update to latest specs (Chrome Canary 92 and Emscripten 2.0.20). (#4116, #3632) [@bfierz, @Kangz]
 - Backends: OpenGL3: Don't try to read 
GL_CLIP_ORIGINunless we're OpenGL 4.5. (#3998, #2366, #2186) [@s7jones] - Examples: OpenGL: Add OpenGL ES 2.0 support to modern GL examples. (#2837, #3951) [@lethal-guitar, @hinxx]
 - Examples: Vulkan: Rebuild swapchain on 
VK_SUBOPTIMAL_KHR. (#3881) - Examples: Vulkan: Prefer using discrete GPU if there are more than one available. (#4012) [@rokups]
 - Examples: SDL2: Link with 
shell32.librequired bySDL2main.libsince SDL 2.0.12. [#3988] - Examples: Android: Make Android example build compatible with Gradle 7.0. (#3446)
 - Docs: Improvements to description of using colored glyphs/emojis. (#4169, #3369)
 - Docs: Improvements to minor mistakes in documentation comments (#3923) [@ANF-Studios]
 
Other branches & Beta features!
Also see previous release notes such as 1.80.
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.82 to 1.83 related to the docking branch (multi-viewport and docking features) include:
- [Breaking] Removed 
io.ConfigDockingWithShiftconfig option. Behavior always equivalent to having the option set to false (dock/undock by default, hold shift to avoid docking). (#2109) - Docking: 
DockSpace()returns its node ID. - Docking: 
Dockspace()never draws a background. (#3924) - Docking: Undocking nodes/windows covering most of the monitor max their size down to 90% to ease manipulations.
 - Docking: Docking node tab bar honors 
ItemInnerSpacing.xbefore first tab. (#4130) - Docking: Tweak rendering and alignment of dock node menu marker. (#4130)
 - Docking: Fixed restoring of tab order within a dockspace or a split node.
 - Docking: Fixed reappearing docked windows with no close button showing a tab with extraneous space for one frame.
 - Docking: Fixed multiple simultaneously reappearing window from appearing undocked for one frame.
 - Viewports: Hotfix for crash in monitor array access, caused by 4b9bc49. (#3967)
 - Backends, Viewports: ...
 
v1.82
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
Discussions: https://github.com/ocornut/imgui/discussions
Did you know? We have a Wiki!
It has sections such as this Useful Widgets gallery! 👌
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard.
 - Also recently supported by Aras Pranckevičius, Kylotonn, and more.
 
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;
- This is a general maintenance release.
 - Arcs and rounded corners are now auto-tessellated, including the "fast" paths for rounded rectangles.
 - Improved/fixes old API technical debt, getting rid of more bools.
 - Fixes for various edge cases formatting features in Drags/Sliders.
 - Backends: Native Android backend + example.
 - Backends: Consistently fixed handling of framebuffer transparency in all backends.
 - Backends: DX9: Fix for colored glyphes.
 - Helper scripts for popular debuggers.
 - Dozens of other small additions and fixes.
 
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 redirecting functions/enums names that were marked obsolete in 1.66 (September 2018):
ImGui::SetScrollHere()-->use ImGui::SetScrollHereY()
 - ImDrawList: upgraded 
AddPolyline()/PathStroke()sbool closedparameter to useImDrawFlags flags.bool closed = false--> useImDrawFlags_None, or 0bool closed = true--> useImDrawFlags_Closed(guaranteed to always stay == 1 in the future).
Difference may not be noticeable for most but zealous type-checking tools may report a need to change.
 - ImDrawList: upgraded 
AddRect(),AddRectFilled(),PathRect()to useImDrawFlagsinstead ofImDrawCornersFlags.ImDrawCornerFlags_TopLeft--> useImDrawFlags_RoundCornersTopLeftImDrawCornerFlags_BotRight--> useImDrawFlags_RoundCornersBottomRightImDrawCornerFlags_None--> useImDrawFlags_RoundCornersNoneetc.
Flags now sanely defaults to 0 instead of 0x0F, consistent with all other flags in the API.
IMPORTANT: The default with rounding > 0.0f is now "round all corners" vs old implicit "round no corners":- rounding == 0.0f + flags == 0 --> meant no rounding --> unchanged (common use)
 - rounding > 0.0f + flags != 0 --> meant rounding --> unchanged (common use)
 - rounding == 0.0f + flags != 0 --> meant no rounding --> unchanged (unlikely use)
 - rounding  > 0.0f + flags == 0 --> meant no rounding  --> BREAKING (unlikely use)!
- this ONLY matters for hardcoded use of 0 with rounding > 0.0f.
 - fix by using named 
ImDrawFlags_RoundCornersNoneor rounding == 0.0f! - this is technically the only real breaking change which we can't solve automatically (it's also uncommon).
The oldImDrawCornersFlagsused awkward default values of ~0 or 0xF (4 lower bits set) to signify "round all corners" and we sometimes encouraged using them as shortcuts. As a result the legacy path still support use of hardcoded~0or any value from0x1or0xF. They will behave the same with legacy paths enabled (will assert otherwise). Courtesy of legacy untangling commity: [@rokups, @ocornut, @thedmd] 
 
 - ImDrawList: clarified that 
PathArcTo()/PathArcToFast()won't render with radius < 0.0f. Previously it sorts of accidentally worked but would lead to counter-clockwise paths which and have an effect on anti-aliasing. - InputText: renamed 
ImGuiInputTextFlags_AlwaysInsertModetoImGuiInputTextFlags_AlwaysOverwrite, old name was an incorrect description of behavior. Was ostly used by memory editor. Kept inline redirection function. (#2863) - Moved 
misc/natvis/imgui.natvistomisc/debuggers/imgui.natvisas we will provide scripts for other debuggers. - Style: renamed rarely used 
style.CircleSegmentMaxError(old default = 1.60f) tostyle.CircleTessellationMaxError(new default = 0.30f) as its meaning changed. (#3808) [@thedmd] - Win32+MinGW: Re-enabled IME functions by default even under MinGW. In July 2016, issue #738 had me incorrectly disable those default functions for MinGW. MinGW users should: either link with -limm32, either set their imconfig file with '#define IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS'. (#2590, #738) [@actboy168]
 - Backends: Win32: Pragma linking with dwmapi.lib (Vista-era, ~9 kb). MinGW users will need to link with -ldwmapi.
 
All Changes
- Window, Nav: Fixed crash when calling 
SetWindowFocus(NULL)at the same time a new window appears. (#3865) [@nem0] - Window: Shrink close button hit-testing region when it covers an abnormally high portion of the window visible area (e.g. when window is collapsed + moved in a corner) to facilitate moving the window away. (#3825)
 - Nav: Various fixes for losing gamepad/keyboard navigation reference point when a window reappears or when it appears while gamepad/keyboard are not being used. (#787)
 - Drags: Fixed crash when using 
DragScalar()directly (not via common wrapper like DragFloat() etc.) withImGuiSliderFlags_AlwaysClamp+ only one of either p_min or p_max set. (#3824) [@harry75369] - Drags, Sliders: Fixed a bug where editing value would use wrong number if there were digits right after format specifier (e.g. using "%f123" as a format string). [@rokups]
 - Drags, Sliders: Fixed a bug where using custom formatting flags (',$,_) supported by 
stb_sprintf.hwould cause incorrect value to be displayed. (#3604) [@rokups] - Drags, Sliders: Support 
ImGuiSliderFlags_Logarithmicflag with integers. Because why not? (#3786) - Tables: Fixed unaligned accesses when using 
TableSetBgColor(ImGuiTableBgTarget_CellBg). (#3872) - IsItemHovered(): fixed return value false positive when used after 
EndChild(),EndGroup()or widgets using either of them, when the hovered location is located within a child window, e.g.InputTextMultiline(). This is intended to have no side effects, but brace yourself for the possible comeback.. (#3851, #1370) - Drag and Drop: can use 
BeginDragDropSource()for other than the left mouse button as long as the item has an ID (for ID-less items will add new functionalities later). (#1637, #3885) - Misc: Added 
GetAllocatorFunctions()to facilitate sharing allocators across DLL boundaries. (#3836) - ImFontAtlas: Added 
bool TexPixelsUseColorsoutput to help backend decide of underlying texture format. (#3369) This can currently only ever be set by the Freetype renderer. - imgui_freetype: Added 
ImGuiFreeTypeBuilderFlags_Bitmapflag to request Freetype loading bitmap data. This may have an effect on size and must be called with correct size values. (#3879) [@metarutaiga] - ImDrawList: 
PathArcTo()now supportsint num_segments = 0(new default) and adaptively tessellate.
The adaptive tessellation uses look up tables, tends to be faster than old PathArcTo() while maintaining quality for large arcs (tessellation quality derived fromstyle.CircleTessellationMaxError) (#3491) [@thedmd] - ImDrawList: PathArcToFast() also adaptively tesselate efficiently. This means that large rounded corners in e.g. hi-dpi settings will generally look better. (#3491) [@thedmd]
 - ImDrawList: AddCircle, AddCircleFilled(): Tweaked default segment count calculation to honor MaxError with more accuracy. Made default segment count always even for better looking result. (#3808) [@thedmd]
 - Misc: Added debuggers/imgui.gdb and debuggers/imgui.natstepfilter (along with existing debuggers/imgui.natvis scripts to configure popular debuggers into skipping trivial functions when using StepInto. [@rokups]
 - Backends: Android: Added native Android backend. (#3446) [@duddel]
 - Backends: Win32: Added 
ImGui_ImplWin32_EnableAlphaCompositing()to facilitate experimenting with alpha compositing and transparent windows. (#2766, #3447 etc.). - Backends: OpenGL, Vulkan, DX9, DX10, DX11, DX12, Metal, WebGPU, Allegro: Rework blending equation to preserve alpha in output buffer (using SrcBlendAlpha = ONE, DstBlendAlpha = ONE_MINUS_SRC_ALPHA consistently across all backends), facilitating compositing of the output buffer with another buffer. (#2693, #2764, #2766, #2873, #3447, #3813, #3816) [@ocornut, @thedmd, @ShawnM427, @Ubpa, @aiekick]
 - Backends: DX9: Fix to support IMGUI_USE_BGRA_PACKED_COLOR. (#3844) [@Xiliusha]
 - Backends: DX9: Fix to support colored glyphs, using newly introduced 'TexPixelsUseColors' info. (#3844)
 - Examples: Android: Added Android + GL ES3 example. (#3446) [@duddel]
 - Examples: Reworked setup of clear color to be compatible with transparent values.
 - CI: Use a dedicated "scheduled" workflow to trigger scheduled builds. Forks may disable this workflow if scheduled buil...
 
v1.81
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/
Discord server: https://discord.dearimgui.org
Issues and support: https://github.com/ocornut/imgui/issues
Did you know? We have a Wiki!
It has sections such as this Useful Widgets gallery! 👌
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard + another unnamed benefactor.
 - Also recently supported by Aras Pranckevičius, Kylotonn, RAD Game Tools, Arkane Studios, and more.
 
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;
- Renamed the old and inconsistent flexible ListBox helpers to be in line with our typical API.
 - Simplified integration of imgui_freetype.
 - Added 
GetMainViewport()as a way to access Platform/Host Window information (and later Platform Monitor). - Added partial support for colored font glyph in imgui_freetype (courtesy of @pshurgal).
 - Fixed a Tables bug in 1.80 when using multi-components widgets.
 - Experimental WebGPU renderer backend (courtesy of @bfierz).
 - Win32 backends load XInput dynamically (courtesy of [@Demonese])
 - Docking and Viewports fixes.
 - Dozens of other additions and fixes.
 
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.)
- ListBox helpers:
- Renamed 
ListBoxHeader(const char* label, ImVec2 size)toBeginListBox(). - Renamed 
ListBoxFooter()toEndListBox(). - Removed 
ListBoxHeader(const char* label, int items_count, int height_in_items = -1)in favor of specifying size. In the redirection function, made vertical padding consistent regardless ofitems_count <= height_in_itemsor not. - Kept inline redirection function for all threes (will obsolete).
 
 - Renamed 
 - imgui_freetype:
- We refactored some of imgui_freetype to make integration easier (a simple 
#define IMGUI_ENABLE_FREETYPEin your config file does the job for most users) and also to fix some inconsistencies. The majority of imgui_freetyoe users shouldn't be affected as the RasterizerFlags were rarely used. - Removed 
ImGuiFreeType::BuildFontAtlas(). Kept inline redirection function.
Prefer using#define IMGUI_ENABLE_FREETYPE, but there's a runtime selection path available too. - The shared extra flags parameters (very rarely used) are now stored in 
ImFontAtlas::FontBuilderFlags. - Renamed 
ImFontConfig::RasterizerFlags(used by FreeType) toImFontConfig::FontBuilderFlags. - Renamed 
ImGuiFreeType::XXXflags toImGuiFreeTypeBuilderFlags_XXXfor consistency with other API. 
 - We refactored some of imgui_freetype to make integration easier (a simple 
 
All Changes
- Tables: Fixed 
PopItemWidth()or multi-components items not restoring per-colum ItemWidth correctly. (#3760) - Viewports Added 
ImGui::GetMainViewport()as a way to get the bounds and work area of the host display. (#3789, #1542)- In 
masterbranch or without multi-viewports feature enabled:GetMainViewport()->Posis always== (0,0)GetMainViewport()->Sizeis always== io.DisplaySize
 - In 
dockingbranch and with the multi-viewports feature enabled:GetMainViewport()will return information from your host Platform Window.- In the future, we will support a "no main viewport" mode and this may return bounds of your main monitor.
 
 - For forward compatibility with multi-viewports/multi-monitors:
- Code using (0,0) as a way to signify "upper-left of the host window" should use 
GetMainViewport()->Pos. - Code using 
io.DisplaySizeas a way to signify "size of the host window" should useGetMainViewport()->Size. 
 - Code using (0,0) as a way to signify "upper-left of the host window" should use 
 - We are also exposing a work area in 
ImGuiViewport(WorkPos,WorkSizevsPos,Sizefor full area):- For a Platform Window, the work area is generally the full area minus space used by menu-bars.
 - For a Platform Monitor, the work area is generally the full area minus space used by task-bars.
 
 - All of this has been the case in 'docking' branch for a long time. What we've done is merely merging
a small chunk of the multi-viewport logic into 'master' to standardize some concepts ahead of time. 
 - In 
 - Window: Fixed minor title bar text clipping issue when 
FramePaddingis small/zero and there are no close button in the window. (#3731) - SliderInt: Fixed click/drag when 
v_min==v_maxfrom setting the value to zero. (#3774) [@erwincoumans] Would also repro with DragFloat() when usingImGuiSliderFlags_Logarithmicwith v_min==v_max. - Menus: Fixed an issue with child-menu auto sizing (issue introduced in 1.80 on 2021/01/25) (#3779)
 - InputText: Fixed slightly off ScrollX tracking, noticeable with large values of 
FramePadding.x. (#3781) - InputText: Multiline: Fixed padding/cliprect not precisely matching single-line version. (#3781)
 - InputText: Multiline: Fixed 
FramePadding.yworth of vertical offset when aiming with mouse. - ListBox: Tweaked default height calculation.
 - Fonts: imgui_freetype: Facilitated using FreeType integration: [@Xipiryon, @ocornut]
- Use 
#define IMGUI_ENABLE_FREETYPEin imconfig.h should make it work with no other modifications other than compiling misc/freetype/imgui_freetype.cpp and linking with FreeType. - Use 
#define IMGUI_ENABLE_STB_TRUETYPEif you somehow need the stb_truetype rasterizer to be compiled in along with the FreeType one, otherwise it is enabled by default. 
 - Use 
 - Fonts: imgui_freetype: Added support for colored glyphs as supported by Freetype 2.10+ (for .ttf using CPAL/COLR
tables only). Enable theImGuiFreeTypeBuilderFlags_LoadColoron a given font. Atlas always output directly as RGBA8 in this situation. Likely to make sense withIMGUI_USE_WCHAR32. (#3369) [@pshurgal] - Fonts: Fixed 
CalcTextSize()width rounding so it behaves more like a ceil. This is in order for text wrapping to have enough space when provided width precisely calculated withCalcTextSize().x. (#3776). Note that the rounding of either positions and widths are technically undesirable (e.g. #3437, #791) but variety of code is currently on it so we are first fixing current behavior before we'll eventually change it. - Log/Capture: Fix various new line/spacing issue when logging widgets. [@Xipiryon, @ocornut]
 - Log/Capture: Improved the ASCII look of various widgets, making large dumps more easily human readable.
 - ImDrawList: Fixed 
AddCircle()/AddCircleFilled()with (rad > 0.0f && rad < 1.0f && num_segments == 0). (#3738) Would lead to a buffer read overflow. - ImDrawList: Clarified 
PathArcTo()need for a_min <= a_max with an assert. - ImDrawList: Fixed 
PathArcToFast()handling of a_min > a_max. - Metrics: Back-ported "Viewports" debug visualizer from 
dockingbranch. - Demo: Added 
Examples->Fullscreen Windowdemo usingGetMainViewport()values. (#3789) - Demo: 
Simple Overlaydemo now moves under main menu-bar (if any) usingGetMainViewport()'s work area. - Backends: Win32: Dynamically loading XInput DLL instead of linking with it, facilitate compiling with old WindowSDK versions or running on Windows 7. (#3646, #3645, #3248, #2716) [@Demonese]
 - Backends: Vulkan: Add support for custom Vulkan function loader and 
VK_NO_PROTOTYPES. (#3759, #3227) [@Hossein-Noroozpour]. User needs to callImGui_ImplVulkan_LoadFunctions()with their custom loader prior to other functions. - Backends: Metal: Fixed texture storage mode when building on Mac Catalyst. (#3748) [@Belinsky-L-V]
 - Backends: OSX: Fixed mouse position not being reported when mouse buttons other than left one are down. (#3762) [@rokups]
 - Backends: WebGPU: Added enderer backend for WebGPU support (imgui_impl_wgpu.cpp) (#3632) [@bfierz] Please note that WebGPU is currently experimental, will not run on non-beta browsers, and may break.
 - Examples: WebGPU: Added Emscripten+WebGPU example. (#3632) [@bfierz]
 - Backends: GLFW: Added 
ImGui_ImplGlfw_InitForOther()initialization call to use with non OpenGL API. (#3632) 
Other branches & Beta features!
Also see previou release notes such as 1.80.
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.80 to 1.81 related to the docking branch (multi-viewport and docking features) include:
- Docking: Fix losing docking information on closed windows for which the hosting node was split. (#3716) [@GamingMinds-DanielC]
 - Docking: Fix gap in hit test hole when using ImGuiDockNo...
 
v1.80
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!
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, links, extensions etc.
FAQ: https://www.dearimgui.org/faq/
Discord server: https://discord.dearimgui.org
Issues and support: https://github.com/ocornut/imgui/issues
Did you know? We have a Wiki! It is a bit clunky but has sections such as this Useful Widgets gallery!
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard + another unnamed benefactor.
 - Also recently supported by Kylotonn, RAD Game Tools, Arkane Studios, and more.
 
Huge thank you to all past and present supporters! Tables have been a LONG time in the making (since early 2019).
Dear ImGui is funded by your contributions and really needs them right now.
If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.
TABLES
Finally Tables are merged in master!
Please note the Tables API is still in Beta. What it means is we are sliiiightly more likely than usual to make small changes to the API. If we do they'll be cautious, documented, with redirecting helpers, as usual. If you update to 1.80, consider updating (later) to 1.81 and 1.82 to make sure you catch up with those future changes sooner rather than later.
Important: If you used the Tables branch before 1.80, it is strongly suggested that you update today as we make several breaking changes to the API in the second half of 2020.
Absurdly tall screenshot:
(using font: NotoSans-Regular.ttf at 16.0f size, rendered with imgui_freetype.
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.)
- Added 
imgui_tables.cppfile! Manually constructed project files will need the new file added! (#3740) - Backends: moved all backends files (
imgui_impl_XXXX.cpp,imgui_impl_XXXX.h) from examples/ to backends/. (#3513) - Renamed 
ImDrawList::AddBezierCurve()toImDrawList::AddBezierCubic(). Kept inline redirection function (will obsolete). - Renamed 
ImDrawList::PathBezierCurveTo()toImDrawList::PathBezierCubicCurveTo(). Kept inline redirection function (will obsolete). - Removed redirecting functions/enums names that were marked obsolete in 1.60 (April 2018):
io.RenderDrawListsFnpointer -> useImGui::GetDrawData()value and call the render function of your backendImGui::IsAnyWindowFocused()-> useImGui::IsWindowFocused(ImGuiFocusedFlags_AnyWindow)ImGui::IsAnyWindowHovered()-> useImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow)ImGuiStyleVar_Count_-> useImGuiStyleVar_COUNTImGuiMouseCursor_Count_-> useImGuiMouseCursor_COUNT
 - Removed redirecting functions/enums names that were marked obsolete in 1.61 (May 2018):
InputFloat (... int decimal_precision ...)-> useInputFloat(... const char* format ...)withformat = "%.Xf"where X was value for decimal_precision.- same for 
InputFloat2()/InputFloat3()/InputFloat4()variants taking aint decimal_precisionparameter. 
 - Removed redirecting functions/enums names that were marked obsolete in 1.63 (August 2018):
ImGui::IsItemDeactivatedAfterChange()-> useImGui::IsItemDeactivatedAfterEdit()ImGuiCol_ModalWindowDarkening-> useImGuiCol_ModalWindowDimBgImGuiInputTextCallback-> useImGuiTextEditCallbackImGuiInputTextCallbackData-> useImGuiTextEditCallbackData
 - Internals: Columns: renamed undocumented/internals 
ImGuiColumnsFlags_*toImGuiOldColumnFlags_*to reduce confusion with Tables API. Keep redirection enums (will obsolete). (#125, #513, #913, #1204, #1444, #2142, #2707) - Renamed 
io.ConfigWindowsMemoryCompactTimertoio.ConfigMemoryCompactTimeras the feature now applies to other data structures. (#2636) 
All Changes
- Tables: added new Tables Beta API as a replacement for old Columns. (#3740, #2957, #125)
Check out `Demo->Tables for many demos.
Read API comments in imgui.h for details. Read extra commentary in imgui_tables.cpp.- Added 16 functions:
BeginTable(),EndTable()TableNextRow(),TableNextColumn(),TableSetColumnIndex()TableSetupColumn(),TableSetupScrollFreeze()TableHeadersRow(),TableHeader()TableGetRowIndex(),TableGetColumnCount(),TableGetColumnIndex(),TableGetColumnName(),TableGetColumnFlags()TableGetSortSpecs(),TableSetBgColor()
 - Added 3 flags sets:
ImGuiTableFlags(29 flags for: features, decorations, sizing policies, padding, clipping, scrolling, sorting etc.)ImGuiTableColumnFlags(24 flags for: width policies, default settings, sorting options, indentation options etc.)ImGuiTableRowFlags(1 flag for: header row)
 - Added 2 structures: 
ImGuiTableSortSpecs,ImGuiTableColumnSortSpecs - Added 2 enums: 
ImGuiSortDirection,ImGuiTableBgTarget - Added 1 style variable: 
ImGuiStyleVar_CellPadding - Added 5 style colors: 
ImGuiCol_TableHeaderBg,ImGuiCol_TableBorderStrong,ImGuiCol_TableBorderLight,ImGuiCol_TableRowBg,ImGuiCol_TableRowBgAlt. 
 - Added 16 functions:
 - Tab Bar: Made it possible to append to an existing tab bar by calling 
BeginTabBar()/EndTabBar()again. - Tab Bar: Fixed using more than 128 tabs in a tab bar (scrolling policy recommended).
 - Tab Bar: Do not display a tooltip if the name already fits over a given tab. (#3521)
 - Tab Bar: Fixed minor/unlikely bug skipping over a button when scrolling left with arrows.
 - Tab Bar: Requested ideal content size (for auto-fit) doesn't affect horizontal scrolling. (#3414)
 - Drag and Drop: Fix losing drop source Active ID (and often source tooltip) when opening a 
TreeNode()orCollapsingHeader()while dragging. (#1738) - Drag and Drop: Fix drag and drop to tie same-size drop targets by chosen the later one. Fixes dragging
into a full-window-sized dockspace inside a zero-padded window. (#3519, #2717) [@Black-Cat] - Checkbox: Added 
CheckboxFlags()helper withint*type (internals have a template version, not exposed). - Clipper: Fixed incorrect end-list positioning when using 
ImGuiListClipperwith 1 item (bug in 1.79). (#3663) [@nyorain] - InputText: Fixed updating cursor/selection position when a callback altered the buffer in a way where the byte count is unchanged but the decoded character count changes. (#3587) [@gqw]
 - InputText: Fixed switching from single to multi-line while preserving same ID.
 - Combo: Fixed using 
IsItemEdited()after Combo() not matching the return value from Combo(). (#2034) - DragFloat, DragInt: very slightly increased mouse drag threshold + expressing it as a factor of default value.
 - DragFloat, DragInt: added experimental 
io.ConfigDragClickToInputTextfeature to enable turning DragXXX widgets into text input with a simple mouse click-release (without moving). (#3737) - Nav: Fixed 
IsItemFocused()from returning false when Nav highlight is hidden because mouse has moved. It's essentially been always the case but it doesn't make much sense. Instead we will aim at exposing feedback and control of keyboard/gamepad navigation highlight and mouse hover disable flag. (#787, #2048) - Metrics: Fixed mishandling of 
ImDrawCmd::VtxOffsetin wireframe mesh renderer. - Metrics: Rebranded as "Dear ImGui Metrics/Debugger" to clarify its purpose.
 - ImDrawList: Added 
ImDrawList::AddQuadBezierCurve(),ImDrawList::PathQuadBezierCurveTo()quadratic bezier helpers. (#3127, #3664, #3665) [@aiekick] - Fonts: Updated 
GetGlyphRangesJapanese()to include a larger 2999 ideograms selection of Joyo/Jinmeiyo kanjis, from the previous 1946 ideograms selection. This will consume a some more memory but be generally much more fitting for Japanese display, until we switch to a more dynamic atlas. (#3627) [@vaiorabbit] <- Literally the best-ever pull-request created by mankind. - Log/Capture: fix capture to work on clipped child windows.
 - Misc: Made the 
ItemFlagsstack shared, so effectively theButtonRepeat/AllowKeyboardFocusstates (and others exposed in internals such as PushItemFlag) are inherited by stacked Begin/End pairs, vs previously a non-child stacked Begin() would reset those flags back to zero for the stacked window. - Misc: Replaced UTF-8 decoder with one based on branchless one by Christopher Wellons. [@rokups] Super minor fix handling incomplete UTF-8 contents: if input does not contain enough bytes, decoder returns IM_UNICODE_CODEPOINT_INVALID and consume remaining bytes (vs old decoded consumed only 1 byte).
 - Misc: Fix format warnings when using gnu printf extensions in a setup that supports them (gcc/mingw). (#3592)
 - Misc: Made 
EndFrame()assertion for key modifiers being unchanged during the frame (added in 1.7... 
v1.79
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!
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, links, extensions etc.
FAQ: https://www.dearimgui.org/faq/
Discord server: https://discord.dearimgui.org
Issues and support: https://github.com/ocornut/imgui/issues
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard, Ubisoft, Nvidia, Google
 - Also recently supported by Activision, Arkane Studios, RAD Game Tools, Grinding Gear Games and more.
 
We are transitioning toward a B2B model to sustain, maintain and grow this project. If your company uses Dear ImGui, consider reaching out. See Sponsors page for details.
Huge thank you to all past and present supporters!
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.)
- Fonts: Removed 
ImFont::DisplayOffsetin favor ofImFontConfig::GlyphOffset. DisplayOffset was applied after scaling and not very meaningful/useful outside of being needed by the default ProggyClean font. It was also getting in the way of better font scaling, so let's get rid of it now! If you used DisplayOffset it was probably in association to rasterizing a font at a specific size, in which case the corresponding offset may be reported into GlyphOffset. If you scaled this value after calling AddFontDefault(), this is now done automatically. (#1619) - ImGuiListClipper: Renamed constructor parameters which created an ambiguous alternative to using the 
ImGuiListClipper::Begin()function, with misleading edge cases. Always useImGuiListClipper::Begin()! Kept inline redirection function (will obsolete). Note: imgui_memory_editor in version 0.40 from imgui_club used this old clipper API. Update your copy if needed. - Style: Renamed 
style.TabMinWidthForUnselectedCloseButtontostyle.TabMinWidthForCloseButton. - Renamed 
ImGuiSliderFlags_ClampOnInputtoImGuiSliderFlags_AlwaysClamp. Kept redirection enum (will obsolete). - Renamed 
OpenPopupContextItem()back toOpenPopupOnItemClick(), REVERTED CHANGE FROM 1.77. For variety of reason this is more self-explanatory and less error-prone. Kept inline redirection function (will obsolete). - Removed return value from 
OpenPopupOnItemClick()- returned true on mouse release on item - because it is inconsistent with other popups API and makes others misleading. It's also and unnecessary: you can useIsWindowAppearing()afterBeginPopup()for a similar result. 
Other Changes
- Window: Fixed using non-zero pivot in 
SetNextWindowPos()when the window is collapsed. (#3433) - Nav: Fixed navigation resuming on first visible item when using gamepad. [@rokups]
 - Nav: Fixed using Alt to toggle the Menu layer when inside a Modal window. (#787)
 - Scrolling: Fixed 
SetScrollHere()functions edge snapping when called during a frame where ContentSize is changing (issue introduced in 1.78). (#3452). - InputText: Added support for Page Up/Down in 
InputTextMultiline(). (#3430) [@Xipiryon] - InputText: Added selection helpers in 
ImGuiInputTextCallbackData(). - InputText: Added 
ImGuiInputTextFlags_CallbackEditto modify internally owned buffer after an edit (note that InputText() already returns true on edit, the callback is useful mainly to manipulate the underlying buffer while focus is active). - InputText: Fixed using 
ImGuiInputTextFlags_PasswordwithInputTextMultiline(). It is a rather unusual or useless combination of features but no reason it shouldn't work! (#3427, #3428) - InputText: Fixed minor scrolling glitch when erasing trailing lines in 
InputTextMultiline(). - InputText: Fixed cursor being partially covered after using CTRL+End key.
 - InputText: Fixed callback's helper 
DeleteChars()function when cursor is inside the deleted block. (#3454) - InputText: Made pressing Down arrow on the last line when it doesn't have a carriage return not move to the end of the line (so it is consistent with Up arrow, and behave same as Notepad and Visual Studio. Note that some other text editors instead would move the cursor to the end of the line). [@Xipiryon]
 - Tab Bar: Added 
TabItemButton()to submit tab that behave like a button. (#3291) [@Xipiryon] - Tab Bar: Added 
ImGuiTabItemFlags_LeadingandImGuiTabItemFlags_Trailingflags to position tabs or button at either end of the tab bar. Those tabs won't be part of the scrolling region, and when reordering cannot be moving outside of their section. Most often used withTabItemButton(). (#3291) [@Xipiryon] - Tab Bar: Added 
ImGuiTabItemFlags_NoReorderflag to disable reordering a given tab. - Tab Bar: Keep tab item close button visible while dragging a tab (independent of hovering state).
 - Tab Bar: Fixed a small bug where closing a tab that is not selected would leave a tab hole for a frame.
 - Tab Bar: Fixed a small bug where scrolling buttons (with 
ImGuiTabBarFlags_FittingPolicyScroll)would generate an unnecessary extra draw call. - Tab Bar: Fixed a small bug where toggling a tab bar from Reorderable to not Reorderable would leave tabs reordered in the tab list popup. [@Xipiryon]
 - DragFloat, DragScalar: Fixed 
ImGuiSliderFlags_ClampOnInputnot being honored in the special case where v_min == v_max. (#3361) - SliderInt, SliderScalar: Fixed reaching of maximum value with inverted integer min/max ranges, both with signed and unsigned types. Added reverse Sliders to Demo. (#3432, #3449) [@rokups]
 - Text: Bypass unnecessary formatting when using the 
TextColored()/TextWrapped()/TextDisabled()helpers with a "%s" format string. (#3466) - CheckboxFlags: Display mixed-value/tristate marker when passed flags that have multiple bits set and stored value matches neither zero neither the full set.
 - BeginMenuBar: Fixed minor bug where 
CursorPosMaxgets pushed toCursorPosprior to callingBeginMenuBar()so e.g. calling the function at the end of a window would often add +ItemSpacing.y to scrolling range. - TreeNode, CollapsingHeader: Made clicking on arrow toggle toggle the open state on the Mouse Down event rather than the Mouse Down+Up sequence, even if the _OpenOnArrow flag isn't set. This is standard behavior and amends the change done in 1.76 which only affected cases were _OpenOnArrow flag was set. (This is also necessary to support full multi/range-select/drag and drop operations.)
 - Columns: Fix inverted ClipRect being passed to renderer when using certain primitives inside of a fully clipped column. (#3475) [@szreder]
 - Popups, Tooltips: Fix edge cases issues with positioning popups and tool-tips when they are larger than viewport on either or both axises. [@rokups]
 - Fonts: 
AddFontDefault()adjust its vertical offset based on floor(size/13) instead of always +1. Was previously done by altering DisplayOffset.y but wouldn't work for DPI scaled font. - Metrics: Various tweaks, listing windows front-to-back, greying inactive items when possible.
 - Demo: Add simple InputText() callbacks demo (aside from the more elaborate ones in 
Examples->Console). - Backends: OpenGL3: Fix to avoid compiling/calling 
glBindSampler()on ES or pre 3.3 contexts which have the defines set by a loader. (#3467, #1985) [@jjwebb] - Backends: Vulkan: Some internal refactor aimed at allowing multi-viewport feature to create their own render pass. (#3455, #3459) [@FunMiles]
 - Backends: DX12: Clarified that imgui_impl_dx12 can be compiled on 32-bit systems by redefining the ImTextureID to be 64-bit (e.g. '#define ImTextureID ImU64' in imconfig.h). (#301)
 - Backends: DX12: Fix debug layer warning when scissor rect is zero-sized. (#3472, #3462) [@StoneWolf]
 - Examples: Vulkan: Reworked buffer resize handling, fix for Linux/X11. (#3390, #2626) [@RoryO]
 - Examples: Vulkan: Switch validation layer to use 
VK_LAYER_KHRONOS_validationinstead ofVK_LAYER_LUNARG_standard_validationwhich is deprecated (#3459) [@FunMiles] - Examples: DX12: Enable breaking on any warning/error when debug interface is enabled.
 - Examples: DX12: Added 
#define ImTextureID ImU64in project and build files to also allow building on 32-bit systems. Added project to default Visual Studio solution file. (#301) 
Tab Bar: TabItemButton() + ImGuiTabItemFlags_Trailing

CheckboxFlags() with visible tri-state (previously only in internals)

Other branches & Beta features!
The Tables (#2957) features is still available for testing, it is expected to fully stabilize and be merged for 1.80. You are encouraged to use Tables and provide feedback today. Currently doing a few final aggressive changes before stabilizing the API.
Some user-visible changes from 1.78 in 1.79 related to the tables branch include:
- Tables: BREAKING CHANGE: Renamed 
TableNextCell()toTableNextColumn(). (see #2957 (comment)) - Tables: BREAKING CHANGE: Made TableN...
 
v1.78
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!
Homepage: https://github.com/ocornut/imgui
Release notes: https://github.com/ocornut/imgui/releases
Wiki: https://github.com/ocornut/imgui/wiki for bindings, links, extensions etc.
FAQ: https://www.dearimgui.org/faq/
Discord server: https://discord.dearimgui.org
Issues and support: https://github.com/ocornut/imgui/issues
Thank you!
Ongoing work on Dear ImGui is currently financially supported by:
- Platinum sponsors: Blizzard, Ubisoft, Nvidia, Google
 - Also recently supported by Activision, Arkane Studios, RAD Game Tools, Grinding Gear Games and more. See sponsors page for details.
 
We are transitioning toward a B2B model to grow project. If your company uses Dear ImGui, consider reaching out at contact at dearimgui.com to help us sustain and improve Dear ImGui.
Huge thank you to all past and present supporters!
Breaking Changes
(Read carefully, not as scary as it sounds. If you maintain a language binding for dear imgui, you may want to evaluate how this might impact users, depending on the language provide dynamic dispatch functions, or simply let the low-level code handle it)
- Obsoleted use of the trailing 
float power=1.0fparameter for those functions: [@ShironekoBen, @ocornut]DragFloat(),DragFloat2(),DragFloat3(),DragFloat4(),DragFloatRange2(),DragScalar(),DragScalarN().SliderFloat(),SliderFloat2(),SliderFloat3(),SliderFloat4(),SliderScalar(),SliderScalarN().VSliderFloat(),VSliderScalar().
 - Replaced the final 
float power=1.0fargument withImGuiSliderFlagsflags defaulting to 0 (as with all our flags).
Worked out a backward-compatibility scheme so hopefully most C++ codebase should not be affected.
In short, when calling those functions:- If you omitted the 'power' parameter (likely in C++), you are not affected.
 - If you set the 'power' parameter to 1.0f (same as previous default value):
- Your compiler may warn on float>int conversion.
 - Everything else will work (but will assert if IMGUI_DISABLE_OBSOLETE_FUNCTIONS is defined).
 - You can replace the 1.0f value with 0 to fix the warning, and be technically correct.
 
 - If you set the 'power' parameter to >1.0f (to enable non-linear editing):
- Your compiler may warn on float>int conversion.
 - Code will assert at runtime for IM_ASSERT(power == 1.0f) with the following assert description:
"Call Drag function with ImGuiSliderFlags_Logarithmic instead of using the old 'float power' function!". - In case asserts are disabled, the code will not crash and enable the _Logarithmic flag.
 - You can replace the >1.0f value with ImGuiSliderFlags_Logarithmic to fix the warning/assert
and get a similar effect as previous uses of power >1.0f.
See #3361 for all details.
Kept inline redirection functions (will obsolete) apart for:DragFloatRange2(),VSliderFloat(),VSliderScalar(). For those three the 'float power=1.0f' version was removed directly as they were most unlikely ever used. 
 
 - DragInt, DragFloat, DragScalar: Obsoleted use of v_min > v_max to lock edits (introduced in 1.73, inconsistent, and was not demoed nor documented much, will be replaced a more generic ReadOnly feature).
 
Other Changes
- Nav: Fixed clicking on void (behind any windows) from not clearing the focused window. This would be problematic e.g. in situation where the application relies on 
io.WantCaptureKeyboardflag being cleared accordingly. (bug introduced in 1.77 WIP on 2020/06/16) (#3344, #2880) - Window: Fixed clicking over an item which hovering has been disabled (e.g inhibited by a popup) from marking the window as moved.
 - Drag, Slider: Added 
ImGuiSliderFlagsparameters.- For float functions they replace the old trailing 
float power=1.0parameter. (See #3361 and the "Breaking Changes" block above for all details). - Added 
ImGuiSliderFlags_Logarithmicflag to enable logarithmic editing (generally more precision around zero), as a replacement to the old 'float power' parameter which was obsoleted. (#1823, #1316, #642) [@ShironekoBen, @AndrewBelt] - Added 
ImGuiSliderFlags_ClampOnInputflag to force clamping value when using CTRL+Click to type in a value manually. (#1829, #3209, #946, #413). - Added 
ImGuiSliderFlags_NoRoundToFormatflag to disable rounding underlying value to match precision of the display format string. (#642) - Added 
ImGuiSliderFlags_NoInputflag to disable turning widget into a text input with CTRL+Click or Nav Enter.- Nav, Slider: Fix using keyboard/gamepad controls with certain logarithmic sliders where pushing a direction near zero values would be cancelled out. [@ShironekoBen] 
 - For float functions they replace the old trailing 
 - DragFloatRange2, DragIntRange2: Fixed an issue allowing to drag out of bounds when both min and max value are on the same value. (#1441)
 - InputText, ImDrawList: Fixed assert triggering when drawing single line of text with more than ~16 KB characters. (Note that current code is going to show corrupted display if after clipping, more than 16 KB characters are visible in the same low-level 
ImDrawList::RenderText()call. ImGui-level functions such asTextUnformatted()are not affected. This is quite rare but it will be addressed later). (#3349) - Selectable: Fixed highlight/hit extent when used with horizontal scrolling (in or outside columns). Also fixed related text clipping when used in a column after the first one. (#3187, #3386)
 - Scrolling: Avoid 
SetScroll(),SetScrollFromPos()functions from snapping on the edge of scroll limits when close-enough by (WindowPadding - ItemPadding), which was a tweak with too many side-effects. The behavior is still present inSetScrollHere()functions as they are more explicitly aiming at making widgets visible. May later be moved to a flag. - Tab Bar: Allow calling 
SetTabItemClosed()after a tab has been submitted (will process next frame). - InvisibleButton: Made public a small selection of 
ImGuiButtonFlags(previously in imgui_internal.h) and allowed to pass them toInvisibleButton():ImGuiButtonFlags_MouseButtonLeft/Right/Middle. This is a small but rather important change because lots of multi-button behaviors could previously only be achieved using lower-level/internal API. Now also available via high-level InvisibleButton() with is a de-facto versatile building block to creating custom widgets with the public API. - Fonts: Fixed 
ImFontConfig::GlyphExtraSpacingandImFontConfig::PixelSnapHsettings being pulled from the merged/target font settings when merging fonts, instead of being pulled from the source font settings. - ImDrawList: Thick anti-aliased strokes (> 1.0f) with integer thickness now use a texture-based path, reducing the amount of vertices/indices and CPU/GPU usage. (#3245) [@ShironekoBen]
- This change will facilitate the wider use of thick borders in future style changes.
 - Requires an extra bit of texture space (~64x64 by default), relies on GPU bilinear filtering.
 - Set 
io.AntiAliasedLinesUseTex = falseto disable rendering using this method. - Clear 
ImFontAtlasFlags_NoBakedLinesin ImFontAtlas::Flags to disable baking data in texture. 
 - ImDrawList: changed 
AddCircle(),AddCircleFilled()defaultnum_segmentsfrom 12 to 0, effectively enabling auto-tessellation by default. Tweak tessellation in Style Editor->Rendering section, or by modifying thestyle.CircleSegmentMaxErrorvalue. [@ShironekoBen] - ImDrawList: Fixed minor bug introduced in 1.75 where 
AddCircle()with 12 segments would generate an extra vertex. (This bug was mistakenly marked as fixed in earlier 1.77 release). [@ShironekoBen] - Demo: Improved "Custom Rendering"->"Canvas" demo with a grid, scrolling and context menu. Also showcase using 
InvisibleButton()with multiple mouse buttons flags. - Demo: Improved "Layout & Scrolling" -> "Clipping" section.
 - Demo: Improved "Layout & Scrolling" -> "Child Windows" section.
 - Style Editor: Added preview of circle auto-tessellation when editing the corresponding value.
 - Backends: OpenGL3: Added support for glad2 loader. (#3330) [@moritz-h]
 - Backends: Allegro 5: Fixed horizontal scrolling direction with mouse wheel / touch pads (it seems like Allegro 5 reports it differently from GLFW and SDL). (#3394, #2424, #1463) [@nobody-special666]
 - Examples: Vulkan: Fixed GLFW+Vulkan and SDL+Vulkan clear color not being set. (#3390) [@RoryO]
 - CI: Emscripten has stopped their support for their fastcomp backend, switching to latest sdk [@Xipiryon]
 
Other branches & Beta features!
The tables (#2957) features is still available for testing, it is expected to fully stabilize and be merged for 1.80. You are encourage to use Tables today and provide feedback.
Some user-visible changes from 1.77 in 1.78 related to the **t...







