| dear imgui |
| CHANGELOG |
| |
| This document holds the user-facing changelog that we also use in release notes. |
| We generally fold multiple commits pertaining to the same topic as a single entry. |
| Changes to backends are also included within the individual .cpp files of each backend. |
| |
| FAQ https://www.dearimgui.com/faq/ |
| RELEASE NOTES: https://github.com/ocornut/imgui/releases |
| WIKI https://github.com/ocornut/imgui/wiki |
| GETTING STARTED https://github.com/ocornut/imgui/wiki/Getting-Started |
| GLOSSARY https://github.com/ocornut/imgui/wiki/Glossary |
| ISSUES & SUPPORT https://github.com/ocornut/imgui/issues |
| |
| WHEN TO UPDATE? |
| |
| - Keeping your copy of Dear ImGui updated regularly is recommended. |
| - It is generally safe and recommended to sync to the latest commit in 'master' or 'docking' |
| branches. The library is fairly stable and regressions tends to be fixed fast when reported. |
| |
| HOW TO UPDATE? |
| |
| - Update submodule or copy/overwrite every file. |
| - About imconfig.h: |
| - You may modify your copy of imconfig.h, in this case don't overwrite it. |
| - or you may locally branch to modify imconfig.h and merge/rebase latest. |
| - or you may '#define IMGUI_USER_CONFIG "my_config_file.h"' globally from your build system to |
| specify a custom path for your imconfig.h file and instead not have to modify the default one. |
| - Read the `Breaking Changes` section (in imgui.cpp or here in the Changelog). |
| - If you have a problem with a missing function/symbols, search for its name in the code, there will likely be a comment about it. |
| - If you are copying this repository in your codebase, please leave the demo and documentations files in there, they will be useful. |
| - You may diff your previous Changelog with the one you just copied and read that diff. |
| - You may enable `IMGUI_DISABLE_OBSOLETE_FUNCTIONS` in imconfig.h to forcefully disable legacy names and symbols. |
| Doing it every once in a while is a good way to make sure you are not using obsolete symbols. Dear ImGui is in active development, |
| and API updates have been a little more frequent lately. They are documented below and in imgui.cpp and should not affect all users. |
| - Please report any issue! |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.91.1 (Released 2024-09-04) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.1 |
| |
| Breaking changes: |
| |
| - BeginChild(): renamed ImGuiChildFlags_Border to ImGuiChildFlags_Borders for consistency. [@cfillion] |
| Kept inline redirection flag (will obsolete). |
| - IO: moved clipboard functions from ImGuiIO to ImGuiPlatformIO: |
| - io.GetClipboardTextFn -> platform_io.Platform_GetClipboardTextFn |
| - io.SetClipboardTextFn -> platform_io.Platform_SetClipboardTextFn |
| - in function signatures, changed 'void* user_data' to 'ImGuiContext* ctx' for consistency |
| with other functions. Pull your user data from platform_io.ClipboardUserData if used. |
| - as this is will affect all users of custom engines/backends, we are providing proper |
| legacy redirection (will obsolete). |
| - IO: moved other functions from ImGuiIO to ImGuiPlatformIO: |
| - io.PlatformOpenInShellFn -> platform_io.Platform_OpenInShellFn (#7660) |
| - io.PlatformSetImeDataFn -> platform_io.Platform_SetImeDataFn |
| - io.PlatformLocaleDecimalPoint -> platform_io.Platform_LocaleDecimalPoint (#7389, #6719, #2278) |
| - access those via GetPlatformIO() instead of GetIO(). |
| (Because PlatformOpenInShellFn and PlatformSetImeDataFn were introduced very recently and |
| often automatically set by core library and backends, we are exceptionally not maintaining |
| a legacy redirection symbol for those two.) |
| - Commented the old ImageButton() signature obsoleted in 1.89 (~August 2022). (#5533, #4471, #2464, #1390) |
| - old ImageButton() used ImTextureId as item id (created issue with e.g. multiple buttons in same scope, transient texture id values, opaque computation of ID) |
| - new ImageButton() requires an explicit 'const char* str_id' |
| - old ImageButton() had frame_padding' override argument. |
| - new ImageButton() always use style.FramePadding, which you can modify using PushStyleVar()/PopStyleVar(). |
| |
| Other changes: |
| |
| - IO: Added GetPlatformIO() and ImGuiPlatformIO, pulled from 'docking' branch, which |
| is a centralized spot to connect os/platform/renderer related functions. |
| Clipboard, IME and OpenInShell hooks are moved here. (#7660) |
| - IO, InputText: fixed an issue where typing text in an InputText() would defer character |
| processing by one frame, because of the trickling input queue. Reworked interleaved |
| keys<>char trickling to take account for keys known to input characters. (#7889, #4921, #4858) |
| - Windows: adjust default ClipRect to better match rendering of thick borders (which are in |
| theory not supported). Compensate for the fact that borders are centered around the windows |
| edge rather than inner. (#7887, #7888 + #3312, #7540, #3756, #6170, #6365) |
| - Made BeginItemTooltip() and IsItemHovered() with delay flag infer an implicit ID (for |
| ID-less items such as Text element) in a way that works when item resizes. (#7945, #1485) |
| - MultiSelect+TreeNode+Drag and Drop: fixed an issue where carrying a drag and drop payload |
| over an already open tree node using multi-select would incorrectly select it. (#7850) |
| - MultiSelect+TreeNode: default open behavior is _OpenOnDoubleClick + _OpenOnArrow when |
| used in a multi-select context without any ImGuiTreeNode_OpenOnXXX flags set. (#7850) |
| - Tables: fixes/revert a 1.90 change were outer border would be moved bottom and right |
| by an extra pixel + rework the change so that contents doesn't overlap the bottom and |
| right border in a scrolling table. (#6765, #3752, #7428) |
| - Tables: fixed an issue resizing columns or querying hovered column/row when using multiple |
| synched instances that are layed out at different X positions. (#7933) |
| - Tabs: avoid queuing a refocus when tab is already focused, which would have the |
| side-effect of e.g. closing popup on a mouse release. (#7914) |
| - InputText: allow callback to update buffer while in read-only mode. (imgui_club/#46) |
| - InputText: fixed an issue programmatically refocusing a multi-line input which was just active. (#4761, #7870) |
| - TextLink(), TextLinkOpenURL(): change mouse cursor to Hand shape when hovered. (#7885, #7660) |
| - Tooltips, Drag and Drop: made it possible to override BeginTooltip() position while inside |
| a drag and drop source or target: a SetNextWindowPos() call won't be overridden. (#6973) |
| - PlotHistogram, PlotLines: register item ID and use button behavior in a more idiomatic manner, |
| fixes preventing e.g. GetItemID() and other ID-based helper to work. (#7935, #3072) |
| - Style: added PushStyleVarX(), PushStyleVarY() helpers to conveniently modify only |
| one component of a ImVec2 var. |
| - Fonts: made it possible to use PushFont()/PopFont() calls across Begin() calls. (#3224, #3875, #6398, #7903) |
| - Backends: |
| - Backends: GLFW: added ImGui_ImplGlfw_Sleep() helper function because GLFW does not |
| provide a way to do a portable sleep. (#7844) |
| - Backends: GLFW+Emscripten: Use OpenURL() from GLFW3 contrib port when available and using |
| the contrib port instead of Emscripten own GLFW3 implementation. (#7647, #7915, #7660) [@ypujante] |
| - Backends: SDL2, SDL3: ignore events of other SDL windows. (#7853) [@madebr, @ocornut] |
| - Backends: SDL2, SDL3: storing SDL_WindowID inside ImGuiViewport::PlatformHandle instead of SDL_Window*. |
| - Backends: SDL3: Update for API changes: SDL_GetGamepads() memory ownership logic was reverted back |
| by SDL3 on July 27. (#7918, #7898, #7807) [@cheyao, @MattGuerrette] |
| - Backends: GLFW: passing null window to glfwGetClipboardString()/glfwSetClipboardString() |
| since GLFW own tests are doing that and it seems unnecessary. |
| - Backends: SDL2, SDL3, GLFW, OSX, Allegro: update to set function handlers in ImGuiPlatformIO |
| instead of ImGuiIO. |
| - Examples: |
| - Examples: GLFW (all), SDL2 (all), SDL3 (all), Win32+OpenGL3: rework examples main loop |
| to handle minimization without burning CPU or GPU by running unthrottled code. (#7844) |
| - Examples: SDL3: Update for API changes: SDL_Init() returns 0 on failure. |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.91.0 (Released 2024-07-30) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.91.0 |
| |
| Breaking changes: |
| |
| - IO, IME: renamed platform IME hook and added explicit context for consistency and future-proofness. |
| - old: io.SetPlatformImeDataFn(ImGuiViewport* viewport, ImGuiPlatformImeData* data); |
| - new: io.PlatformSetImeDataFn(ImGuiContext* ctx, ImGuiViewport* viewport, ImGuiPlatformImeData* data); |
| It is expected that for a vast majority of users this is automatically set by core |
| library and/or platform backend so it won't have any effect. |
| - Obsoleted GetContentRegionMax(), GetWindowContentRegionMin() and GetWindowContentRegionMax(). (#7838) |
| You should never need those functions! You can do everything in less a confusing manner by only |
| using GetCursorScreenPos() and GetContentRegionAvail(). Also always consider that if you are using |
| GetWindowPos() and GetCursorPos() you may also be making things unnecessarily complicated. |
| I repeat: You can do everything with GetCursorScreenPos() and GetContentRegionAvail()! |
| - GetWindowContentRegionMax().x - GetCursorPos().x --> GetContentRegionAvail().x |
| - GetWindowContentRegionMax().x + GetWindowPos().x --> GetCursorScreenPos().x + GetContentRegionAvail().x // when called from left edge of window |
| - GetContentRegionMax() --> GetContentRegionAvail() + GetCursorScreenPos() - GetWindowPos() // right edge in local coordinates |
| - GetWindowContentRegionMax().x - GetWindowContentRegionMin().x --> GetContentRegionAvail() // when called from left edge of window |
| - Item flag changes: |
| - Obsoleted PushButtonRepeat()/PopButtonRepeat() in favor of using new PushItemFlag()/PopItemFlag() |
| with ImGuiItemFlags_ButtonRepeat. Kept inline redirecting functions (will obsolete). |
| - Obsoleted PushTabStop()/PopTabStop() in favor of using new PushItemFlag()/PopItemFlag() |
| with ImGuiItemFlags_NoTabStop. Kept inline redirecting functions (will obsolete). |
| - Renamed ImGuiSelectableFlags_DontClosePopups to ImGuiSelectableFlags_NoAutoClosePopups for |
| consistency. Kept inline redirecting functions (will obsolete). |
| + Internals: changed/inverted ImGuiItemFlags_SelectableDontClosePopup (default==false) to |
| ImGuiItemFlags_AutoClosePopups (default==true), same logic, only inverted behavior. |
| (#1379, #1468, #2200, #4936, #5216, #7302, #7573) |
| - Commented out obsolete ImGuiModFlags (renamed to ImGuiKeyChord in 1.89). (#4921, #456) |
| - Commented out obsolete ImGuiModFlags_XXX values (renamed to ImGuiMod_XXX in 1.89). (#4921, #456) |
| - ImGuiModFlags_Ctrl -> ImGuiMod_Ctrl, ImGuiModFlags_Shift -> ImGuiMod_Shift etc. |
| - Backends: GLFW+Emscripten: Renamed ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback() to |
| ImGui_ImplGlfw_InstallEmscriptenCallbacks(), with an additional GLFWWindow* parameter. (#7647) [@ypujante] |
| |
| Other changes: |
| |
| - Added TextLink(), TextLinkOpenURL() hyperlink widgets. (#7660) |
| - IO: added io.PlatformOpenInShellFn handler to open a link/folder/file in OS shell. (#7660) |
| (*EDIT* From next version 1.91.1 we moved this to platform_io.Platform_OpenInShellFn *EDIT**) |
| Added IMGUI_DISABLE_DEFAULT_SHELL_FUNCTIONS to disable default Windows/Linux/Mac implementations. |
| - IO: added io.ConfigNavSwapGamepadButtons to swap Activate/Cancel (A<>B) buttons, to match the |
| typical "Nintendo/Japanese consoles" button layout when using Gamepad navigation. (#787, #5723) |
| - Added PushItemFlag()/PopItemFlags(), ImGuiItemFlags to modify shared item flags: |
| - Added ImGuiItemFlags_NoTabStop to disable tabbing through items. |
| - Added ImGuiItemFlags_NoNav to disable any navigation and focus of items. (#787) |
| - Added ImGuiItemFlags_NoNavDefaultFocus to disable item being default focus. (#787) |
| - Added ImGuiItemFlags_ButtonRepeat to enable repeat on any button-like behavior. |
| - Added ImGuiItemFlags_AutoClosePopups to disable menu items/selection auto closing parent popups. |
| Disabling this was previously possible for Selectable() via a direct flag but not for MenuItem(). |
| (#1379, #1468, #2200, #4936, #5216, #7302, #7573) |
| - This was mostly all previously in imgui_internal.h. |
| - Multi-Select: added multi-select API and demos. (#1861, #6518) |
| - This system implements standard multi-selection idioms (CTRL+mouse click, CTRL+keyboard moves, |
| SHIFT+mouse click, SHIFT+keyboard moves, etc.) with support for clipper (not submitting non-visible |
| items), box-selection with scrolling, and many other details. |
| - In the spirit of Dear ImGui design, your code owns both items and actual selection data. |
| This is designed to allow all kinds of selection storage you may use in your application |
| (e.g. set/map/hash, intrusive selection, interval trees, up to you). |
| - The supported widgets are Selectable(), Checkbox(). TreeNode() is also technically supported but... |
| using this correctly is more complicated. You need some sort of linear/random access to your tree, |
| which is suited to advanced trees setups already implementing filters and clipper. |
| We will work toward simplifying our existing demo for trees. |
| - A helper ImGuiSelectionBasicStorage is provided to facilitate getting started in a typical app |
| (likely to suit a majority of users). |
| - Documentation: |
| - Wiki page https://github.com/ocornut/imgui/wiki/Multi-Select for API overview. |
| - Demo code + headers are well commented. |
| - Added BeginMultiSelect(), EndMultiSelect(), SetNextItemSelectionUserData(). |
| - Added IsItemToggledSelection() for use if you need latest selection update during current iteration. |
| - Added ImGuiMultiSelectIO and ImGuiSelectionRequest structures: |
| - BeginMultiSelect() and EndMultiSelect() return a ImGuiMultiSelectIO structure, which |
| is mostly an array of ImGuiSelectionRequest actions (clear, select all, set range, etc.) |
| - Other fields are helpful when using a clipper, or wanting to handle deletion nicely. |
| - Added ImGuiSelectionBasicStorage helper to store and maintain a selection (optional): |
| - This is similar to if you used e.g. a std::set<ID> to store a selection, with all the right |
| glue to honor ImGuiMultiSelectIO requests. Most applications can use that. |
| - Added ImGuiSelectionExternalStorage helper to maintain an externally stored selection (optional): |
| - Helpful to easily bind multi-selection to e.g. an array of checkboxes. |
| - Added ImGuiMultiSelectFlags options: |
| - ImGuiMultiSelectFlags_SingleSelect |
| - ImGuiMultiSelectFlags_NoSelectAll |
| - ImGuiMultiSelectFlags_NoRangeSelect |
| - ImGuiMultiSelectFlags_NoAutoSelect |
| - ImGuiMultiSelectFlags_NoAutoClear |
| - ImGuiMultiSelectFlags_NoAutoClearOnReselect (#7424) |
| - ImGuiMultiSelectFlags_BoxSelect1d |
| - ImGuiMultiSelectFlags_BoxSelect2d |
| - ImGuiMultiSelectFlags_BoxSelectNoScroll |
| - ImGuiMultiSelectFlags_ClearOnEscape |
| - ImGuiMultiSelectFlags_ClearOnClickVoid |
| - ImGuiMultiSelectFlags_ScopeWindow (default), ImGuiMultiSelectFlags_ScopeRect |
| - ImGuiMultiSelectFlags_SelectOnClick (default), ImGuiMultiSelectFlags_SelectOnClickRelease |
| - ImGuiMultiSelectFlags_NavWrapX |
| - Demo: Added "Examples->Assets Browser" demo. |
| - Demo: Added "Widgets->Selection State & Multi-Select" section, with: |
| - Multi-Select |
| - Multi-Select (with clipper) |
| - Multi-Select (with deletion) |
| - Multi-Select (dual list box) (#6648) |
| - Multi-Select (in a table) |
| - Multi-Select (checkboxes) |
| - Multi-Select (multiple scopes) |
| - Multi-Select (tiled assert browser) |
| - Multi-Select (trees) (#1861) |
| - Multi-Select (advanced) |
| - Inputs: added SetItemKeyOwner(ImGuiKey key) in public API. |
| This is a simplified version of a more complete set of function available in imgui_internal.h. |
| One common use-case for this is to allow your widgets to disable standard inputs behaviors such |
| as Tab or Alt handling, Mouse Wheel scrolling, etc. |
| (#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641) |
| // Hovering or activating the button will disable mouse wheel default behavior to scroll |
| InvisibleButton(...); |
| SetItemKeyOwner(ImGuiKey_MouseWheelY); |
| - Nav: fixed clicking window decorations (e.g. resize borders) from losing focused item when |
| within a child window using ImGuiChildFlags_NavFlattened. |
| - InputText: added '\' and '/' as word separator. (#7824, #7704) [@reduf] |
| - TreeNode: added SetNextItemStorageID() to specify/override the identifier used for persisting |
| open/close storage. Useful if needing to often read/write from storage without manipulating |
| the ID stack. (#7553, #6990, #3823, #1131) |
| - Selectable: added ImGuiSelectableFlags_Highlight flag to highlight items independently from |
| the hovered state. (#7820) [@rerilier] |
| - Clipper: added SeekCursorForItem() function. When using ImGuiListClipper::Begin(INT_MAX) you can |
| can use the clipper without knowing the amount of items beforehand. (#1311) |
| In this situation, call ImGuiListClipper::SeekCursorForItem(items_count) at the end of your iteration |
| loop to position the layout cursor correctly. This is done automatically if provided a count to Begin(). |
| - Groups, Tables: fixed EndGroup() failing to correctly capture current table occupied size. (#7543) |
| - Style, TabBar: added style.TabBarOverlineSize / ImGuiStyleVar_TabBarOverlineSize to manipulate |
| thickness of the horizontal line over selected tabs. [@DctrNoob] |
| - Style: close button and collapse/window-menu button hover highlight made rectangular instead of round. |
| - Misc: added GetID(int) variant for consistency. (#7111) |
| - Debug Tools: |
| - Debug Log: Added IMGUI_DEBUG_LOG(), ImGui::DebugLog() in public API. (#5855) |
| Printed entries include imgui frame counter prefix + are redirected to ShowDebugLogWindow() and |
| other configurable locations. Always call IMGUI_DEBUG_LOG() for maximum stripping in caller code. |
| - Debug Log: Added "Configure Outputs.." button. (#5855) |
| - Debug Log: Fixed incorrect checkbox layout when partially clipped. |
| - Demo: Reworked "Property Editor" demo in a manner that more resemble the tree data and |
| struct description data that a real application would want to use. |
| - Backends: |
| - Backends: Win32: Fixed ImGuiMod_Super being mapped to VK_APPS instead of (VK_LWIN || VK_RWIN). |
| (#7768, #4858, #2622) [@Aemony] |
| - Backends: SDL3: Update for API changes: SDL_GetGamepads() memory ownership change. (#7807) |
| - Backends: SDL3: Update for API changes: SDL_GetClipboardText() memory ownership change. (#7801) |
| - Backends: SDL3: Update for API changes: SDLK_x renames and SDLK_KP_x removals (#7761, #7762) |
| - Backends: SDL3: Update for API changes: SDL_GetProperty() change to SDL_GetPointerProperty(). (#7794) [@wermipls] |
| - Backends: SDL2,SDL3,OSX: Update for io.SetPlatformImeDataFn() -> io.PlatformSetImeDataFn() rename. |
| - Backends: GLFW,SDL2: Added io.PlatformOpenInShellFn handler for web/Emscripten versions. (#7660) |
| [@ypujante, @ocornut] |
| - Backends: GLFW+Emscripten: Added support for GLFW3 contrib port which fixes many of the things |
| not supported by the embedded GLFW: gamepad support, mouse cursor shapes, copy to clipboard, |
| workaround for Super/Meta key, different ways of resizing, multi-window (glfw/canvas) support. |
| (#7647) [@ypujante] |
| - Backends: GLFW+Emscripten: Fixed Emscripten warning when using mouse wheel on some setups |
| "Unable to preventDefault inside passive event listener". (#7647, #7600) [@ypujante] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.9 (Released 2024-07-01) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.9 |
| |
| Breaking changes: |
| |
| - Removed old nested structure: renaming ImGuiStorage::ImGuiStoragePair type to |
| ImGuiStoragePair (simpler for many languages). No significant nested type left. |
| - BeginChild: added ImGuiChildFlags_NavFlattened as a replacement for the window |
| flag ImGuiWindowFlags_NavFlattened: the feature only ever made sense for |
| BeginChild() calls anyhow. (#7687) [@cfillion] |
| - old: BeginChild("Name", size, 0, ImGuiWindowFlags_NavFlattened); |
| - new: BeginChild("Name", size, ImGuiChildFlags_NavFlattened, 0) |
| Kept inline redirection flag (will obsolete). |
| - Style: renamed tab colors for clarity and consistency with other changes: (#261, #351) |
| - ImGuiCol_TabActive -> ImGuiCol_TabSelected |
| - ImGuiCol_TabUnfocused -> ImGuiCol_TabDimmed |
| - ImGuiCol_TabUnfocusedActive -> ImGuiCol_TabDimmedSelected |
| Kept inline redirecting enums (will obsolete). |
| - IO: io.ClearInputKeys() (first exposed in 1.89.8) doesn't clear mouse data. |
| Newly added io.ClearInputMouse() does. (#4921) |
| - Drag and Drop: renamed ImGuiDragDropFlags_SourceAutoExpirePayload to |
| ImGuiDragDropFlags_PayloadAutoExpire. Kept inline redirecting enum (will obsolete). (#1725, #143) |
| |
| Other changes: |
| |
| - IO: do not disable io.ConfigWindowsResizeFromEdges (which allow resizing from borders |
| and lower-left corner) when ImGuiBackendFlags_HasMouseCursors is not set by backend. |
| The initial reasoning is that resizing from borders feels better when correct mouse cursor |
| shape change as honored by backends. Keeping this enabling will hopefully increase pressure |
| on third-party backends to set ImGuiBackendFlags_HasMouseCursors and honor changes of |
| ImGui::GetMouseCursor() value. (#1495) |
| - IO: do not claim io.WantCaptureMouse=true on the mouse release frame of a button |
| which was pressed over void/underlying app, which is consistent/needed to allow the |
| mouse up event of a drag over void/underlying app to catch release. (#1392) [@Moka42] |
| - IO: Added io.ClearInputMouse() to clear mouse state. (#4921) |
| - Windows: BeginChild(): fixed a glitch when during a resize of a child window which is |
| tightly close to the boundaries of its parent (e.g. with zero WindowPadding), the child |
| position could have temporarily be moved around by erroneous padding application. (#7706) |
| - TabBar, Style: added ImGuiTabBarFlags_DrawSelectedOverline option to draw an horizontal |
| line over selected tabs to increase visibility. This is used by docking. |
| Added corresponding ImGuiCol_TabSelectedOverline and ImGuiCol_TabDimmedSelectedOverline colors. |
| - Tables: added TableGetHoveredColumn() to public API, as an alternative to testing for |
| 'TableGetColumnFlags(column) & ImGuiTableColumnFlags_IsHovered' on each column. (#3740) |
| - Disabled, Inputs: fixed using Shortcut() or SetNextItemShortcut() within a disabled block |
| bypassing the disabled state. (#7726) |
| - Disabled: Reworked 1.90.8 behavior of Begin() not inheriting current BeginDisabled() state, |
| to make it that only tooltip windows are temporarily clearing it. (#211, #7640) |
| - Drags: added ImGuiSliderFlags_WrapAround flag for DragInt(), DragFloat() etc. (#7749) |
| - Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceExtern sets |
| active id so a multi-frame extern source doesn't interfere with hovered widgets. (#143) |
| - Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceExtern does not assume |
| a mouse button being pressed. Facilitate implementing cross-context drag and drop. (#143) |
| - Drag and Drop: Added ImGuiDragDropFlags_PayloadNoCrossContext/_PayloadNoCrossProcess flags |
| as metadata to specify that a payload may not be copied outside the context/process by |
| some logic aiming to copy payloads around. |
| - Drag and Drop: Fixes an issue when elapsing payload would be based on last payload |
| frame instead of last drag source frame, which makes a difference if not resubmitting |
| payload every frame. (#143) |
| - Debug Tools: Metrics/Debugger: Browsing a Storage perform hover lookup on identifier. |
| - Viewports: Backported 'void* ImGuiViewport::PlatformHandle' from docking branch for |
| use by backends. |
| - imgui_freetype: Fixed divide by zero while handling FT_PIXEL_MODE_BGRA glyphs. (#7267, #3369) |
| - Backends: OpenGL2, OpenGL3: ImGui_ImplOpenGL3_NewFrame() recreates font texture if it |
| has been destroyed by ImGui_ImplOpenGL3_DestroyFontsTexture(). (#7748) [@mlauss2] |
| - Backends: SDL3: Update for API removal of keysym field in SDL_KeyboardEvent. (#7728) |
| - Backends: SDL3: Update for SDL_StartTextInput()/SDL_StopTextInput() API changes. (#7735) |
| - Backends: SDL3: Update for SDL_SetTextInputRect() API rename. (#7760, #7754) [@maxortner01] |
| - Backends: SDLRenderer3: Update for SDL_RenderGeometryRaw() API changes. (SDL#9009). |
| - Backends: Vulkan: Remove Volk/ from volk.h #include directives. (#7722, #6582, #4854) |
| [@martin-ejdestig] |
| - Examples: SDL3: Remove use of SDL_HINT_IME_NATIVE_UI since new SDL_HINT_IME_IMPLEMENTED_UI |
| values has a more suitable default for our case case. |
| - Examples: GLFW+Vulkan, SDL+Vulkan: handle swap chain resize even without Vulkan |
| returning VK_SUBOPTIMAL_KHR, which doesn't seem to happen on Wayland. (#7671) |
| [@AndreiNego, @ocornut] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.8 (Released 2024-06-06) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.8 |
| |
| Breaking changes: |
| |
| - Reordered various ImGuiInputTextFlags values. This should NOT be breaking unless |
| you are using generated headers that have values not matching the main library. |
| - Removed ImGuiButtonFlags_MouseButtonDefault_ = ImGuiButtonFlags_MouseButtonLeft |
| from imgui.h, was mostly unused and misleading. |
| |
| Other changes: |
| |
| - Inputs: fixed IsMouseClicked(..., repeat=true); broken in 1.90.7 on 2024/05/22. |
| (due to an internal api parameter swap, repeat wouldn't be honored and |
| ownership would be accidentally checked even though this api is meant to not |
| check ownership). (#7657) [@korenkonder] |
| - Windows: fixed altering FramePadding mid-frame not correctly affecting logic |
| responsible for honoring io.ConfigWindowsMoveFromTitleBarOnly. (#7576, #899) |
| - Scrollbar: made scrolling logic more standard: clicking above or below the |
| grab scrolls by one page, holding mouse button repeats scrolling. (#7328, #150) |
| - Scrollbar: fixed miscalculation of vertical scrollbar visibility when required |
| solely by the presence of an horizontal scrollbar. (#1574) |
| - InputScalar, InputInt, InputFloat: added ImGuiInputTextFlags_ParseEmptyRefVal |
| to parse an empty field as zero-value. (#7305) [@supermerill, @ocornut] |
| - InputScalar, InputInt, InputFloat: added ImGuiInputTextFlags_DisplayEmptyRefVal |
| to display a zero-value as empty. (#7305) [@supermerill, @ocornut] |
| - Popups: fixed an issue preventing to close a popup opened over a modal by clicking |
| over void (it required clicking over the visible part of the modal). (#7654) |
| - Tables: fixed an issue where ideal size reported to parent container wouldn't |
| correctly take account of inner scrollbar, affecting potential auto-resize of |
| parent container. (#7651) |
| - Tables: fixed a bug where after disabling the ScrollY flag for a table, |
| previous scrollbar width would be accounted for. (#5920) |
| - Combo: simplified Combo() API uses a list clipper (due to its api it wasn't |
| previously trivial before we added clipper.IncludeItemByIndex() function). |
| - Disabled: nested tooltips or other non-child window within a BeginDisabled() |
| block disable the disabled state. (#211, #7640) |
| - Misc: made ImGuiDir and ImGuiSortDirection stronger-typed enums. |
| - Backends: SDL3: Update for SDL_SYSTEM_CURSOR_xxx api renames. (#7653) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.7 (Released 2024-05-27) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.7 |
| |
| Breaking changes: |
| |
| - Inputs: on macOS X, Cmd and Ctrl keys are now automatically swapped by io.AddKeyEvent(), |
| as this naturally align with how macOS X uses those keys. (#2343, #4084, #5923, #456) |
| - Effectively it means that e.g. ImGuiMod_Ctrl | ImGuiKey_C is a valid idiomatic shortcut |
| for both Windows and Mac style users. |
| - It shouldn't really affect your code unless you had explicit/custom shortcut swapping in |
| place for macOS X apps in your input logic. |
| - Removed ImGuiMod_Shortcut which was previously dynamically remapping to Ctrl or Cmd/Super. |
| It is now unnecessary to specific cross-platform idiomatic shortcuts. |
| Kept symbols redirecting ImGuiMod_Shortcut to ImGuiMod_Ctrl (will obsolete). |
| - Commented out obsolete symbols renamed in 1.88 (May 2022): |
| CaptureKeyboardFromApp() -> SetNextFrameWantCaptureKeyboard() |
| CaptureMouseFromApp() -> SetNextFrameWantCaptureMouse() |
| - Backends: SDL_Renderer2/SDL_Renderer3: ImGui_ImplSDLRenderer2_RenderDrawData() and |
| ImGui_ImplSDLRenderer3_RenderDrawData() now takes a SDL_Renderer* parameter. This was previously |
| overlooked from the API but it will allow eventual support for multi-viewports. |
| |
| Other changes: |
| |
| - Windows: BeginChild(): fixed visibility of fully clipped child windows and tables to Test Engine. |
| - Windows: BeginChild(): fixed auto-fit calculation when using either (not both) ResizeX/ResizeY |
| and double-clicking on a border. Calculation incorrectly didn't always account for scrollbar as |
| it assumed the other axis would also be auto-fit. (#1710) |
| - Inputs: added shortcut and routing system in public API. (#456, #2637) [BETA] |
| - The general idea is that several callers may register interest in a shortcut, and only one owner gets it. |
| - in Parent: call Shortcut(Ctrl+S) // When Parent is focused, Parent gets the shortcut. |
| - in Child1: call Shortcut(Ctrl+S) // When Child1 is focused, Child1 gets the shortcut (Child1 overrides Parent shortcuts) |
| - in Child2: no call // When Child2 is focused, Parent gets the shortcut. |
| The whole system is order independent, so if Child1 makes its calls before Parent, results will be identical. |
| This is an important property as it facilitate working with foreign code or larger codebase. |
| - Added Shortcut() function: |
| e.g. Using ImGui::Shortcut(ImGuiMod_Ctrl | ImGuiKey_C); with default policy: |
| - checks that CTRL+C is pressed, |
| - and that current window is in focus stack, |
| - and that no other requests for CTRL+C have been made from higher priority locations |
| (e.g. deeper in the window/item stack). |
| - Added SetNextItemShortcut() to set a shortcut to locally or remotely press or activate |
| an item (depending on specified routing policy: using ImGuiInputFlags_RouteGlobal the item |
| shortcut may be executed even if its window is not in focus stack). |
| Items like buttons are not fully activated, in the sense that they get pressed but another |
| active item, e.g. InputText() won't be deactivated. |
| - Added routing policies for Shortcut(), SetNextItemShortcut(): (#456, #2637) |
| - ImGuiInputFlags_RouteFocused: focus stack route (default) |
| - ImGuiInputFlags_RouteActive: only route to active item |
| - ImGuiInputFlags_RouteGlobal: route globally, unless a focus route claim shame shortcut. |
| - ImGuiInputFlags_RouteAlways: no routing submission, no routing check. |
| - Added other shortcut/routing options: (#456, #2637) |
| - ImGuiInputFlags_Repeat: for use by Shortcut() and by upcoming rework of various |
| input functions (which are still internal for now). |
| - ImGuiInputFlags_Tooltip: for SetNextItemShortcut() to show a tooltip when hovering item. |
| - ImGuiInputFlags_RouteOverFocused: global route takes priority over focus route. |
| - ImGuiInputFlags_RouteOverActive: global route takes priority over active item. |
| - ImGuiInputFlags_RouteUnlessBgFocused: global route disabled if no imgui window focused. |
| - ImGuiInputFlags_RouteFromRootWindow: route evaluated from the point of view of root window rather than current window. |
| - Inputs: (OSX) Fixes variety of code which inconsistently required using Ctrl instead of Cmd. |
| - e.g. Drags/Sliders now use Cmd+Click to input a value. (#4084) |
| - Some shortcuts still uses Ctrl on Mac: e.g. Ctrl+Tab to switch windows. (#4828) |
| - Inputs: (OSX) Ctrl+Left Click alias as a Right click. (#2343) [@haldean, @ocornut] |
| - Inputs: Fixed ImGui::GetKeyName(ImGuiKey_None) from returning "N/A" or "None" depending |
| on value of IMGUI_DISABLE_OBSOLETE_KEYIO. It always returns "None". |
| - Nav: fixed holding Ctrl or gamepad L1 from not slowing down keyboard/gamepad tweak speed. |
| Broken during a refactor refactor for 1.89. Holding Shift/R1 to speed up wasn't broken. |
| - Tables: fixed cell background of fully clipped row overlapping with header. (#7575, #7041) [@prabuinet] |
| - Demo: Added "Inputs & Focus -> Shortcuts" section. (#456, #2637) |
| - Demo: Documents: Added shortcuts and renaming tabs/documents. (#7233) |
| - Examples: Win32+DX9,DX10,DX11,DX12: rework main loop to handle minimization and screen |
| locking without burning resources by running unthrottled code. (#2496, #3907, #6308, #7615) |
| - Backends: all backends + demo now call IMGUI_CHECKVERSION() to verify ABI compatibility between caller |
| code and compiled version of Dear ImGui. If you get an assert it most likely mean you have a build issue, |
| read comments near the assert. (#7568) |
| - Backends: Win32: undo an assert introduced in 1.90.6 which didn't allow WndProc |
| handler to be called before backend initialization. Because of how ::CreateWindow() |
| calls in WndProc this is facilitating. (#6275) [@MennoVink] |
| - Backends, Examples: SDL3: updates for latest SDL3 API changes. (#7580) [@kuvaus, @ocornut] |
| |
| Breaking changes IF you were using imgui_internal.h versions of Shortcut() or owner-aware |
| versions of IsKeyPressed(), IsKeyChordPressed(), IsMouseClicked() prior to this version: |
| |
| - Inputs (Internals): Renamed ImGuiKeyOwner_None to ImGuiKeyOwner_NoOwner, to make use more |
| explicit and reduce confusion with the fact it is a non-zero value and cannot be a default. |
| - Inputs (Internals): Renamed symbols global routes: |
| Renamed ImGuiInputFlags_RouteGlobalLow -> ImGuiInputFlags_RouteGlobal (this is the suggested global route) |
| Renamed ImGuiInputFlags_RouteGlobal -> ImGuiInputFlags_RouteGlobal | ImGuiInputFlags_RouteOverFocused |
| Renamed ImGuiInputFlags_RouteGlobalHigh -> ImGuiInputFlags_RouteGlobal | ImGuiInputFlags_RouteOverFocused | ImGuiInputFlags_RouteOverActive |
| - Inputs (Internals): Shortcut(), SetShortcutRouting(): swapped last two parameters order |
| in function signatures: |
| Before: Shortcut(ImGuiKeyChord key_chord, ImGuiID owner_id = 0, ImGuiInputFlags flags = 0); |
| After: Shortcut(ImGuiKeyChord key_chord, ImGuiInputFlags flags = 0, ImGuiID owner_id = 0); |
| - Inputs (Internals): owner-aware versions of IsKeyPressed(), IsKeyChordPressed(), IsMouseClicked(): |
| swapped last two parameters order in function signatures: |
| Before: IsKeyPressed(ImGuiKey key, ImGuiID owner_id, ImGuiInputFlags flags = 0); |
| After: IsKeyPressed(ImGuiKey key, ImGuiInputFlags flags, ImGuiID owner_id = 0); |
| Before: IsMouseClicked(ImGuiMouseButton button, ImGuiID owner_id, ImGuiInputFlags flags = 0); |
| After: IsMouseClicked(ImGuiMouseButton button, ImGuiInputFlags flags, ImGuiID owner_id = 0); |
| - For several reasons those changes makes sense. They were all made before making some of |
| those API public. Only past users of imgui_internal.h with the extra parameters will be affected. |
| Added asserts for valid flags in various functions to detect _some_ misuses, BUT NOT ALL. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.6 (Released 2024-05-08) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.6 |
| |
| Breaking changes: |
| |
| - TreeNode: Fixed a layout inconsistency when using a empty/hidden label followed |
| by a SameLine() call. (#7505, #282) |
| Before: TreeNode("##Hidden"); SameLine(); Text("Hello"); |
| // This was actually incorrect! BUT appeared to look ok with the default style |
| // where ItemSpacing.x == FramePadding.x * 2 (it didn't look aligned otherwise). |
| After: TreeNode("##Hidden"); SameLine(0, 0); Text("Hello"); |
| // This is correct for all values in style. |
| With the fix, IF you were successfully using TreeNode("")+SameLine(); you will now |
| have extra spacing between your TreeNode and the following item. You'll need to change |
| the SameLine() call to SameLine(0,0) to remove this extraneous spacing. |
| This seemed like the more sensible fix that's not making things less consistent. |
| (Note: when using this idiom you are likely to also use ImGuiTreeNodeFlags_SpanAvailWidth). |
| |
| Other changes: |
| |
| - Windows: Changed default ClipRect to extend to windows' left and right borders, |
| instead of adding arbitrary WindowPadding.x * 0.5f space on left and right. |
| That ClipRect half-padding was arbitrary/confusing and inconsistent with Y axis. |
| It also made it harder to draw items covering whole window without pushing an |
| extended ClipRect. Some items near windows left and right edge that used to be clipped |
| may be partly more visible. (#3312, #7540, #3756, #6170, #6365) |
| - Windows: Fixed subsequent Begin() append calls from setting last item information |
| for title bar, making it impossible to use IsItemHovered() on a Begin()-to-append, |
| and causing issue bypassing hover detection on collapsed windows. (#7506, #823) |
| - Fonts: Fixed font ascent and descent calculation when a font hits exact integer values. |
| It is possible that some prior manual use of ImFontConfig::GlyphOffset may become |
| duplicate with this fix. (#7399, #7404) [@GamingMinds-DanielC] |
| - TreeNode: Added ImGuiTreeNodeFlags_SpanTextWidth to make hitbox and highlight only |
| cover the label. (#6937) [@dimateos] |
| - Tables: Angled headers: fixed multi-line label display when angle is flipped. (#6917) |
| - Tables: Angled headers: added style.TableAngledHeadersTextAlign and corresponding |
| ImGuiStyleVar_TableAngledHeadersTextAlign variable. Default to horizontal center. (#6917) |
| [@thedmd, @ocornut] |
| - ProgressBar: Added support for indeterminate progress bar by passing an animated |
| negative fraction, e.g. ProgressBar(-1.0f * GetTime()). (#5316, #5370, #1901)[@gan74] |
| - Text, DrawList: Improved handling of long single-line wrapped text. Faster and |
| mitigate issues with reading vertex indexing limits with 16-bit indices. (#7496, #5720) |
| - Backends: OpenGL3: Detect ES3 contexts on desktop based on version string, |
| to e.g. avoid calling glPolygonMode() on them. (#7447) [@afraidofdark, @ocornut] |
| - Backends: OpenGL3: Update loader for Linux to support EGL/GLVND. (#7562) [@ShadowNinja, @vanfanel] |
| - Backends: Vulkan: Added convenience support for Volk via IMGUI_IMPL_VULKAN_USE_VOLK define. |
| (you could always use IMGUI_IMPL_VULKAN_NO_PROTOTYPES + ImGui_ImplVulkan_LoadFunctions() as well). |
| (#6582, #4854) [@adalsteinnh, @kennyalive, @ocornut] |
| - Backends: SDL3: Fixed text inputs. Re-enable calling SDL_StartTextInput()/SDL_StopTextInput() |
| as SDL3 no longer enables it by default. (#7452, #6306, #6071, #1953) [@Green-Sky] |
| - Examples: GLFW+Vulkan, SDL+Vulkan: Added optional support for Volk. (#6582, #4854) |
| - Examples: GLFW+WebGPU: Added support for WebGPU-native/Dawn (#7435, #7132) [@eliasdaler, @Zelif] |
| - Examples: GLFW+WebGPU: Renamed example_emscripten_wgpu/ to example_glfw_wgpu/. (#7435, #7132) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.5 (Released 2024-04-11) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.5 |
| |
| Breaking changes: |
| |
| - More formally obsoleted GetKeyIndex() when IMGUI_DISABLE_OBSOLETE_FUNCTIONS is set. |
| It has been unnecessary and a no-op since 1.87 (it returns the same value as passed |
| when used with a 1.87+ backend using io.AddKeyEvent() function). (#4921) |
| - IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) --> IsKeyPressed(ImGuiKey_XXX) |
| - ImDrawList: Merged the radius_x/radius_y parameters in AddEllipse(), AddEllipseFilled() |
| and PathEllipticalArcTo() into a single ImVec2 parameter. Exceptionally, because those |
| functions were added recently in 1.90, we are not adding inline redirection functions. |
| The transition is easy and should affect few users. (#2743, #7417) [@cfillion] |
| |
| Other changes: |
| |
| - Windows: Scrollbar visibility decision uses current size when both size and contents |
| size are submitted by API. (#7252) |
| - Windows: Double-click to collapse may be disabled via key-ownership mechanism. (#7369) |
| - Windows: BeginChild(): Extend outer resize borders to the edges when there are no corner |
| grips. Essentially affects resizable child windows. (#7440, #1710) [@cfillion] |
| - Windows: BeginChild(): Resizing logic for child windows evaluates whether per-axis clamping |
| should be applied based on parent scrollbars, not child scrollbars. (#7440, #1710) [@cfillion] |
| Adjust those resizing limits to match window padding rather than inner clipping rectangle. |
| - Tables: Fixed auto-width columns when using synced-instances of same table, width of |
| one instance would bleed into next one instead of sharing their widths. (#7218) |
| - Tables: Angled headers: fixed border hit box extending beyond when used within |
| non-scrollable tables. (#7416) [@cfillion] |
| - Tables: Angled headers: fixed borders not moving back up after TableAngleHeadersRow() |
| stops being called. (#7416) [@cfillion] |
| - Tables: Angled headers: rounding header size to nearest integers, fixes some issues |
| when using clipper. |
| - Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive |
| frames would erroneously close the window. While it is technically a popup issue |
| it would generally manifest when fast moving the mouse bottom to top in a sub-menu. |
| (#7325, #7287, #7063) |
| - ProgressBar: Fixed passing fraction==NaN from leading to a crash. (#7451) |
| - ListBox: Fixed text-baseline offset when using SameLine()+Text() after a labeled ListBox(). |
| - Drags, Sliders, Inputs: Fixed io.PlatformLocaleDecimalPoint decimal point localization |
| feature not working regression from 1.90.1. (#7389, #6719, #2278) [@GamingMinds-DanielC] |
| - Style: Added ImGuiStyleVar_TabBorderSize, ImGuiStyleVar_TableAngledHeadersAngle for |
| consistency. (#7411) [@cfillion] |
| - DrawList: Added AddConcavePolyFilled(), PathFillConcave() concave filling. (#760) [@thedmd] |
| Note that only simple polygons (no self-intersections, no holes) are supported. |
| - DrawList: Allow AddText() to accept null ranges. (#3615, 7391) |
| - Docs: added more wiki links to headers of imgui.h/imgui.cpp to facilitate discovery |
| of interesting resources, because github doesn't allow Wiki to be crawled by search engines. |
| - This is the main wiki: https://github.com/ocornut/imgui/wiki |
| - This is the crawlable version: https://github-wiki-see.page/m/ocornut/imgui/wiki |
| Adding a link to the crawlable version, even though it is not intended for humans, |
| to increase its search rank. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.4 (Released 2024-02-22) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.4 |
| |
| Other changes: |
| |
| - Nav: Fixed SetKeyboardFocusHere() or programmatic tabbing API from not working on |
| windows with the ImGuiWindowFlags_NoNavInputs flag (regression in 1.90.2, which |
| among other things broke imgui_memory_editor). |
| - Menus, Popups: Fixed an issue where hovering a parent-menu upward would |
| erroneously close the window. (#7325, #7287, #7063) |
| - Popups: Fixed resizable popup minimum size being too small. Standardized minimum |
| size logic. (#7329). |
| - Modals: Temporary changes of ImGuiCol_ModalWindowDimBg are properly handled by |
| BeginPopupModal(). (#7340) |
| - Tables: Angled headers: fixed support for multi-line labels. (#6917) |
| - Tables: Angled headers: various fixes to accurately handle CellPadding changes. (#6917) |
| - Tables: Angled headers: properly registers horizontal component of angled headers |
| for auto-resizing of columns. (#6917) |
| - Tables: Angled headers: fixed TableAngledHeadersRow() incorrect background fill |
| drawn too low, particularly visible with tables that have no scrolling. (#6917) |
| - ProgressBar: Fixed a minor tessellation issue when rendering rounded progress bars, |
| where in some situations the rounded section wouldn't follow regular tessellation rules. |
| - Debug Tools: Item Picker: Promoted ImGui::DebugStartItemPicker() to public API. (#2673) |
| - Debug Tools: Item Picker: Menu entry visible in Demo->Tools but greyed out unless |
| io.ConfigDebugIsDebuggerPresent is set. (#2673) |
| - Misc: Added optional alpha multiplier parameter to GetColorU32(ImU32) variant. |
| - Demo: Custom Rendering: better demonstrate PathArcTo(), PathBezierQuadraticCurveTo(), |
| PathBezierCubicCurveTo(), PathStroke(), PathFillConvex() functions. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.3 (Released 2024-02-14) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.3 |
| |
| Breaking changes: |
| |
| - Backends: SDL2: Removed obsolete ImGui_ImplSDL2_NewFrame(SDL_Window*) signature which |
| was obsoleted in 1.84. Calling ImGui_ImplSDL2_NewFrame() is fine. |
| - Backends: Vulkan: Moved RenderPass parameter from ImGui_ImplVulkan_Init() function to |
| ImGui_ImplVulkan_InitInfo structure. Not required when using dynamic rendering. (#7308) [@shawnhatori] |
| - Backends: Vulkan: Using dynamic rendering now require filling the PipelineRenderingCreateInfo |
| structure in ImGui_ImplVulkan_InitInfo, allowing to configure color/depth/stencil formats. |
| Removed ColorAttachmentFormat field previously provided for dynamic rendering. |
| (#7166, #6855, #5446, #5037) [@shawnhatori] |
| |
| Other changes: |
| |
| - Menus, Popups: Fixed menus and popups with ChildWindow flag erroneously not displaying |
| a scrollbar when contents is over parent viewport size. (#7287, #7063) [@ZingBallyhoo] |
| - Backends: SDL2, SDL3: Handle gamepad disconnection + fixed increasing gamepad reference |
| counter continuously. Added support for multiple simultaneous gamepads. |
| Added ImGui_ImplSDL2_SetGamepadMode()) function to select whether to automatically pick |
| first available gamepad, all gamepads, or specific gamepads. |
| (#3884, #6559, #6890, #7180) [@ocornut, @lethal-guitar, @wn2000, @bog-dan-ro] |
| - Backends: SDL3: Fixed gamepad handling. (#7180) [@bog-dan-ro] |
| - Backends: SDLRenderer3: query newly added SDL_RenderViewportSet() to not restore |
| a wrong viewport if none was initially set. |
| - Backends: DirectX9: Using RGBA format when allowed by the driver to avoid CPU side |
| conversion. (#6575) [@Demonese] |
| - Internals: Fixed ImFileOpen not working before context is created, preventing creation |
| of a font atlas before main context creation. (#7314, #7315) [@PathogenDavid, @ocornut] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.2 (Released 2024-02-09) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.2 |
| |
| Breaking changes: |
| |
| - Commented out ImGuiIO::ImeWindowHandle obsoleted in 1.87 in favor of writing |
| to 'void* ImGuiViewport::PlatformHandleRaw'. |
| - Backends: WebGPU: ImGui_ImplWGPU_Init() now takes a ImGui_ImplWGPU_InitInfo structure |
| instead of variety of parameters, allowing for easier further changes. (#7240) |
| |
| Other changes: |
| |
| - Nav: keyboard/gamepad activation mark widgets as held to give better visual feedback. |
| - Nav: tweak to logic marking navigated item as hovered when using keyboard, allowing |
| the hover highlight to stay even while another item is activated. |
| - Nav: Fixed SetKeyboardFocusHere() not working when current nav focus is in different scope, |
| regression from 1.90.1 related to code scoping Tab presses to local scope. (#7226) [@bratpilz] |
| - Nav: Fixed pressing Escape while in a child window with _NavFlattened flag. (#7237) |
| - Nav: Improve handling of Alt key to toggle menu so that key ownership may be claimed on |
| individual left/right alt key without interfering with the other. |
| - Nav, Menus: Fixed click on a BeginMenu() followed by right-arrow from making the child menu |
| reopen and flicker (using ImGuiPopupFlags_NoReopen). |
| - Nav: ImGuiWindowFlags_NoNavInputs is tested during scoring so NavFlattened windows can use it. |
| - Popups: OpenPopup(): added ImGuiPopupFlags_NoReopen flag to specifically not close and reopen |
| a popup when it is already open. (#1497, #1533) |
| (Note that this differs from specific handling we already have in place for the case of calling |
| OpenPopup() repeatedly every frame: we already didn't reopen in that specific situation, otherwise |
| the effect would be very disastrous in term of confusion, as reopening would steal focus). |
| - Popups: Slight change to popup closing logic (e.g. after focusing another window) which skipped |
| over popups that are also child windows. |
| - Combo: Fixed not reusing windows optimally when used inside a popup stack. |
| - Debug Tools: Metrics: Fixed debug break in SetShortcutRouting() not handling ImGuiMod_Shortcut redirect. |
| - Debug Tools: Metrics: Improved Monitors and Viewports minimap display. Highlight on hover. |
| - Debug Tools: Debug Log: Added "Input Routing" logging. |
| - Debug Tools: Added "nop" to IM_DEBUG_BREAK macro on GCC to work around GDB bug (#7266) [@Peter0x44] |
| - Backends: Vulkan: Fixed vkAcquireNextImageKHR() validation errors in VulkanSDK 1.3.275 by |
| allocating one extra semaphore than in-flight frames. (#7236) [@mklefrancois] |
| - Backends: Vulkan: Fixed vkMapMemory() calls unnecessarily using full buffer size. (#3957) |
| - Backends: Vulkan: Fixed handling of ImGui_ImplVulkan_InitInfo::MinAllocationSize field. (#7189, #4238) |
| - Backends: WebGPU: Added ImGui_ImplWGPU_InitInfo::PipelineMultisampleState. (#7240) |
| - Backends: WebGPU: Filling all WGPUDepthStencilState fields explicitly as a recent Dawn |
| update stopped setting default values. (#7232) [@GrigoryGraborenko] |
| - Backends: WebGPU: Fixed pipeline layout leak. (#7245) [@rajveermalviya] |
| - Backends: OpenGL3: Backup and restore GL_PIXEL_UNPACK_BUFFER. (#7253) |
| - Internals: Many improvements related to yet unpublicized shortcut routing and input ownership systems. |
| - Internals: InputText: Added internal helpers to force reload of user-buf when active. (#2890) [@kudaba, @ocornut] |
| Often requested in some form (#6962, #5219, #3290, #4627, #5054, #3878, #2881, #1506, #1216, #968), |
| and useful for interactive completion/suggestions popups (#2057, #718) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.1 (Released 2024-01-10) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90.1 |
| |
| Breaking changes: |
| |
| - imgui_freetype: commented out ImGuiFreeType::BuildFontAtlas() obsoleted in 1.81. |
| Prefer using #define IMGUI_ENABLE_FREETYPE or see commented code for manual calls. |
| - Removed CalcListClipping() marked obsolete in 1.86. (#3841) |
| Prefer using ImGuiListClipper which can return non-contiguous ranges. |
| - Internals, Columns: commented out legacy ImGuiColumnsFlags_XXX symbols redirecting |
| to ImGuiOldColumnsFlags_XXX, obsoleted from imgui_internal.h in 1.80. |
| - Commented out obsolete ImGuiKey_KeyPadEnter redirection to ImGuiKey_KeypadEnter. (#2625, #7143) |
| |
| Other changes: |
| |
| - Windows: |
| - BeginChild(): Fixed auto-resizing erroneously limiting size to host viewport |
| minus padding. There are no limit to a child width/height. (#7063) [@Devyre] |
| - BeginChild(): Resize borders rendered even when ImGuiWindowFlags_NoBackground |
| is specified. (#1710, #7194) |
| - Fixed some auto-resizing path using style.WindowMinSize.x (instead of x/y) |
| for both axises since 1.90. (#7106) [@n0bodysec] |
| - Scrolling: internal scrolling value is rounded instead of truncated, as a way to reduce |
| speed asymmetry when (incorrectly) attempting to scroll by non-integer amount. (#6677) |
| - Navigation (Keyboard/gamepad): |
| - Nav, IO: SetNextFrameWantCaptureKeyboard(false) calls are not overridden back to true when |
| navigation is enabled. SetNextFrameWantCaptureKeyboard() is always higher priority. (#6997) |
| - Nav: Activation can also be performed with Keypad Enter. (#5606) |
| - Drag and Drop: |
| - Fixed drop target highlight on items temporarily pushing a widened clip rect |
| (namely Selectables and Treenodes using SpanAllColumn flag) so the highlight properly covers |
| all columns. (#7049, #4281, #3272) |
| - InputText: |
| - InputTextMultiline: Fixed Tab character input not repeating (1.89.4 regression). |
| - InputTextMultiline: Tabbing through a multi-line text editor which allows Tab character inputs |
| (using the ImGuiInputTextFlags_AllowTabInput flag) doesn't automatically activate it, in order |
| to allow passing through multiple widgets easily. (#3092, #5759, #787) |
| - Drags, Sliders, Inputs: |
| - DragScalarN, SliderScalarN, InputScalarN: Fixed incorrect pushes into ItemWidth |
| stack when number of components is 1. [#7095] [@Nahor] |
| - Drags, Sliders, Inputs: removed all attempts to filter non-numerical characters during text |
| editing. Invalid inputs not applied to value, visibly reverted after validation. (#6810, #7096) |
| - Drags, Sliders, Inputs: removal of filter means that "nan" and "inf" values may be input. (#7096) |
| - DragScalarN, SliderScalarN, InputScalarN, PushMultiItemsWidths: improve multi-components |
| width computation to better distribute the error. (#7120, #7121) [@Nahor] |
| - Menus: |
| - Tweaked hover slack logic, adding an extra timeout to avoid situations where a slow vertical |
| movements toward another parent BeginMenu() can keep the wrong child menu open. (#6671, #6926) |
| - Color Editors: |
| - ColorEdit: Layout tweaks for very small sizes. (#7120, #7121) |
| - ColorPicker: Fixed saturation/value cursor radius not scaling properly. |
| - Tabs: Added ImGuiTabItemFlags_NoAssumedClosure to enable app to react on closure attempt, |
| without having to draw an unsaved document marker (ImGuiTabItemFlags_UnsavedDocument sets |
| _NoAssumedClosure automatically). (#7084) |
| - Debug Tools: |
| - Added io.ConfigDebugIsDebuggerPresent option. When enabled, this adds buttons in various |
| locations of Metrics/Debugger to manually request a debugger break: |
| - Request a debug break in a Begin() call. |
| - Request a debug break in a ItemAdd() call via debug log and hovering 0xXXXXXX identifiers. |
| - Request a debug break in a BeginTable() call. |
| - Request a debug break in a SetShortcutRouting()/Shortcut() call. [Internal] |
| - Metrics: Reorganize Tools menu. |
| - Added DebugFlashStyleColor() to identify a style color. Added to Style Editor. |
| - Debug Log: Hide its own clipper log to reduce noise in the output. (#5855) |
| - Debug Log: Clicking any filter with SHIFT held enables it for 2 frames only, |
| making it easier when dealing with spammy logs. (#5855) |
| - Settings: Fixed an issue marking settings as dirty when merely clicking on a border or resize |
| grip without moving it. |
| - Misc: Added IMGUI_USER_H_FILENAME to change the path included when using |
| IMGUI_INCLUDE_IMGUI_USER_H. (#7039) [@bryceberger] |
| - Misc: Rework debug display of texture id in Metrics window to avoid compile-error when |
| ImTextureID is defined to be larger than 64-bits. (#7090) |
| - Misc: Added extra courtesy ==/!= operators when IMGUI_DEFINE_MATH_OPERATORS is defined. |
| - Misc: Fixed text functions fast-path for handling "%s" and "%.*s" to handle null pointers gracefully, |
| like most printf implementations. (#7016, #3466, #6846) [@codefrog2002] |
| - Misc: Renamed some defines in imstb_textedit.h to avoid conflicts when using unity/jumbo builds |
| on a codebase where another copy of the library is used. |
| - Misc: During shutdown, check that io.BackendPlatformUserData and io.BackendRendererUserData are NULL |
| in order to catch cases where backend was not shut down. (#7175) |
| - Misc: Reworked Issue Template to a shinier and better form. (#5927) [@Panquesito7, @PathogenDavid, @ocornut] |
| - Backends: |
| - GLFW, Emscripten: Added ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback() to |
| register canvas selector and auto-resize GLFW window. (#6751) [@Traveller23, @ypujante] |
| - GLFW: Fixed Windows specific hooks to use Unicode version of WndProc even when |
| compiling in MBCS mode. (#7174) [@kimidaisuki22] |
| - OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load libGL.so variants in |
| case of missing symlink. Fix 1.90 regression for some distros. (#6983) |
| - Vulkan: Fixed mismatching allocator passed to vkCreateCommandPool() vs |
| vkDestroyCommandPool(). (#7075) [@FoonTheRaccoon] |
| - Vulkan: Added MinAllocationSize field in ImGui_ImplVulkan_InitInfo to workaround zealous |
| "best practice" validation layer. (#7189, #4238) [@philae-ael] |
| - Vulkan: Stopped creating command pools with VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT |
| as we don't reset them. |
| - WebGPU: Fixed wgpuRenderPassEncoderSetScissorRect() crash when rendering modal window's |
| dimming layer, which has an unclipped value in ImDrawCmd::ClipRect. (#7191) [@aparis69] |
| - Examples: |
| - Examples: GLFW+Emscripten: Fixed examples not consistently resizing according to host canvas. |
| (#6751) [@Traveller23, @ypujante] |
| - Examples: SDL3: Minor fixes following recent SDL3 in-progress development. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.90.0 (Released 2023-11-15) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.90 |
| |
| Breaking changes: |
| |
| - BeginChild(): Upgraded 'bool border = false' parameter to 'ImGuiChildFlags flags = 0'. |
| Added ImGuiChildFlags_Border value. As with our prior "bool-to-flags" API updates, |
| the ImGuiChildFlags_Border value is guaranteed to be == true forever to ensure a |
| smoother transition, meaning all existing calls will still work. |
| If you want to neatly transition your call sites: |
| Before: BeginChild("Name", size, true) |
| After: BeginChild("Name", size, ImGuiChildFlags_Border) |
| Before: BeginChild("Name", size, false) |
| After: BeginChild("Name", size) or BeginChild("Name", 0) or BeginChild("Name", size, ImGuiChildFlags_None) |
| Existing code will still work as 'ImGuiChildFlags_Border == true', but you are encouraged to update call sites. |
| **AMEND FROM THE FUTURE: from 1.91.1, 'ImGuiChildFlags_Border' is called 'ImGuiChildFlags_Borders'** |
| - BeginChild(): Added child-flag ImGuiChildFlags_AlwaysUseWindowPadding as a replacement for |
| the window-flag ImGuiWindowFlags_AlwaysUseWindowPadding: the feature only ever made sense |
| for use with BeginChild() anyhow, passing it to Begin() had no effect. Now that we accept |
| child-flags we are moving it there. (#462) |
| Before: BeginChild("Name", size, 0, ImGuiWindowFlags_AlwaysUseWindowPadding); |
| After: BeginChild("Name", size, ImGuiChildFlags_AlwaysUseWindowPadding, 0); |
| Kept inline redirection enum (will obsolete later) so existing code will work. |
| - BeginChildFrame()/EndChildFrame(): removed functions in favor of using BeginChild() with |
| the ImGuiChildFlags_FrameStyle flag. Kept inline redirection function (will obsolete). |
| Those functions were merely PushStyle/PopStyle helpers and custom versions are easy to create. |
| (The removal isn't so much motivated by needing to add the feature in BeginChild(), but by the |
| necessity to avoid BeginChildFrame() signature mismatching BeginChild() signature and features.) |
| - Debug Tools: Renamed ShowStackToolWindow() ("Stack Tool") to ShowIDStackToolWindow() ("ID Stack Tool"), |
| as earlier name was misleading. Kept inline redirection function. (#4631) |
| - IO: Removed io.MetricsActiveAllocations introduced in 1.63, was displayed in Metrics and unlikely to |
| be accessed by end-user. Value still visible in the UI and easily to recompute from a delta. |
| - Defining IMGUI_DISABLE_OBSOLETE_FUNCTIONS now automatically defines IMGUI_DISABLE_OBSOLETE_KEYIO. (#4921) |
| - Removed IM_OFFSETOF() macro in favor of using offsetof() available in C++11. Kept redirection define. (#4537) |
| - ListBox, Combo: Changed signature of "name getter" callback in old one-liner ListBox()/Combo() apis. |
| Before: |
| getter type: bool (*getter)(void* user_data, int idx, const char** out_text) |
| function: bool Combo(const char* label, int* current_item, bool (*getter)(void* user_data, int idx, const char** out_text), ...); |
| function: bool ListBox(const char* label, int* current_item, bool (*getting)(void* user_data, int idx, const char** out_text), ...); |
| After: |
| getter type: const char* (*getter)(void* user_data, int idx) |
| function: bool Combo(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...); |
| function: bool ListBox(const char* label, int* current_item, const char* (*getter)(void* user_data, int idx), ...); |
| Old type was unnecessarily complex and harder to wrap in e.g. a lambda. Kept inline redirection function (will obsolete). |
| - Commented out obsolete redirecting enums/functions that were marked obsolete two years ago: |
| - GetWindowContentRegionWidth() -> use GetWindowContentRegionMax().x - GetWindowContentRegionMin().x. |
| Consider that generally 'GetContentRegionAvail().x' is often more correct and more useful. |
| - ImDrawCornerFlags_XXX -> use ImDrawFlags_RoundCornersXXX names. |
| Read 1.82 changelog for details + grep commented names in sources. |
| - Commented out runtime support for hardcoded ~0 or 0x01..0x0F rounding flags values for |
| AddRect()/AddRectFilled()/PathRect()/AddImageRounded(). -> Use ImDrawFlags_RoundCornersXXX flags. |
| Read 1.82 changelog for details. |
| - Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own |
| command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. |
| No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). |
| You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload the font atlas texture. |
| (#6943, #6715, #6327, #3743, #4618) |
| |
| Other changes: |
| |
| - Windows: |
| - BeginChild(): Added ImGuiChildFlags_ResizeX and ImGuiChildFlags_ResizeY to allow resizing |
| child windows from the bottom/right border (toward layout direction). Resized child windows |
| settings are saved and persistent in .ini file. (#1710) |
| - BeginChild(): Added ImGuiChildFlags_Border as a replacement for 'bool border = true' parameter. |
| **AMEND FROM THE FUTURE: from 1.91.1, 'ImGuiChildFlags_Border' is called 'ImGuiChildFlags_Borders'** |
| - BeginChild(): Added ImGuiChildFlags_AutoResizeX and ImGuiChildFlags_AutoResizeY to auto-resize |
| on one axis, while generally providing a size on the other axis. (#1666, #1395, #1496, #1710) |
| e.g. BeginChild("name", {-FLT_MIN, 0.0f}, ImGuiChildFlags_AutoResizeY); |
| - Size is only reevaluated if the child window is within visible boundaries or just appearing. |
| This allows coarse clipping to be performed and auto-resizing childs to return false when |
| hidden because of being scrolled out. |
| - Combining this with also specifying ImGuiChildFlags_AlwaysAutoResize disables |
| this optimization, meaning child contents will never be clipped (not recommended). |
| - Please be considerate that child are full windows and carry significant overhead: |
| combining auto-resizing for both axises to create a non-scrolling child to merely draw |
| a border would be better more optimally using BeginGroup(). (see #1496) |
| (until we come up with new helpers for framed groups and work-rect adjustments). |
| - BeginChild(): made it possible to use SetNextWindowSizeConstraints() rectangle, often |
| useful when ImGuiChildFlags_AutoResizeX or ImGuiChildFlags_AutoResizeY. (#1666, #1395, #1496) |
| Custom constraint callback are not supported with child window. |
| - BeginChild(): Added ImGuiChildFlags_FrameStyle as a replacement for BeginChildFrame(), |
| use it to make child window use FrameBg, FrameRounding, FrameBorderSize, FramePadding |
| instead of ChildBg, ChildRounding, ChildBorderSize, WindowPadding. |
| - Popups: clarified meaning of 'p_open != NULL' in BeginPopupModal() + set back user value |
| to false when popup is closed in ways other than clicking the close button. (#6900) |
| - Double-clicking lower-left resize grip auto-resize (like lower-right one). |
| - Double-clicking bottom or right window border auto-resize on a singles axis. |
| - Use relative mouse movement for border resize when the border geometry has moved |
| (e.g. resizing a child window triggering parent scroll) in order to avoid resizing |
| feedback loops. Unless manually mouse-wheeling while border resizing. (#1710) |
| - Separators: |
| - Altered end-points to use more standard boundaries. (#205, #4787, #1643) |
| Left position is always current cursor X position, right position is always work-rect |
| rightmost edge. It effectively means that: |
| - A separator in the root of a window will end up a little more distant from edges |
| than previously (essentially following WindowPadding instead of clipping edges). |
| - A separator inside a table cell end up a little distance from edges instead of |
| touching them (essentially following CellPadding instead of clipping edges). |
| - Matches tree indentation (was not the case before). |
| - Matches SeparatorText(). (#1643) |
| - Makes things correct inside groups without specific/hard-coded handling. (#205) |
| - Support legacy behavior when used inside old Columns(), as we favored that idiom back then, |
| only different is left position follows indentation level, to match calling a Separator() |
| inside or outside Columns(). |
| - Tooltips: |
| - Made using SetItemTooltip()/IsItemHovered(ImGuiHoveredFlags_ForTooltip) defaults to |
| activate tooltips on disabled items. This is done by adding ImGuiHoveredFlags_AllowWhenDisabled |
| to the default value of style.HoverFlagsForTooltipMouse/HoverFlagsForTooltipNav. (#1485) |
| - Made is possible to combine ImGuiHoveredFlags_ForTooltip with a ImGuiHoveredFlags_DelayXXX |
| override. (#1485) |
| - Drag and Drop: |
| - Reworked drop target highlight: reduce rectangle to its visible portion, and then expand |
| slightly. A full rectangle is always visible and it may protrude slightly. (#4281, #3272) |
| - Fixed submitting a tooltip from drop target location when using AcceptDragDropPayload() |
| with ImGuiDragDropFlags_AcceptNoPreviewTooltip and submitting a tooltip manually. |
| - Tables: |
| - Added angled headers support. You need to set ImGuiTableColumnFlags_AngledHeader on selected |
| columns and call TableAngledHeadersRow(). Added style.TableAngledHeadersAngle style option. (#6917) |
| - Added ImGuiTableFlags_HighlightHoveredColumn flag, currently highlighting column header. |
| - Fixed an edge-case when no columns are visible + table scrollbar is visible + user |
| code is always testing return value of TableSetColumnIndex() to coarse clip. With an active |
| clipper it would have asserted. Without a clipper, the scrollbar range would be wrong. |
| - Request user to submit contents when outer host-window is requesting auto-resize, |
| so a scrolling table can contribute to initial window size. (#6510) |
| - Fixed subtle drawing overlap between borders in some situations. |
| - Fixed bottom-most and right-most outer border offset by one. (#6765, #3752) [@v-ein] |
| - Fixed top-most and left-most outer border overlapping inner clip-rect when scrolling. (#6765) |
| - Fixed top-most outer border being drawn with both TableBorderLight and TableBorderStrong |
| in some situations, causing the earlier to be visible underneath when alpha is not 1.0f. |
| - Fixed right-clicking right-most section (past right-most column) from highlighting a column. |
| - Fixed an issue with ScrollX enabled where an extraneous draw command would be created. |
| - Menus: |
| - Menus: Fixed a bug where activating an item in a child-menu and dragging mouse over the |
| parent-menu would erroneously close the child-menu. (Regression from 1.88). (#6869) |
| - MenuBar: Fixed an issue where layouting an item in the menu-bar would erroneously |
| register contents size in a way that would affect the scrolling layer. |
| Was most often noticeable when using an horizontal scrollbar. (#6789) |
| - InputText: |
| - InputTextMultiline: Fixed a crash pressing Down on last empty line of a multi-line buffer. |
| (regression from 1.89.2, only happened in some states). (#6783, #6000) |
| - InputTextMultiline: Fixed Tabbing cycle leading to a situation where Enter key wouldn't |
| be accepted by the widget when navigation highlight is visible. (#6802, #3092, #5759, #787) |
| - Nav: Tabbing always enable nav highlight when ImGuiConfigFlags_NavEnableKeyboard is set. |
| Previously was inconsistent and only enabled when stepping through a non-input item. |
| (#6802, #3092, #5759, #787) |
| - TreeNode: Added ImGuiTreeNodeFlags_SpanAllColumns for use in tables. (#3151, #3565, #2451, #2438) |
| - TabBar: Fixed position of unsaved document marker (ImGuiTabItemFlags_UnsavedDocument) which was |
| accidentally offset in 1.89.9. (#6862) [@alektron] |
| - ColorPicker4(): Fixed ImGuiColorEditFlags_NoTooltip not being forwarded to individual DragFloat3 |
| sub-widgets which have a visible color preview when ImGuiColorEditFlags_NoSidePreview is also set. (#6957) |
| - BeginGroup(): Fixed a bug pushing line lower extent too far down when called after a call |
| to SameLine() followed by manual cursor manipulation. |
| - BeginCombo(): Added ImGuiComboFlags_WidthFitPreview flag. (#6881) [@mpv-enjoyer] |
| - BeginListBox(): Fixed not consuming SetNextWindowXXX() data when returning false. |
| - Fonts: |
| - Argument 'float size_pixels' passed to AddFontXXX() functions is now rounded to lowest integer. |
| This is because our layout/font system currently doesn't fully support non-integer sizes. Until |
| it does, this has been a common pitfall leading to more or less subtle issues. (#3164, #3309, #6800) |
| - Better assert during load when passing truncated font data or wrong data size. (#6822) |
| - Ensure calling AddFontXXX function doesn't invalidates ImFont's ConfigData pointers |
| prior to building again. (#6825) |
| - Added ImFontConfig::RasterizerDensity field to increase texture size of rendered glyphs |
| without altering other metrics. Among other things, this makes it easier to have zooming code |
| swapping between 2 fonts (e.g. a 100% and a 400% fonts) depending on current scale. (#6925) [@thedmd] |
| Important: if you increase this it is expected that you would render the font with a scale of |
| similar value or magnitude. Merely increasing this without increasing scale may lower quality. |
| - imgui_freetype: Added support for RasterizerDensity. (#6925) [@thedmd] |
| - imgui_freetype: Fixed a warning and leak in IMGUI_ENABLE_FREETYPE_LUNASVG support. (#6842, #6591) |
| - Inputs: Added IsKeyChordPressed() helper function e.g. IsKeyChordPressed(ImGuiMod_Ctrl | ImGuiKey_S). |
| (note that ImGuiMod_Shortcut may be used as an alias for Cmd on OSX and Ctrl on other systems). |
| - Misc: Most text functions also treat "%.*s" (along with "%s") specially to bypass formatting. (#3466, #6846) |
| - IO: Add extra keys to ImGuiKey enum: ImGuiKey_F13 to ImGuiKey_F24. (#6891, #4921) |
| - IO: Add extra keys to ImGuiKey enum: ImGuiKey_AppBack, ImGuiKey_AppForward. (#4921) |
| - IO: Setting io.WantSetMousePos ignores incoming MousePos events. (#6837, #228) [@bertaye] |
| - Debug Tools: Metrics: Added log of recent alloc/free calls. |
| - Debug Tools: Metrics: Added "Show groups rectangles" in tools. |
| - ImDrawList: Added AddEllipse(), AddEllipseFilled(), PathEllipticalArcTo(). (#2743) [@Doohl] |
| - ImVector: Added find_index() helper. |
| - Demo: Added "Drag and Drop -> Tooltip at target location" demo. |
| - Demo: Added "Layout -> Child Windows -> Manual-resize" demo. (#1710) |
| - Demo: Added "Layout -> Child Windows -> Auto-resize with constraints" demo. (#1666, #1395, #1496, #1710) |
| - Demo: Partly fixed "Examples -> Constrained-resizing window" custom constrains demo. (#6210) [@cfillion] |
| - Backends: Vulkan: Removed parameter from ImGui_ImplVulkan_CreateFontsTexture(): backend now creates its own |
| command-buffer to upload fonts. Removed ImGui_ImplVulkan_DestroyFontUploadObjects() which is now unnecessary. |
| No need to call ImGui_ImplVulkan_CreateFontsTexture() as it is done automatically in ImGui_ImplVulkan_NewFrame(). |
| You can call ImGui_ImplVulkan_CreateFontsTexture() manually if you need to reload font atlas texture. |
| Fixed leaks, and added ImGui_ImplVulkan_DestroyFontsTexture() (probably no need to call this directly). |
| (#6943, #6715, #6327, #3743, #4618) |
| [@helynranta, @thomasherzog, @guybrush77, @albin-johansson, @MiroKaku, @benbatya-fb, @ocornut] |
| - Backends: GLFW: Clear emscripten's MouseWheel callback before shutdown. (#6790, #6096, #4019) [@halx99] |
| - Backends: GLFW: Added support for F13 to F24 function keys. (#6891) |
| - Backends: SDL2, SDL3: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891) |
| - Backends: SDL3: Updates for recent API changes. (#7000, #6974) |
| - Backends: Win32: Added support for F13 to F24 function keys, AppBack, AppForward. (#6891) |
| - Backends: Win32: Added support for keyboard codepage conversion for when application |
| is compiled in MBCS mode and using a non-Unicode window. (#6785, #6782, #5725, #5961) [@sneakyevil] |
| - Backends: Win32: Synthesize key-down event on key-up for VK_SNAPSHOT / ImGuiKey_PrintScreen as Windows |
| doesn't emit it (same behavior as GLFW/SDL). (#6859) [@thedmd, @SuperWangKai] |
| - Backends: OpenGL3: rename symbols in our internal loader so that LTO compilation with another |
| copy of gl3w becomes possible. (#6875, #6668, #4445) [@nicolasnoble] |
| - Backends: OpenGL3: Update GL3W based imgui_impl_opengl3_loader.h to load "libGL.so" instead |
| of "libGL.so.1", accommodating for NetBSD systems having only "libGL.so.3" available. (#6983) |
| - Backends: OSX: Added support for F13 to F20 function keys. Support mapping F13 to PrintScreen. (#6891) |
| - Examples: GLFW+Vulkan, SDL+Vulkan: Simplified and removed code due to backend improvements. |
| - Internals: Renamed ImFloor() to ImTrunc(). Renamed ImFloorSigned() to ImFloor(). (#6861) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.9 (Released 2023-09-04) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.9 |
| |
| Breaking changes: |
| |
| - Clipper: Renamed IncludeRangeByIndices(), also called ForceDisplayRangeByIndices() |
| before 1.89.6, to IncludeItemsByIndex(). Kept inline redirection function. (#6424, #3841) |
| |
| Other changes: |
| |
| - Tables: Made it possible to use SameLine(0,0) after TableNextColumn() or |
| TableSetColumnIndex() in order to reuse line pos/height from previous cell. (#3740) |
| - Tables: Made it possible to change style.CellPadding.y between rows. (#3740) |
| - Nav, TreeNode: Pressing Left with ImGuiTreeNodeFlags_NavLeftJumpsBackHere now goes |
| through proper navigation logic: honor scrolling and selection. (#1079, #1131) |
| - Sliders: Fixed an integer overflow and div-by-zero in SliderInt() when |
| v_max=INT_MAX (#6675, #6679) [@jbarthelmes] |
| - Windows: Layout of Close/Collapse buttons uses style.ItemInnerSpacing.x between items, |
| stopped incorrectly using FramePadding in a way where hit-boxes could overlap when |
| setting large values. (#6749) |
| - TabBar, Style: added style.TabBarBorderSize and associated ImGuiStyleVar_TabBarBorderSize. |
| Tweaked rendering of that separator to allow thicker values. (#6820, #4859, #5022, #5239) |
| - InputFloat, SliderFloat, DragFloat: always turn both '.' and ',' into the current decimal |
| point character when using Decimal/Scientific character filter. (#6719, #2278) [@adamsepp] |
| - ColorEdit, ColorPicker: Manipulating options popup don't mark item as edited. (#6722) |
| (Note that they may still be marked as Active/Hovered.) |
| - Clipper: Added IncludeItemByIndex() helper to include a single item. (#6424, #3841) |
| - Clipper: Fixed a bug if attempt to force-include a range which matches an already |
| included range, clipper would end earlier. (#3841) |
| - ImDrawData: Fixed an issue where TotalVtxCount/TotalIdxCount does not match the sum |
| of individual ImDrawList's buffer sizes when a dimming/modal background is rendered. (#6716) |
| - ImDrawList: Automatically calling ChannelsMerge() if not done after a split. |
| - ImDrawList: Fixed OOB access in _CalcCircleAutoSegmentCount when passing excessively |
| large radius to AddCircle(). (#6657, #5317) [@EggsyCRO, @jdpatdiscord] |
| - IO: Exposed io.PlatformLocaleDecimalPoint to configure decimal point ('.' or ',') for |
| languages needing it. Should ideally be set to the value of '*localeconv()->decimal_point' |
| but our backends don't do it yet. (#6719, #2278) |
| - IO: Fixed io.AddMousePosEvent() and io.AddMouseButtonEvent() writing MouseSource to |
| wrong union section. Was semantically incorrect and accidentally had no side-effects |
| with default compiler alignment settings. (#6727) [@RickHuang2001] |
| - Misc: Made multiple calls to Render() during the same frame early out faster. |
| - Debug Tools: Metrics: Fixed "Drawlists" section and per-viewport equivalent |
| appearing empty (regression in 1.89.8). |
| - Demo: Reorganized "Examples" menu. |
| - Demo: Tables: Demonstrate using SameLine() between cells. (#3740) |
| - Demo: Tables: Demonstrate altering CellPadding.y between rows. (#3740) |
| - Demo: Custom Rendering: Demonstrate out-of-order rendering using ImDrawListSplitter. |
| - Backends: SDL2,SDL3: added ImGui_ImplSDL2_InitForOther()/ImGui_ImplSDL3_InitForOther() |
| for consistency (matching GLFW backend) and as most initialization paths don't actually |
| need to care about rendering backend. |
| - Examples: Emscripten+WebGPU: Fixed WGPUInstance creation process + use preferred |
| framebuffer format. (#6640, #6748) [@smileorigin] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.8 (Released 2023-08-01) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.8 |
| |
| Breaking changes: |
| |
| - IO: Obsoleted io.ClearInputCharacters() (added in 1.47) as it now ambiguous |
| and often incorrect/misleading considering the existence of a higher-level |
| input queue. This is automatically cleared by io.ClearInputKeys(). (#4921) |
| - ImDrawData: CmdLists[] array is now owned, changed from 'ImDrawList**' to |
| 'ImVector<ImDrawList*>'. Majority of users shouldn't be affected, but you |
| cannot compare to NULL nor reassign manually anymore. |
| Instead use AddDrawList(). Allocation count are identical. (#6406, #4879, #1878) |
| |
| Other changes: |
| |
| - Fonts: ImFontConfig::OversampleH now defaults to 2 instead of 3, since the |
| quality increase is largely minimal. |
| - Fonts, imgui_freetype: Added support to render OpenType SVG fonts using lunasvg. |
| Requires enabling IMGUI_ENABLE_FREETYPE_LUNASVG along with IMGUI_ENABLE_FREETYPE, |
| and providing headers/libraries for lunasvg. (#6591, #6607) [@sakiodre] |
| - ImDrawData: CmdLists[] array is now an ImVector<> owned by ImDrawData rather |
| than a pointer to internal state. |
| - This makes it easier for user to create their own or append to an existing draw data. |
| Added a ImDrawData::AddDrawList() helper function to do that. (#6406, #4879, #1878) |
| - This makes it easier to perform a deep-swap instead of a deep-copy, as array |
| ownership is now clear. (#6597, #6475, #6167, #5776, #5109, #4763, #3515, #1860) |
| - Syntax and allocation count are otherwise identical. |
| - Fixed CTRL+Tab dimming background assert when target window has a callback |
| in the last ImDrawCmd. (#4857, #5937) |
| - IsItemHovered: Fixed ImGuiHoveredFlags_ForTooltip for Keyboard/Gamepad navigation, |
| got broken prior to 1.89.7 due to an unrelated change making flags conflict. (#6622, #1485) |
| - InputText: Fixed a case where deactivation frame would write to underlying |
| buffer or call CallbackResize although unnecessary, in a frame where the |
| return value was false. |
| - Tables: fixed GetContentRegionAvail().y report not taking account of lower cell |
| padding or of using ImGuiTableFlags_NoHostExtendY. Not taking it into account |
| would make the idiom of creating vertically bottom-aligned content (e.g. a child |
| window) inside a table make the parent window erroneously have a scrollbar. (#6619) |
| - Tables: fixed calculation of multi-instance shared decoration/scrollbar width of |
| scrolling tables, to avoid flickering width variation when resizing down a table |
| hosting a child window. (#5920, #6619) |
| - Scrollbar: layout needs to take account of window border size, so a border size |
| will slightly reduce scrollbar size. Generally we tried to make it that window |
| border size has no incidence on layout but this can't work with thick borders. (#2522) |
| - IO: Added io.ClearEventsQueue() to clear incoming inputs events. (#4921) |
| May be useful in conjunction with io.ClearInputKeys() if you need to clear |
| both current inputs state and queued events (e.g. when using blocking native |
| dialogs such as Windows's ::MessageBox() or ::GetOpenFileName()). |
| - IO: Changed io.ClearInputKeys() specs to also clear current frame character buffer |
| (what now obsoleted io.ClearInputCharacters() did), as this is effectively the |
| desirable behavior. |
| - Misc: Added IMGUI_DISABLE_STB_SPRINTF_IMPLEMENTATION config macro to disable |
| stb_sprintf implementation when using IMGUI_USE_STB_SPRINTF. (#6626) [@septag] |
| - Misc: Avoid stb_textedit.h reincluding string.h while in a namespace, which |
| messes up with building with Clang Modules. (#6653, #4791) [@JohelEGP] |
| - Demo: Better showcase use of SetNextItemAllowOverlap(). (#6574, #6512, #3909, #517) |
| - Demo: Showcase a few more InputText() flags. |
| - Backends: Made all backends sources files support global IMGUI_DISABLE. (#6601) |
| - Backends: GLFW: Revert ignoring mouse data on GLFW_CURSOR_DISABLED as it can be used |
| differently. User may set ImGuiConfigFlags_NoMouse if desired. (#5625, #6609) [@scorpion-26] |
| - Backends: WebGPU: Update for changes in Dawn. (#6602, #6188) [@williamhCode] |
| - Examples: Vulkan: Creating minimal descriptor pools to fit only what is needed by |
| example. (#6642) [@SaschaWillem] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.7 (Released 2023-07-04) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.7 |
| |
| Breaking changes: |
| |
| - Moved io.HoverDelayShort/io.HoverDelayNormal to style.HoverDelayShort/style.HoverDelayNormal. |
| As the fields were added in 1.89 and expected to be left unchanged by most users, or only |
| tweaked once during app initialisation, we are exceptionally accepting the breakage. |
| Majority of users should not even notice. |
| - Overlapping items: (#6512, #3909, #517) |
| - Added 'SetNextItemAllowOverlap()' (called before an item) as a replacement for using |
| 'SetItemAllowOverlap()' (called after an item). This is roughly equivalent to using the |
| legacy 'SetItemAllowOverlap()' call (public API) + ImGuiButtonFlags_AllowOverlap (internal). |
| - Obsoleted 'SetItemAllowOverlap()': it didn't and couldn't work reliably since 1.89 (2022-11-15), |
| and relied on ambiguously defined design. Use 'SetNextItemAllowOverlap()' before item instead. |
| - Selectable, TreeNode: When using ImGuiSelectableFlags_AllowOverlap/ImGuiTreeNodeFlags_AllowOverlap |
| and holding item held, overlapping widgets won't appear as hovered. (#6512, #3909) |
| While this fixes a common small visual issue, it also means that calling IsItemHovered() |
| after a non-reactive elements - e.g. Text() - overlapping an active one may fail if you don't |
| use IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByActiveItem). (#6610) |
| - Renamed 'ImGuiTreeNodeFlags_AllowItemOverlap' to 'ImGuiTreeNodeFlags_AllowOverlap'. |
| - Renamed 'ImGuiSelectableFlags_AllowItemOverlap' to 'ImGuiSelectableFlags_AllowOverlap' |
| - Kept redirecting enums (will obsolete). |
| |
| Other changes: |
| |
| - Tooltips/IsItemHovered() related changes: |
| - Tooltips: Added SetItemTooltip() and BeginItemTooltip() functions. |
| They are shortcuts for the common idiom of using IsItemHovered(). |
| - SetItemTooltip("Hello") == if (IsItemHovered(ImGuiHoveredFlags_Tooltip)) { SetTooltip("Hello"); } |
| - BeginItemTooltip() == IsItemHovered(ImGuiHoveredFlags_Tooltip) && BeginTooltip() |
| The newly added ImGuiHoveredFlags_Tooltip is meant to facilitate standardizing |
| mouse hovering delays and rules for a given application. |
| The previously common idiom of using 'if (IsItemHovered()) { SetTooltip(...); }' |
| won't use delay or stationary test. |
| - IsItemHovered: Added ImGuiHoveredFlags_Stationary to require mouse being |
| stationary when hovering a new item. Added style.HoverStationaryDelay (~0.15 sec). |
| Once the mouse has been stationary once the state is preserved for same item. (#1485) |
| - IsItemHovered: Added ImGuiHoveredFlags_ForTooltip as a shortcut for pulling flags |
| from style.HoverFlagsForTooltipMouse or style.HoverFlagsForTooltipNav depending |
| on active inputs (#1485) |
| - style.HoverFlagsForTooltipMouse defaults to 'ImGuiHoveredFlags_Stationary | ImGuiHoveredFlags_DelayShort' |
| - style.HoverFlagsForTooltipNav defaults to 'ImGuiHoveredFlags_NoSharedDelay | ImGuiHoveredFlags_DelayNormal'. |
| - Tooltips: Tweak default offset for non-drag and drop tooltips so underlying items |
| isn't covered as much. (Match offset for drag and drop tooltips) |
| - IsItemHovered: Tweaked default value of style.HoverDelayNormal from 0.30 to 0.40, |
| Tweaked default value of style.HoverDelayShort from 0.10 to 0.15. (#1485) |
| - IsItemHovered: Added ImGuiHoveredFlags_AllowWhenOverlappedByWindow to ignore window-overlap only. |
| Option ImGuiHoveredFlags_AllowWhenOverlapped now expand into a combination of both |
| _AllowWhenOverlappedByWindow + _AllowWhenOverlappedByItem, matching old behavior. |
| - Overlapping items: (#6512, #3909, #517) |
| - Most item types should now work with SetNextItemAllowOverlap(). (#6512, #3909, #517) |
| - Fixed first frame of an overlap highlighting underlying item if previous frame didn't hover anything. |
| - IsItemHovered: Changed to return false when querying an item using AllowOverlap mode which |
| is being overlapped. Added ImGuiHoveredFlags_AllowWhenOverlappedByItem to opt-out. (#6512, #3909, #517) |
| - IsWindowHovered: Added support for ImGuiHoveredFlags_Stationary. |
| - IsWindowHovered, IsItemHovered: Assert when passed any unsupported flags. |
| - Tables: Fixed a regression in 1.89.6 leading to the first column of tables with either |
| ScrollX or ScrollY flags from being impossible to resize. (#6503) |
| - CollapsingHeader/TreeNode: Fixed text padding when using _Framed+_Leaf flags. (#6549) [@BobbyAnguelov] |
| - InputText: Fixed not returning true when buffer is cleared while using the |
| ImGuiInputTextFlags_EscapeClearsAll flag. (#5688, #2620) |
| - InputText: Fixed a crash on deactivating a ReadOnly buffer. (#6570, #6292, #4714) |
| - InputText: ImGuiInputTextCallbackData::InsertChars() accept (NULL,NULL) range, in order to conform |
| to common idioms (e.g. passing .data(), .data() + .size() from a null string). (#6565, #6566, #3615) |
| - Combo: Made simple/legacy Combo() function not returns true when picking already selected item. |
| This is consistent with other widgets. If you need something else, you can use BeginCombo(). (#1182) |
| - Clipper: Rework inner logic to allow functioning with a zero-clear constructor. |
| This is order to facilitate usage for language bindings (e.g cimgui or dear_binding) |
| where user may not be calling a constructor manually. (#5856) |
| - Drag and Drop: Apply default behavior of drag source not reporting itself as hovered |
| at lower-level, so DragXXX, SliderXXX, InputXXX, Plot widgets are fulfilling it. |
| (Behavior doesn't apply when ImGuiDragDropFlags_SourceNoDisableHover is set). |
| - Modals: In the case of nested modal, made sure that focused or appearing windows are |
| moved below the lowest blocking modal (rather than the highest one). (#4317) |
| - GetKeyName(): Fixed assert with ImGuiMod_XXX values when IMGUI_DISABLE_OBSOLETE_KEYIO is set. |
| - Debug Tools: Added 'io.ConfigDebugIniSettings' option to save .ini data with extra |
| comments. Currently mainly for inspecting Docking .ini data, but makes saving slower. |
| - Demo: Added more developed "Widgets->Tooltips" section. (#1485) |
| - Backends: OpenGL3: Fixed support for glBindSampler() backup/restore on ES3. (#6375, #6508) [@jsm174] |
| - Backends: OpenGL3: Fixed erroneous use glGetIntegerv(GL_CONTEXT_PROFILE_MASK) on contexts |
| lower than 3.2. (#6539, #6333) [@krumelmonster] |
| - Backends: Vulkan: Added optional support for VK_KHR_dynamic_rendering (Vulkan 1.3+) in the |
| backend for applications using it. User needs to set 'init_info->UseDynamicRendering = true' |
| and 'init_info->ColorAttachmentFormat'. RenderPass becomes unused. (#5446, #5037) [@spnda, @cmarcelo] |
| - Backends: GLFW: Accept glfwGetTime() not returning a monotonically increasing value. |
| This seems to happens on some Windows setup when peripherals disconnect, and is likely |
| to also happen on browser+Emscripten. Matches similar 1.89.4 fix in SDL backend. (#6491) |
| - Examples: Win32+OpenGL3: Changed DefWindowProc() to DefWindowProcW() to match other examples |
| and support the example app being compiled without UNICODE. (#6516, #5725, #5961, #5975) [@yenixing] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.6 (Released 2023-05-31) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.6 |
| |
| Breaking changes: |
| |
| - Clipper: Commented out obsolete redirection constructor which was marked obsolete in 1.79: |
| 'ImGuiListClipper(int items_count, float items_height)' --> Use 'ImGuiListClipper() + clipper.Begin()'. |
| - Clipper: Renamed ForceDisplayRangeByIndices() to IncludeRangeByIndices(), kept |
| inline redirection function (introduced in 1.86 and rarely used). (#6424, #3841) |
| - Commented out obsolete/redirecting functions that were marked obsolete more than two years ago: |
| - ListBoxHeader() -> use BeginListBox() |
| - ListBoxFooter() -> use EndListBox() |
| - Note how two variants of ListBoxHeader() existed. Check commented versions in imgui.h for refeence. |
| - Backends: SDL_Renderer: Renamed 'imgui_impl_sdlrenderer.h/cpp' to 'imgui_impl_sdlrenderer2.h/cpp', |
| in order to accommodate for upcoming SDL3 and change in its SDL_Renderer API. (#6286) |
| - Backends: GLUT: Removed call to ImGui::NewFrame() from ImGui_ImplGLUT_NewFrame(). |
| It needs to be called from the main app loop, like with every other backends. (#6337) [@GereonV] |
| |
| Other changes: |
| |
| - Window: Fixed resizing from upper border when io.ConfigWindowsMoveFromTitleBarOnly is set. (#6390) |
| - Tables: Fixed a small miscalculation in TableHeader() leading to an empty tooltip |
| showing when a sorting column has no visible name. (#6342) [@lukaasm] |
| - Tables: Fixed command merging when compiling with VS2013 (one array on stack was not |
| initialized on VS2013. Unsure if due to a bug or UB/standard conformance). (#6377) |
| - InputText: Avoid setting io.WantTextInputNextFrame during the deactivation frame. |
| (#6341) [@lukaasm] |
| - Drag, Sliders: if the format string doesn't contain any %, CTRL+Click to input text will |
| use the default format specifier for the type. Allow display/input of raw value when using |
| "enums" patterns (display label instead of value) + allow using when value is hidden. (#6405) |
| - Nav: Record/restore preferred position on each given axis after a movement on that axis, |
| then score movement on the other axis using this as a bias. This allows going up and down |
| between e.g. a large header spanning horizontal space and three-ways-columns, landing |
| on the same column as before. |
| - Nav: Fixed navigation within tables/columns where item boundaries goes beyond columns limits, |
| unclipped bounding boxes would interfere with other columns. (#2221) [@zzzyap, @ocornut] |
| - Nav: Fixed CTRL+Tab into a root window with only childs with _NavFlattened flags |
| erroneously initializing default nav layer to menu layer. |
| - Menus: Fixed an issue when opening a menu hierarchy in a given menu-bar would allow |
| opening another via simple hovering. (#3496, #4797) |
| - Fonts: Fixed crash when merging fonts and the first font has no valid glyph. (#6446) [@JaedanC] |
| - Fonts: Fixed crash when manually specifying an EllipsisChar that doesn't exist. (#6480) |
| - Misc: Added ImVec2 unary minus operator. (#6368) [@Koostosh] |
| - Debug Tools: Debug Log: Fixed not parsing 0xXXXXXXXX values for geo-locating on mouse |
| hover hover when the identifier is at the end of the line. (#5855) |
| - Debug Tools: Added 'io.ConfigDebugIgnoreFocusLoss' option to disable 'io.AddFocusEvent(false)' |
| handling. May facilitate interactions with a debugger when focus loss leads to clearing |
| inputs data. (#4388, #4921) |
| - Backends: Clear bits sets io.BackendFlags on backend Shutdown(). (#6334, #6335] [@GereonV] |
| Potentially this would facilitate switching runtime backend mid-session. |
| - Backends: Win32: Added ImGui_ImplWin32_InitForOpenGL() to facilitate combining raw |
| Win32/Winapi with OpenGL. (#3218) |
| - Backends: OpenGL3: Restore front and back polygon mode separately when supported |
| by context (Desktop 3.0, 3.1, or 3.2+ with compat bit). (#6333) [@GereonV] |
| - Backends: OpenGL3: Support for glBindSampler() backup/restore on ES3. (#6375) [@jsm174] |
| - Backends: SDL3: Fixed build on Emscripten/iOS/Android. (#6391) [@jo-codegirl] |
| - Backends: SDLRenderer3: Added SDL_Renderer for SDL3 backend. (#6286) [@Carcons, @ocornut] |
| - Examples: Added native Win32+OpenGL3 example. We don't recommend using this setup but we |
| provide it for completeness. (#3218, #5170, #6086, #2772, #2600, #2359, #2022, #1553) [@learn-more] |
| - Examples: Vulkan: Use integrated GPU if nothing else is available. (#6359) [@kimidaisuki22] |
| - Examples: DX9, DX10, DX11: Queue framebuffer resize instead of processing in WM_SIZE, |
| as some drivers tends to only cleanup after existing the native resize modal loop. (#6374) |
| - Examples: Added SDL3+SDL_Renderer example. (#6286) |
| - Examples: Updated all Visual Studio projects and batches to use /utf-8 argument. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.5 (Released 2023-04-13) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.5 |
| |
| Other changes: |
| |
| - InputText: Reworked prev/next-word behavior to more closely match Visual Studio |
| text editor. Include '.' as a delimiter and alter varying subtle behavior with how |
| blanks and separators are treated when skipping words. (#6067) [@ajweeks] |
| - InputText: Fixed a tricky edge case, ensuring value is always written back on the |
| frame where IsItemDeactivated() returns true, in order to allow usage without user |
| retaining underlying data. While we don't really want to encourage user not retaining |
| underlying data, in the absence of a "late commit" behavior/flag we understand it may |
| be desirable to take advantage of this trick. (#4714) |
| - Drag, Sliders: Fixed parsing of text input when '+' or '#' format flags are used |
| in the format string. (#6259) [@idbrii] |
| - Nav: Made Ctrl+Tab/Ctrl+Shift+Tab windowing register ownership to held modifier so |
| it doesn't interfere with other code when remapping those actions. (#4828, #3255, #5641) |
| - Nav: Made PageUp/PageDown/Home/End navigation also scroll parent windows when |
| necessary to make the target location fully visible (same as e.g. arrow keys). |
| - ColorEdit: Fixed shading of S/V triangle in Hue Wheel mode. (#5200, #6254) [@jamesthomasgriffin] |
| - TabBar: Tab-bars with ImGuiTabBarFlags_FittingPolicyScroll can be scrolled with |
| horizontal mouse-wheel (or Shift + WheelY). (#2702) |
| - Rendering: Using adaptive tessellation for RadioButton, ColorEdit preview circles, |
| Windows Close and Collapse Buttons. |
| - ButtonBehavior: Fixed an edge case where changing widget type/behavior while active |
| and using same id could lead to an assert. (#6304) |
| - Misc: Fixed ImVec2 operator[] violating aliasing rules causing issue with Intel C++ |
| compiler. (#6272) [@BayesBug] |
| - IO: Input queue trickling adjustment for touch screens. (#2702, #4921) |
| This fixes single-tapping to move simulated mouse and immediately click on a widget |
| that is using the ImGuiButtonFlags_AllowItemOverlap policy. |
| - This only works if the backend can distinguish TouchScreen vs Mouse. |
| See 'Demo->Tools->Metrics->Inputs->Mouse Source' to verify. |
| - Fixed tapping on BeginTabItem() on a touch-screen. (#2702) |
| - Fixed tapping on CollapsingHeader() with a close button on a touch-screen. |
| - Fixed tapping on TreeNode() using ImGuiTreeNodeFlags_AllowItemOverlap on a touch-screen. |
| - Fixed tapping on Selectable() using ImGuiSelectableFlags_AllowItemOverlap on a touch-screen. |
| - Fixed tapping on TableHeader() on a touch-screen. |
| - IO: Added io.AddMouseSourceEvent() and ImGuiMouseSource enum. This is to allow backend to |
| specify actual event source between Mouse/TouchScreen/Pen. (#2702, #2334, #2372, #3453, #5693) |
| - IO: Fixed support for calling io.AddXXXX functions from inactive context (wrongly |
| advertised as supported in 1.89.4). (#6199, #6256, #5856) [@cfillion] |
| - Backends: OpenGL3: Fixed GL loader crash when GL_VERSION returns NULL. (#6154, #4445, #3530) |
| - Backends: OpenGL3: Properly restoring "no shader program bound" if it was the case prior to |
| running the rendering function. (#6267, #6220, #6224) [@BrunoLevy] |
| - Backends: Win32: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. (#2334, #2702) |
| - Backends: SDL2/SDL3: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen. |
| This is relying on SDL passing SDL_TOUCH_MOUSEID in the event's 'which' field. (#2334, #2702) |
| - Backends: SDL2/SDL3: Avoid calling SDL_StartTextInput()/SDL_StopTextInput() as they actually |
| block text input input and don't only pertain to IME. It's unclear exactly what their relation |
| is to other IME function such as SDL_SetTextInputRect(). (#6306, #6071, #1953) |
| - Backends: GLFW: Added support on Win32 only for io.AddMouseSourceEvent() to discriminate |
| Mouse/TouchScreen/Pen. (#2334, #2702) |
| - Backends: GLFW: Fixed key modifiers handling on secondary viewports. (#6248, #6034) [@aiekick] |
| - Backends: Android: Added support for io.AddMouseSourceEvent() to discriminate Mouse/TouchScreen/Pen. |
| (#6315) [@PathogenDavid] |
| - Backends: OSX: Added support for io.AddMouseSourceEvent() to discriminate Mouse/Pen. |
| (#6314) [@PathogenDavid] |
| - Backends: WebGPU: Align buffers. Use WGSL shaders instead of SPIR-V. Add gamma uniform. (#6188) [@eliemichel] |
| - Backends: WebGPU: Reorganized to store data in io.BackendRendererUserData like other backends. |
| - Examples: Vulkan: Fixed validation errors with newer VulkanSDK by explicitly querying and enabling |
| "VK_KHR_get_physical_device_properties2", "VK_KHR_portability_enumeration", and |
| VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR. (#6109, #6172, #6101) |
| - Examples: Windows: Added 'misc/debuggers/imgui.natstepfilter' file to all Visual Studio projects, |
| now that VS 2022 17.6 Preview 2 support adding Debug Step Filter spec files into projects. |
| - Examples: SDL3: Updated for latest WIP SDL3 branch. (#6243) |
| - TestSuite: Added variety of new regression tests and improved/amended existing ones |
| in imgui_test_engine/ repo. [@PathogenDavid, @ocornut] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.4 (Released 2023-03-14) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.4 |
| |
| Breaking Changes: |
| |
| - Renamed PushAllowKeyboardFocus()/PopAllowKeyboardFocus() to PushTabStop()/PopTabStop(). |
| Kept inline redirection functions (will obsolete). |
| - Moved the optional "courtesy maths operators" implementation from imgui_internal.h in imgui.h. |
| Even though we encourage using your own maths types and operators by setting up IM_VEC2_CLASS_EXTRA, |
| it has been frequently requested by people to use our own. We had an opt-in define which was |
| previously fulfilled by imgui_internal.h. It is now fulfilled by imgui.h. (#6164, #6137, #5966, #2832) |
| OK: #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui.h" / #include "imgui_internal.h" |
| Error: #include "imgui.h" / #define IMGUI_DEFINE_MATH_OPERATORS / #include "imgui_internal.h" |
| Added a dedicated compile-time check message to help diagnose this. |
| - Tooltips: Added 'bool' return value to BeginTooltip() for API consistency. |
| Please only submit contents and call EndTooltip() if BeginTooltip() returns true. |
| In reality the function will _currently_ always return true, but further changes down the |
| line may change this, best to clarify API sooner. Updated demo code accordingly. |
| - Commented out redirecting enums/functions names that were marked obsolete two years ago: |
| - ImGuiSliderFlags_ClampOnInput -> use ImGuiSliderFlags_AlwaysClamp |
| - ImGuiInputTextFlags_AlwaysInsertMode -> use ImGuiInputTextFlags_AlwaysOverwrite |
| - ImDrawList::AddBezierCurve() -> use ImDrawList::AddBezierCubic() |
| - ImDrawList::PathBezierCurveTo() -> use ImDrawList::PathBezierCubicCurveTo() |
| |
| Other changes: |
| |
| - Nav: Tabbing now cycles through all items when ImGuiConfigFlags_NavEnableKeyboard is set. |
| (#3092, #5759, #787) |
| While this was generally desired and requested by many, note that its addition means |
| that some types of UI may become more fastidious to use TAB key with, if the navigation |
| cursor cycles through too many items. You can mark items items as not tab-spottable: |
| - Public API: PushTabStop(false) / PopTabStop() |
| - Internal: PushItemFlag(ImGuiItemFlags_NoTabStop, true); |
| - Internal: Directly pass ImGuiItemFlags_NoTabStop to ItemAdd() for custom widgets. |
| - Nav: Tabbing/Shift-Tabbing can more reliably be used to step out of an item that is not |
| tab-stoppable. (#3092, #5759, #787) |
| - Nav: Made Enter key submit the same type of Activation event as Space key, |
| allowing to press buttons with Enter. (#5606) |
| (Enter emulates a "prefer text input" activation vs. |
| Space emulates a "prefer tweak" activation which is to closer to gamepad controls). |
| - Nav: Fixed an issue with Gamepad navigation when the movement lead to a scroll and |
| frame time > repeat rate. Triggering a new move request on the same frame as a move |
| result lead to an incorrect calculation and loss of navigation id. (#6171) |
| - Nav: Fixed SetItemDefaultFocus() from not scrolling when item is partially visible. |
| (#2814, #2812) [@DomGries] |
| - Tables: Fixed an issue where user's Y cursor movement within a hidden column would |
| have side-effects. |
| - IO: Lifted constraint to call io.AddEventXXX functions from current context. (#4921, #5856, #6199) |
| - InputText: Fixed not being able to use CTRL+Tab while an InputText() using Tab |
| for completion or text data is active (regression from 1.89). |
| - Drag and Drop: Fixed handling of overlapping targets when smaller one is submitted |
| before and can accept the same data type. (#6183). |
| - Drag and Drop: Clear drag and drop state as soon as delivery is accepted in order to |
| avoid interferences. (#5817, #6183) [@DimaKoltun] |
| - Debug Tools: Added io.ConfigDebugBeginReturnValueOnce / io.ConfigDebugBeginReturnValueLoop |
| options to simulate Begin/BeginChild returning false to facilitate debugging user behavior. |
| - Demo: Updated to test return value of BeginTooltip(). |
| - Backends: OpenGL3: Fixed restoration of a potentially deleted OpenGL program. If an active |
| program was pending deletion, attempting to restore it would error. (#6220, #6224) [@Cyphall] |
| - Backends: Win32: Use WM_NCMOUSEMOVE / WM_NCMOUSELEAVE to track mouse positions over |
| non-client area (e.g. OS decorations) when app is not focused. (#6045, #6162) |
| - Backends: SDL2, SDL3: Accept SDL_GetPerformanceCounter() not returning a monotonically |
| increasing value. (#6189, #6114, #3644) [@adamkewley] |
| - Backends: GLFW: Avoid using glfwGetError() and glfwGetGamepadState() on Emscripten, which |
| recently updated its GLFW emulation layer to GLFW 3.3 without supporting those. (#6240) |
| - Examples: Android: Fixed example build for Gradle 8. (#6229, #6227) [@duddel] |
| - Examples: Updated all examples application to enable ImGuiConfigFlags_NavEnableKeyboard |
| and ImGuiConfigFlags_NavEnableGamepad by default. (#787) |
| - Internals: Misc tweaks to facilitate applying an explicit-context patch. (#5856) [@Dragnalith] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.3 (Released 2023-02-14) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.3 |
| |
| Breaking Changes: |
| |
| - Backends+Examples: SDL2: renamed all unnumbered references to "sdl" to "sdl2". |
| This is in prevision for the future release of SDL3 and its associated backend. (#6146) |
| - imgui_impl_sdl.cpp -> imgui_impl_sdl2.cpp |
| - imgui_impl_sdl.h -> imgui_impl_sdl2.h |
| - example_sdl_xxxx/ -> example_sdl2_xxxx/ (folders and projects) |
| |
| Other changes: |
| |
| - SeparatorText(): Added SeparatorText() widget. (#1643) [@phed, @ocornut] |
| - Added to style: float SeparatorTextBorderSize. |
| - Added to style: ImVec2 SeparatorTextAlign, SeparatorTextPadding. |
| - Tables: Raised max Columns count from 64 to 512. (#6094, #5305, #4876, #3572) |
| The previous limit was due to using 64-bit integers but we moved to bits-array |
| and tweaked the system enough to ensure no performance loss. |
| - Tables: Solved an ID conflict issue with multiple-instances of a same table, |
| due to how unique table instance id was generated. (#6140) [@ocornut, @rodrigorc] |
| - Inputs, Scrolling: Made horizontal scroll wheel and horizontal scroll direction consistent |
| across backends/os. (#4019, #6096, #1463) [@PathogenDavid, @ocornut, @rokups] |
| - Clarified that 'wheel_y > 0.0f' scrolls Up, 'wheel_y > 0.0f' scrolls Down. |
| Clarified that 'wheel_x > 0.0f' scrolls Left, 'wheel_x > 0.0f' scrolls Right. |
| - Backends: Fixed horizontal scroll direction for Win32 and SDL backends. (#4019) |
| - Shift+WheelY support on non-OSX machines was already correct. (#2424, #1463) |
| (whereas on OSX machines Shift+WheelY turns into WheelX at the OS level). |
| - If you use a custom backend, you should verify horizontal wheel direction. |
| - Axises are flipped by OSX for mouse & touch-pad when 'Natural Scrolling' is on. |
| - Axises are flipped by Windows for touch-pad when 'Settings->Touchpad->Down motion scrolls up' is on. |
| - You can use 'Demo->Tools->Debug Log->IO" to visualize values submitted to Dear ImGui. |
| - Known issues remaining with Emscripten: |
| - The magnitude of wheeling values on Emscripten was improved but isn't perfect. (#6096) |
| - When running the Emscripten app on a Mac with a mouse, SHIFT+WheelY doesn't turn into WheelX. |
| This is because we don't know that we are running on Mac and apply our own Shift+swapping |
| on top of OSX' own swapping, so wheel axises are swapped twice. Emscripten apps may need |
| to find a way to detect this and set io.ConfigMacOSXBehaviors manually (if you know a way |
| let us know!), or offer the "OSX-style behavior" option to their user. |
| - Window: Avoid rendering shapes for hidden resize grips. |
| - Text: Fixed layouting of wrapped-text block skipping successive empty lines, |
| regression from the fix in 1.89.2. (#5720, #5919) |
| - Text: Fixed clipping of single-character "..." ellipsis (U+2026 or U+0085) when font |
| is scaled. Scaling wasn't taken into account, leading to ellipsis character straying |
| slightly out of its expected boundaries. (#2775) |
| - Text: Tweaked rendering of three-dots "..." ellipsis variant. (#2775, #4269) |
| - InputText: Added support for Ctrl+Delete to delete up to end-of-word. (#6067) [@ajweeks] |
| (Not adding Super+Delete to delete to up to end-of-line on OSX, as OSX doesn't have it) |
| - InputText: On OSX, inhibit usage of Alt key to toggle menu when active (used for work skip). |
| - Menus: Fixed layout of MenuItem()/BeginMenu() when label contains a '\n'. (#6116) [@imkcy9] |
| - ColorEdit, ColorPicker: Fixed hue/saturation preservation logic from interfering with |
| the displayed value (but not stored value) of others widgets instances. (#6155) |
| - PlotHistogram, PlotLines: Passing negative sizes honor alignment like other widgets. |
| - Combo: Allow SetNextWindowSize() to alter combo popup size. (#6130) |
| - Fonts: Assert that in each GlyphRanges[] pairs first is <= second. |
| - ImDrawList: Added missing early-out in AddPolyline() and AddConvexPolyFilled() when |
| color alpha is zero. |
| - Misc: Most text functions treat "%s" as a shortcut to no-formatting. (#3466) |
| - Misc: Tolerate zero delta-time under Emscripten as backends are imprecise in their |
| values for io.DeltaTime, and browser features such as "privacy.resistFingerprinting=true" |
| can exacerbate that. (#6114, #3644) |
| - Backends: OSX: Fixed scroll/wheel scaling for devices emitting events with |
| hasPreciseScrollingDeltas==false (e.g. non-Apple mices). |
| - Backends: Win32: flipping WM_MOUSEHWHEEL horizontal value to match other backends and |
| offer consistent horizontal scrolling direction. (#4019) |
| - Backends: SDL2: flipping SDL_MOUSEWHEEL horizontal value to match other backends and |
| offer consistent horizontal scrolling direction. (#4019) |
| - Backends: SDL2: Removed SDL_MOUSEWHEEL value clamping. (#4019, #6096, #6081) |
| - Backends: SDL2: Added support for SDL 2.0.18+ preciseX/preciseY mouse wheel data |
| for smooth scrolling as reported by SDL. (#4019, #6096) |
| - Backends: SDL2: Avoid calling SDL_SetCursor() when cursor has not changed, as the function |
| is surprisingly costly on Mac with latest SDL (already fixed in SDL latest trunk). (#6113) |
| - Backends: SDL2: Implement IME handler to call SDL_SetTextInputRect()/SDL_StartTextInput(). |
| It will only works with SDL 2.0.18+ if your code calls 'SDL_SetHint(SDL_HINT_IME_SHOW_UI, "1")' |
| prior to calling SDL_CreateWindow(). Updated all examples accordingly. (#6071, #1953) |
| - Backends: SDL3: Added experimental imgui_impl_sdl3.cpp backend. (#6146) [@dovker, @ocornut] |
| SDL 3.0.0 has not yet been released, so it is possible that its specs/api will change before |
| release. This backend is provided as a convenience for early adopters etc. We don't recommend |
| switching to SDL3 before it is released. |
| - Backends: GLFW: Registering custom low-level mouse wheel handler to get more accurate |
| scrolling impulses on Emscripten. (#4019, #6096) [@ocornut, @wolfpld, @tolopolarity] |
| - Backends: GLFW: Added ImGui_ImplGlfw_SetCallbacksChainForAllWindows() to instruct backend |
| to chain callbacks even for secondary viewports/windows. User callbacks may need to test |
| the 'window' parameter. (#6142) |
| - Backends: OpenGL3: Fixed GL loader compatibility with 2.x profiles. (#6154, #4445, #3530) [@grauw] |
| - Backends: WebGPU: Fixed building for latest WebGPU specs (remove implicit layout generation). |
| (#6117, #4116, #3632) [@tonygrue, @bfierz] |
| - Examples: refactored SDL2+GL and GLFW+GL examples to compile with Emscripten. |
| (#2492, #2494, #3699, #3705) [@ocornut, @nicolasnoble] |
| The dedicated example_emscripten_opengl3/ has been removed. |
| - Examples: Added SDL3+GL experimental example. (#6146) |
| - Examples: Win32: Fixed examples using RegisterClassW() since 1.89 to also call |
| DefWindowProcW() instead of DefWindowProc() so that title text are correctly converted |
| when application is compiled without /DUNICODE. (#5725, #5961, #5975) [@markreidvfx] |
| - Examples: SDL2+SDL_Renderer: Added call to SDL_RenderSetScale() to fix display on a |
| Retina display (albeit lower-res as our other unmodified examples). (#6121, #6065, #5931). |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.2 (Released 2023-01-05) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.2 |
| |
| All changes: |
| |
| - Tables, Nav, Scrolling: fixed scrolling functions and focus tracking with frozen rows and |
| frozen columns. Windows now have a better understanding of outer/inner decoration sizes, |
| which should later lead us toward more flexible uses of menu/status bars. (#5143, #3692) |
| - Tables, Nav: frozen columns are not part of menu layer and can be crossed over. (#5143, #3692) |
| - Tables, Columns: fixed cases where empty columns may lead to empty ImDrawCmd. (#4857, #5937) |
| - Tables: fixed matching width of synchronized tables (multiple tables with same id) when only |
| some instances have a vertical scrollbar and not all. (#5920) |
| - Fixed cases where CTRL+Tab or Modal can occasionally lead to the creation of ImDrawCmd with |
| zero triangles, which would makes the render loop of some backends assert (e.g. Metal with |
| debugging, Allegro). (#4857, #5937) |
| - Inputs, IO: reworked ImGuiMod_Shortcut to redirect to Ctrl/Super at runtime instead of |
| compile-time, being consistent with our support for io.ConfigMacOSXBehaviors and making it |
| easier for bindings generators to process that value. (#5923, #456) |
| - Inputs, Scrolling: better selection of scrolling window when hovering nested windows |
| and when backend/OS is emitting dual-axis wheeling inputs (typically touch pads on macOS). |
| We now select a primary axis based on recent events, and select a target window based on it. |
| We expect this behavior to be further improved/tweaked. (#3795, #4559) [@ocornut, @folays] |
| - InputText: fixed cursor navigation when pressing Up Arrow on the last character of a |
| multiline buffer which doesn't end with a carriage return. (#6000) |
| - Text: fixed layouting of wrapped-text block when the last source line is above the |
| clipping region. Regression added in 1.89. (#5720, #5919) |
| - Misc: added GetItemID() in public API. It is not often expected that you would use this, |
| but it is useful for Shortcut() and upcoming owner-aware input functions which wants to |
| be implemented with public API. |
| - Fonts: imgui_freetype: fixed a packing issue which in some occurrences would prevent large |
| amount of glyphs from being packed correctly. (#5788, #5829) |
| - Fonts: added a 'void* UserData' field in ImFontAtlas, as a convenience for use by |
| applications using multiple font atlases. |
| - Demo: simplified "Inputs" section, moved contents to Metrics->Inputs. |
| - Debug Tools: Metrics: added "Inputs" section, moved from Demo for consistency. |
| - Misc: fixed parameters to IMGUI_DEBUG_LOG() not being dead-stripped when building |
| with IMGUI_DISABLE_DEBUG_TOOLS is used. (#5901) [@Teselka] |
| - Misc: fixed compile-time detection of SSE features on MSVC 32-bits builds. (#5943) [@TheMostDiligent] |
| - Examples: DirectX10, DirectX11: try WARP software driver if hardware driver is not available. (#5924, #5562) |
| - Backends: GLFW: Fixed mods state on Linux when using Alt-GR text input (e.g. German keyboard layout), which |
| could lead to broken text input. Revert a 2022/01/17 change were we resumed using mods provided by GLFW, |
| turns out they are faulty in this specific situation. (#6034) |
| - Backends: Allegro5: restoring using al_draw_indexed_prim() when Allegro version is >= 5.2.5. (#5937) [@Espyo] |
| - Backends: Vulkan: Fixed sampler passed to ImGui_ImplVulkan_AddTexture() not being honored as we were using |
| an immutable sampler. (#5502, #6001, #914) [@martin-ejdestig, @rytisss] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89.1 (Released 2022-11-24) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89.1 |
| |
| Other changes: |
| |
| - Scrolling, Focus: fixed SetKeyboardFocusHere()/SetItemDefaultFocus() during a window-appearing |
| frame (and associated lower-level functions e.g. ScrollToRectEx()) from not centering item. (#5902) |
| - Inputs: fixed moving a window or drag and dropping from preventing input-owner-unaware code |
| from accessing keys. (#5888, #4921, #456) |
| - Inputs: fixed moving a window or drag and dropping from capturing mods. (#5888, #4921, #456) |
| - Layout: fixed End()/EndChild() incorrectly asserting if users manipulates cursor position |
| inside a collapsed/culled window and IMGUI_DISABLE_OBSOLETE_FUNCTIONS is enabled. (#5548, #5911) |
| - Combo: fixed selected item (marked with SetItemDefaultFocus()) from not being centered when |
| the combo window initially appears. (#5902). |
| - ColorEdit: fixed label overlapping when using style.ColorButtonPosition == ImGuiDir_Left to |
| move the color button on the left side (regression introduced in 1.88 WIP 2022/02/28). (#5912) |
| - Drag and Drop: fixed GetDragDropPayload() returning a non-NULL value if a drag source is |
| active but a payload hasn't been submitted yet. This is convenient to detect new payload |
| from within a drag source handler. (#5910, #143) |
| - Backends: GLFW: cancel out errors emitted by glfwGetKeyName() when a name is missing. (#5908) |
| - Backends: WebGPU: fixed validation error with default depth buffer settings. (#5869, #5914) [@kdchambers] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.89 (Released 2022-11-15) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.89 |
| |
| Breaking changes: |
| |
| - Layout: Obsoleted using SetCursorPos()/SetCursorScreenPos() to extend parent window/cell boundaries. (#5548) |
| This relates to when moving the cursor position beyond current boundaries WITHOUT submitting an item. |
| - Previously this would make the window content size ~200x200: |
| Begin(...) + SetCursorScreenPos(GetCursorScreenPos() + ImVec2(200,200)) + End(); |
| - Instead, please submit an item: |
| Begin(...) + SetCursorScreenPos(GetCursorScreenPos() + ImVec2(200,200)) + Dummy(ImVec2(0,0)) + End(); |
| - Alternative: |
| Begin(...) + Dummy(ImVec2(200,200)) + End(); |
| Content size is now only extended when submitting an item. |
| With '#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS' this will now be detected and assert. |
| Without '#define IMGUI_DISABLE_OBSOLETE_FUNCTIONS' this will silently be fixed until we obsolete it. |
| (This incorrect pattern has been mentioned or suggested in: #4510, #3355, #1760, #1490, #4152, #150, |
| threads have been amended to refer to this issue). |
| - Inputs: ImGuiKey is now a typed enum, allowing ImGuiKey_XXX symbols to be named in debuggers. (#4921) |
| This will require uses of legacy backend-dependent indices to be casted, e.g. |
| - with imgui_impl_glfw: IsKeyPressed(GLFW_KEY_A) -> IsKeyPressed((ImGuiKey)GLFW_KEY_A); |
| - with imgui_impl_win32: IsKeyPressed('A') -> IsKeyPressed((ImGuiKey)'A') |
| - etc. however if you are upgrading code you might as well use the backend-agnostic IsKeyPressed(ImGuiKey_A) now. |
| - Renamed and merged keyboard modifiers key enums and flags into a same set: (#4921, #456) |
| - ImGuiKey_ModCtrl and ImGuiModFlags_Ctrl -> ImGuiMod_Ctrl |
| - ImGuiKey_ModShift and ImGuiModFlags_Shift -> ImGuiMod_Shift |
| - ImGuiKey_ModAlt and ImGuiModFlags_Alt -> ImGuiMod_Alt |
| - ImGuiKey_ModSuper and ImGuiModFlags_Super -> ImGuiMod_Super |
| Kept inline redirection enums (will obsolete). |
| This change simplifies a few things, reduces confusion, and will facilitate upcoming |
| shortcut/input ownership apis. |
| - The ImGuiKey_ModXXX were introduced in 1.87 and mostly used by backends. |
| - The ImGuiModFlags_XXX have been exposed in imgui.h but not really used by any public api, |
| only by third-party extensions. They were however subject to a recent rename |
| (ImGuiKeyModFlags_XXX -> ImGuiModFlags_XXX) and we are exceptionally commenting out |
| the older ImGuiKeyModFlags_XXX names ahead of obsolescence schedule to reduce confusion |
| and because they were not meant to be used anyway. |
| - Removed io.NavInputs[] and ImGuiNavInput enum that were used to feed gamepad inputs. |
| Basically 1.87 already obsoleted them from the backend's point of view, but internally |
| our navigation code still used this array and enum, so they were still present. |
| Not anymore! (#4921, #4858, #787, #1599, #323) |
| Transition guide: |
| - Official backends from 1.87+ -> no issue. |
| - Official backends from 1.60 to 1.86 -> will build and convert gamepad inputs, unless IMGUI_DISABLE_OBSOLETE_KEYIO is defined. Need updating! |
| - Custom backends not writing to io.NavInputs[] -> no issue. |
| - Custom backends writing to io.NavInputs[] -> will build and convert gamepad inputs, unless IMGUI_DISABLE_OBSOLETE_KEYIO is defined. Need fixing! |
| - TL;DR: Backends should call io.AddKeyEvent()/io.AddKeyAnalogEvent() with ImGuiKey_GamepadXXX values instead of filling io.NavInput[]. |
| The ImGuiNavInput enum was essentially 1.60's attempt to combine keyboard and gamepad inputs with named |
| semantic, but the additional indirection and copy added complexity and got in the way of other |
| incoming work. User's code (other than backends) should not be affected, unless you have custom |
| widgets intercepting navigation events via the named enums (in which case you can upgrade your code). |
| - DragInt()/SliderInt(): Removed runtime patching of invalid "%f"/"%.0f" types of format strings. |
| This was obsoleted in 1.61 (May 2018). See 1.61 changelog for details. |
| - Changed signature of ImageButton() function: (#5533, #4471, #2464, #1390) |
| - Added 'const char* str_id' parameter + removed 'int frame_padding = -1' parameter. |
| - Old signature: bool ImageButton(ImTextureID tex_id, ImVec2 size, ImVec2 uv0 = ImVec2(0,0), ImVec2 uv1 = ImVec2(1,1), int frame_padding = -1, ImVec4 bg_col = ImVec4(0,0,0,0), ImVec4 tint_col = ImVec4(1,1,1,1)); |
| - used the ImTextureID value to create an ID. This was inconsistent with other functions, led to ID conflicts, and caused problems with engines using transient ImTextureID values. |
| - had a FramePadding override which was inconsistent with other functions and made the already-long signature even longer. |
| - New signature: bool ImageButton(const char* str_id, ImTextureID tex_id, ImVec2 size, ImVec2 uv0 = ImVec2(0,0), ImVec2 uv1 = ImVec2(1,1), ImVec4 bg_col = ImVec4(0,0,0,0), ImVec4 tint_col = ImVec4(1,1,1,1)); |
| - requires an explicit identifier. You may still use e.g. PushID() calls and then pass an empty identifier. |
| - always uses style.FramePadding for padding, to be consistent with other buttons. You may use PushStyleVar() to alter this. |
| - As always we are keeping a redirection function available (will obsolete later). |
| - Removed the bizarre legacy default argument for 'TreePush(const void* ptr = NULL)'. (#1057) |
| Must always pass a pointer value explicitly, NULL/nullptr is ok but require cast, e.g. TreePush((void*)nullptr); |
| If you used TreePush() replace with TreePush((void*)NULL); |
| - Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (#255) |
| They only made sense before we could use IMGUI_USER_CONFIG. |
| |
| Other Changes: |
| |
| - Popups & Modals: fixed nested Begin() inside a popup being erroneously input-inhibited. |
| While it is unusual, you can nest a Begin() inside a popup or modal, it is occasionally |
| useful to achieve certain things (e.g. to implement suggestion popups #718, #4461). |
| - Inputs: Standard widgets now claim for key/button ownership and test for them. |
| - Fixes scenario where e.g. a Popup with a Selectable() reacting on mouse down |
| (e.g. double click) closes, and behind it is another window with an item reacting |
| on mouse up. Previously this would lead to both items reacting, now the item in the |
| window behind won't react on the mouse up since the mouse button ownership has already |
| been claimed earlier. |
| - Internals: There are MANY more aspects to this changes. Added experimental/internal APIs |
| to allow handling input/shorting routing and key ownership. Things will be moved into |
| public APIs over time. For now this release is a way to test the solidity of underlying |
| systems while letting early adopters adopters toy with internals. |
| (#456, #2637, #2620, #2891, #3370, #3724, #4828, #5108, #5242, #5641) |
| - Scrolling: Tweak mouse-wheel locked window timer so it is shorter but also gets reset |
| whenever scrolling again. Modulate for small (sub-pixel) amounts. (#2604) |
| - Scrolling: Mitigated issue where multi-axis mouse-wheel inputs (usually from touch pad |
| events) are incorrectly locking scrolling in a parent window. (#4559, #3795, #2604) |
| - Scrolling: Exposed SetNextWindowScroll() in public API. Useful to remove a scrolling |
| delay in some situations where e.g. windows need to be synched. (#1526) |
| - InputText: added experimental io.ConfigInputTextEnterKeepActive feature to make pressing |
| Enter keep the input active and select all text. |
| - InputText: numerical fields automatically accept full-width characters (U+FF01..U+FF5E) |
| by converting them to half-width (U+0021..U+007E). |
| - InputText: added ImGuiInputTextFlags_EscapeClearsAll flag: first press on Escape clears |
| text if any, second press deactivate the InputText(). (#5688, #2620) |
| - InputText: added support for shift+click style selection. (#5619) [@procedural] |
| - InputText: clarified that callbacks cannot modify buffer when using the ReadOnly flag. |
| - InputText: fixed minor one-frame selection glitch when reverting with Escape. |
| - ColorEdit3: fixed id collision leading to an assertion. (#5707) |
| - IsItemHovered: Added ImGuiHoveredFlags_DelayNormal and ImGuiHoveredFlags_DelayShort flags, |
| allowing to introduce a shared delay for tooltip idioms. The delays are respectively |
| io.HoverDelayNormal (default to 0.30f) and io.HoverDelayShort (default to 0.10f). (#1485) |
| - IsItemHovered: Added ImGuiHoveredFlags_NoSharedDelay to disable sharing delays between items, |
| so moving from one item to a nearby one will requires delay to elapse again. (#1485) |
| - Tables: activating an ID (e.g. clicking button inside) column doesn't prevent columns |
| output flags from having ImGuiTableColumnFlags_IsHovered set. (#2957) |
| - Tables,Columns: fixed a layout issue where SameLine() prior to a row change would set the |
| next row in such state where subsequent SameLine() would move back to previous row. |
| - Tabs: Fixed a crash when closing multiple windows (possible with docking only) with an |
| appended TabItemButton(). (#5515, #3291) [@rokups] |
| - Tabs: Fixed shrinking policy leading to infinite loops when fed unrounded tab widths. (#5652) |
| - Tabs: Fixed shrinking policy sometimes erroneously making right-most tabs stray a little out |
| bar boundaries (bug in 1.88). (#5652). |
| - Tabs: Enforcing minimum size of 1.0f, fixed asserting on zero-tab widths. (#5572) |
| - Window: Fixed a potential crash when appending to a child window. (#5515, #3496, #4797) [@rokups] |
| - Window: Fixed an issue where uncollapsed a window would show a scrollbar for a frame. |
| - Window: Auto-fit size takes account of work rectangle (menu bars eating from viewport). (#5843) |
| - Window: Fixed position not being clamped while auto-resizing (fixes appearing windows without |
| .ini data from moving for a frame when using io.ConfigWindowsMoveFromTitleBarOnly). (#5843) |
| - IO: Added ImGuiMod_Shortcut which is ImGuiMod_Super on Mac and ImGuiMod_Ctrl otherwise. (#456) |
| - IO: Added ImGuiKey_MouseXXX aliases for mouse buttons/wheel so all operations done on ImGuiKey |
| can apply to mouse data as well. (#4921) |
| - IO: Filter duplicate input events during the AddXXX() calls. (#5599, #4921) |
| - IO: Fixed AddFocusEvent(false) to also clear MouseDown[] state. (#4921) |
| - Menus: Fixed incorrect sub-menu parent association when opening a menu by closing another. |
| Among other things, it would accidentally break part of the closing heuristic logic when moving |
| towards a sub-menu. (#2517, #5614). [@rokups] |
| - Menus: Fixed gaps in closing logic which would make child-menu erroneously close when crossing |
| the gap between a menu item inside a window and a child-menu in a secondary viewport. (#5614) |
| - Menus: Fixed using IsItemHovered()/IsItemClicked() on BeginMenu(). (#5775) |
| - Menus, Popups: Experimental fix for issue where clicking on an open BeginMenu() item called from |
| a window which is neither a popup neither a menu used to incorrectly close and reopen the menu |
| (the fix may have side-effect and is labelld as experimental as we may need to revert). (#5775) |
| - Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item |
| in parent window when the parent is not a popup. (#5730) |
| - Menus, Nav: Fixed not being able to close a menu with Left arrow when parent is not a popup. (#5730) |
| - Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple |
| BeginMenu() call with same names). (#1207) |
| - Menus: Fixed a one-frame issue where SetNextWindowXXX data are not consumed by a BeginMenu() |
| returning false. |
| - Nav: Fixed moving/resizing window with gamepad or keyboard when running at very high framerate. |
| - Nav: Pressing Space/GamepadFaceDown on a repeating button uses the same repeating rate as a mouse hold. |
| - Nav: Fixed an issue opening a menu with Right key from a non-menu window. |
| - Text: Fixed wrapped-text not doing a fast-forward on lines above the clipping region, |
| which would result in an abnormal number of vertices created (was slower and more likely to |
| asserts with 16-bits ImDrawVtx). (#5720) |
| - Fonts: Added GetGlyphRangesGreek() helper for Greek & Coptic glyph range. (#5676, #5727) [@azonenberg] |
| - ImDrawList: Not using alloca() anymore, lift single polygon size limits. (#5704, #1811) |
| - Note: now using a temporary buffer stored in ImDrawListSharedData. |
| This change made it more visible than you cannot append to multiple ImDrawList from multiple |
| threads if they share the same ImDrawListSharedData. Previously it was a little more likely |
| for this to "accidentally" work, but was already incorrect. (#6167) |
| - Platform IME: [Windows] Removed call to ImmAssociateContextEx() leading to freeze on some setups. |
| (#2589, #5535, #5264, #4972) |
| - Misc: better error reporting for PopStyleColor()/PopStyleVar() + easier to recover. (#1651) |
| - Misc: io.Framerate moving average now converge in 60 frames instead of 120. (#5236, #4138) |
| - Debug Tools: Debug Log: Visually locate items when hovering a 0xXXXXXXXX value. (#5855) |
| - Debug Tools: Debug Log: Added 'IO' and 'Clipper' events logging. (#5855) |
| - Debug Tools: Metrics: Visually locate items when hovering a 0xXXXXXXXX value (in most places). |
| - Debug Tools: Item Picker: Mouse button can be changed by holding Ctrl+Shift, making it easier |
| to use the Item Picker in e.g. menus. (#2673) |
| - Docs: Fixed various typos in comments and documentations. (#5649, #5675, #5679) [@tocic, @lessigsx] |
| - Demo: Improved "Constrained-resizing window" example, more clearly showcase aspect-ratio. (#5627) |
| - Demo: Added more explicit "Center window" mode to "Overlay example". (#5618) |
| - Demo: Fixed Log & Console from losing scrolling position with Auto-Scroll when child is clipped. (#5721) |
| - Examples: Added all SDL examples to default VS solution. |
| - Examples: Win32: Always use RegisterClassW() to ensure windows are Unicode. (#5725) |
| - Examples: Android: Enable .ini file loading/saving into application internal data folder. (#5836) [@rewtio] |
| - Backends: GLFW: Honor GLFW_CURSOR_DISABLED by not setting mouse position. (#5625) [@scorpion-26] |
| - Backends: GLFW: Add glfwGetError() call on GLFW 3.3 to inhibit missing mouse cursor errors. (#5785) [@mitchellh] |
| - Backends: SDL: Disable SDL 2.0.22 new "auto capture" which prevents drag and drop across windows |
| (e.g. for multi-viewport support) and don't capture mouse when drag and dropping. (#5710) |
| - Backends: Win32: Convert WM_CHAR values with MultiByteToWideChar() when window class was |
| registered as MBCS (not Unicode). (#5725, #1807, #471, #2815, #1060) [@or75, @ocornut] |
| - Backends: OSX: Fixed mouse inputs on flipped views. (#5756) [@Nemirtingas] |
| - Backends: OSX: Fixed mouse coordinate before clicking on the host window. (#5842) [@maezawa-akira] |
| - Backends: OSX: Fixes to support full app creation in C++. (#5403) [@stack] |
| - Backends: OpenGL3: Reverted use of glBufferSubData(), too many corruptions issues were reported, |
| and old leaks issues seemingly can't be reproed with Intel drivers nowadays (revert earlier changes). |
| (#4468, #4504, #3381, #2981, #4825, #4832, #5127). |
| - Backends: Metal: Use __bridge for ARC based systems. (#5403) [@stack] |
| - Backends: Metal: Add dispatch synchronization. (#5447) [@luigifcruz] |
| - Backends: Metal: Update deprecated property 'sampleCount'->'rasterSampleCount'. (#5603) [@dcvz] |
| - Backends: Vulkan: Added experimental ImGui_ImplVulkan_RemoveTexture() for api symmetry. (#914, #5738). |
| - Backends: WebGPU: fixed rendering when a depth buffer is enabled. (#5869) [@brainlag] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.88 (Released 2022-06-21) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.88 |
| |
| Breaking changes: |
| |
| - Renamed IMGUI_DISABLE_METRICS_WINDOW to IMGUI_DISABLE_DEBUG_TOOLS for correctness. |
| Kept support for old define (will obsolete). |
| - Renamed CaptureMouseFromApp() and CaptureKeyboardFromApp() to SetNextFrameWantCaptureMouse() |
| and SetNextFrameWantCaptureKeyboard() to clarify purpose, old name was too misleading. |
| Kept inline redirection functions (will obsolete). |
| - Renamed ImGuiKeyModFlags to ImGuiModFlags. Kept inline redirection enums (will obsolete). |
| (This was never used in public API functions but technically present in imgui.h and ImGuiIO). |
| - Backends: OSX: Removed ImGui_ImplOSX_HandleEvent() from backend API in favor of backend |
| automatically handling event capture. Examples that are using the OSX backend have removed |
| all the now-unnecessary calls to ImGui_ImplOSX_HandleEvent(), applications can do as well. |
| [@stuartcarnie] (#4821) |
| - Internals: calling ButtonBehavior() without calling ItemAdd() now requires a KeepAliveID() |
| call. This is because the KeepAliveID() call was moved from GetID() to ItemAdd(). (#5181) |
| |
| Other Changes: |
| |
| - IO: Fixed backward-compatibility regression introduced in 1.87: (#4921, #4858) |
| - Direct accesses to io.KeysDown[] with legacy indices didn't work (with new backends). |
| - Direct accesses to io.KeysDown[GetKeyIndex(XXX)] would access invalid data (with old/new backends). |
| - Calling IsKeyDown() didn't have those problems, and is recommended as io.KeysDown[] is obsolete. |
| - IO: Fixed input queue trickling of interleaved keys/chars events (which are frequent especially |
| when holding down a key as OS submits chars repeat events) delaying key presses and mouse movements. |
| In particular, using the input system for fast game-like actions (e.g. WASD camera move) would |
| typically have been impacted, as well as holding a key while dragging mouse. Constraints have |
| been lifted and are now only happening when e.g. an InputText() widget is active. (#4921, #4858) |
| Note that even thought you shouldn't need to disable io.ConfigInputTrickleEventQueue, you can |
| technically dynamically change its setting based on the context (e.g. disable only when hovering |
| or interacting with a game/3D view). |
| - IO: Fixed input queue trickling of mouse wheel events: multiple wheel events are merged, while |
| a mouse pos followed by a mouse wheel are now trickled. (#4921, #4821) |
| - IO: Added io.SetAppAcceptingEvents() to set a master flag for accepting key/mouse/characters |
| events (default to true). Useful if you have native dialog boxes that are interrupting your |
| application loop/refresh, and you want to disable events being queued while your app is frozen. |
| - Windows: Fixed first-time windows appearing in negative coordinates from being initialized |
| with a wrong size. This would most often be noticeable in multi-viewport mode (docking branch) |
| when spawning a window in a monitor with negative coordinates. (#5215, #3414) [@DimaKoltun] |
| - Clipper: Fixed a regression in 1.86 when not calling clipper.End() and late destructing the |
| clipper instance. High-level languages (Lua,Rust etc.) would typically be affected. (#4822) |
| - Layout: Fixed mixing up SameLine() and SetCursorPos() together from creating situations where line |
| height would be emitted from the wrong location (e.g. 'ItemA+SameLine()+SetCursorPos()+ItemB' would |
| emit ItemA worth of height from the position of ItemB, which is not necessarily aligned with ItemA). |
| - Sliders: An initial click within the knob/grab doesn't shift its position. (#1946, #5328) |
| - Sliders, Drags: Fixed dragging when using hexadecimal display format string. (#5165, #3133) |
| - Sliders, Drags: Fixed manual input when using hexadecimal display format string. (#5165, #3133) |
| - InputScalar: Fixed manual input when using %03d style width in display format string. (#5165, #3133) |
| - InputScalar: Automatically allow hexadecimal input when format is %X (without extra flag). |
| - InputScalar: Automatically allow scientific input when format is float/double (without extra flag). |
| - Nav: Fixed nav movement in a scope with only one disabled item from focusing the disabled item. (#5189) |
| - Nav: Fixed issues with nav request being transferred to another window when calling SetKeyboardFocusHere() |
| and simultaneous changing window focus. (#4449) |
| - Nav: Changed SetKeyboardFocusHere() to not behave if a drag or window moving is in progress. |
| - Nav: Fixed inability to cancel nav in modal popups. (#5400) [@rokups] |
| - IsItemHovered(): added ImGuiHoveredFlags_NoNavOverride to disable the behavior where the |
| return value is overridden by focus when gamepad/keyboard navigation is active. |
| - InputText: Fixed pressing Tab emitting two tabs characters because of dual Keys/Chars events being |
| trickled with the new input queue (happened on some backends only). (#2467, #1336) |
| - InputText: Fixed a one-frame display glitch where pressing Escape to revert after a deletion |
| would lead to small garbage being displayed for one frame. Curiously a rather old bug! (#3008) |
| - InputText: Fixed an undo-state corruption issue when editing main buffer before reactivating item. (#4947) |
| - InputText: Fixed an undo-state corruption issue when editing in-flight buffer in user callback. |
| (#4947, #4949] [@JoshuaWebb] |
| - Tables: Fixed incorrect border height used for logic when resizing one of several synchronized |
| instance of a same table ID, when instances have a different height. (#3955). |
| - Tables: Fixed incorrect auto-fit of parent windows when using non-resizable weighted columns. (#5276) |
| - Tables: Fixed draw-call merging of last column. Depending on some unrelated settings (e.g. BorderH) |
| merging draw-call of the last column didn't always work (regression since 1.87). (#4843, #4844) [@rokups] |
| - Inputs: Fixed IsMouseClicked() repeat mode rate being half of keyboard repeat rate. |
| - ColorEdit: Fixed text baseline alignment after a SameLine() after a ColorEdit() with visible label. |
| - Tabs: BeginTabItem() now reacts to SetNextItemWidth(). (#5262) |
| - Tabs: Tweak shrinking policy so that while resizing tabs that don't need shrinking keep their |
| initial width more precisely (without the occasional +1 worth of width). |
| - Menus: Adjusted BeginMenu() closing logic so hovering void or non-MenuItem() in parent window |
| always lead to menu closure. Fixes using items that are not MenuItem() or BeginItem() at the root |
| level of a popup with a child menu opened. |
| - Menus: Menus emitted from the main/scrolling layer are not part of the same menu-set as menus emitted |
| from the menu-bar, avoiding accidental hovering from one to the other. (#3496, #4797) [@rokups] |
| - Style: Adjust default value of GrabMinSize from 10.0f to 12.0f. |
| - Stack Tool: Added option to copy item path to clipboard. (#4631) |
| - Settings: Fixed out-of-bounds read when .ini file on disk is empty. (#5351) [@quantum5] |
| - Settings: Fixed some SetNextWindowPos/SetNextWindowSize API calls not marking settings as dirty. |
| - DrawList: Fixed PathArcTo() emitting terminating vertices too close to arc vertices. (#4993) [@thedmd] |
| - DrawList: Fixed texture-based anti-aliasing path with RGBA textures (#5132, #3245) [@cfillion] |
| - DrawList: Fixed divide-by-zero or glitches with Radius/Rounding values close to zero. (#5249, #5293, #3491) |
| - DrawList: Circle with a radius smaller than 0.5f won't appear, to be consistent with other primitives. [@thedmd] |
| - Debug Tools: Debug Log: Added ShowDebugLogWindow() showing an opt-in synthetic log of principal events |
| (focus, popup, active id changes) helping to diagnose issues. |
| - Debug Tools: Added DebugTextEncoding() function to facilitate diagnosing issues when not sure about |
| whether you have a UTF-8 text encoding issue or a font loading issue. [@LaMarche05, @ocornut] |
| - Demo: Add better demo of how to use SetNextFrameWantCaptureMouse()/SetNextFrameWantCaptureKeyboard(). |
| - Metrics: Added a "UTF-8 Encoding Viewer" section using the aforementioned DebugTextEncoding() function. |
| - Metrics: Added "InputText" section to visualize internal state (#4947, #4949). |
| - Misc: Fixed calling GetID("label") _before_ a widget emitting this item inside a group (such as InputInt()) |
| from causing an assertion when closing the group. (#5181). |
| - Misc: Fixed IsAnyItemHovered() returning false when using navigation. |
| - Misc: Allow redefining IM_COL32_XXX layout macros to facilitate use on big-endian systems. (#5190, #767, #844) |
| - Misc: Added IMGUI_STB_SPRINTF_FILENAME to support custom path to stb_sprintf. (#5068, #2954) [@jakubtomsu] |
| - Misc: Added constexpr to ImVec2/ImVec4 inline constructors. (#4995) [@Myriachan] |
| - Misc: Updated stb_truetype.h from 1.20 to 1.26 (many fixes). (#5075) |
| - Misc: Updated stb_textedit.h from 1.13 to 1.14 (our changes so this effectively is a no-op). (#5075) |
| - Misc: Updated stb_rect_pack.h from 1.00 to 1.01 (minor). (#5075) |
| - Misc: binary_to_compressed_c tool: Added -nostatic option. (#5021) [@podsvirov] |
| - ImVector: Fixed erase() with empty range. (#5009) [@thedmd] |
| - Backends: Vulkan: Don't use VK_PRESENT_MODE_MAX_ENUM_KHR as specs state it isn't part of the API. (#5254) |
| - Backends: GLFW: Fixed a regression in 1.87 which resulted in keyboard modifiers events being |
| reported incorrectly on Linux/X11, due to a bug in GLFW. [@rokups] |
| - Backends: GLFW: Fixed untranslated keys when pressing lower case letters on OSX (#5260, #5261) [@cpichard] |
| - Backends: SDL: Fixed dragging out viewport broken on some SDL setups. (#5012) [@rokups] |
| - Backends: SDL: Added support for extra mouse buttons (SDL_BUTTON_X1/SDL_BUTTON_X2). (#5125) [@sgiurgiu] |
| - Backends: SDL, OpenGL3: Fixes to facilitate building on AmigaOS4. (#5190) [@afxgroup] |
| - Backends: OSX: Monitor NSKeyUp events to catch missing keyUp for key when user press Cmd + key (#5128) [@thedmd] |
| - Backends: OSX, Metal: Store backend data in a per-context struct, allowing to use these backends with |
| multiple contexts. (#5203, #5221, #4141) [@noisewuwei] |
| - Backends: Metal: Fixed null dereference on exit inside command buffer completion handler. (#5363, #5365) [@warrenm] |
| - Backends: OpenGL3: Partially revert 1.86 change of using glBufferSubData(): now only done on Windows and |
| Intel GPU, based on querying glGetString(GL_VENDOR). Essentially we got report of accumulating leaks on Intel |
| with multi-viewports when using simple glBufferData() without orphaning, and report of corruptions on other |
| GPUs with multi-viewports when using orphaning and glBufferSubData(), so currently switching technique based |
| on GPU vendor, which unfortunately reinforce the cargo-cult nature of dealing with OpenGL drivers. |
| Navigating the space of mysterious OpenGL drivers is particularly difficult as they are known to rely on |
| application specific whitelisting. (#4468, #3381, #2981, #4825, #4832, #5127). |
| - Backends: OpenGL3: Fix state corruption on OpenGL ES 2.0 due to not preserving GL_ELEMENT_ARRAY_BUFFER_BINDING |
| and vertex attribute states. [@rokups] |
| - Examples: Emscripten+WebGPU: Fix building for latest WebGPU specs. (#3632) |
| - Examples: OSX+Metal, OSX+OpenGL: Removed now-unnecessary calls to ImGui_ImplOSX_HandleEvent(). (#4821) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.87 (Released 2022-02-07) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.87 |
| |
| Breaking Changes: |
| |
| - Removed support for pre-C++11 compilers. We'll stop supporting VS2010. (#4537) |
| - Reworked IO mouse input API: (#4921, #4858) [@thedmd, @ocornut] |
| - Added io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent() functions, |
| obsoleting writing directly to io.MousePos, io.MouseDown[], io.MouseWheel, etc. |
| - This enable input queue trickling to support low framerates. (#2787, #1992, #3383, #2525, #1320) |
| - For all calls to IO new functions, the Dear ImGui context should be bound/current. |
| - Reworked IO keyboard input API: (#4921, #2625, #3724) [@thedmd, @ocornut] |
| - Added io.AddKeyEvent() function, obsoleting writing directly to io.KeyMap[], io.KeysDown[] arrays. |
| - For keyboard modifiers, you can call io.AddKeyEvent() with ImGuiKey_ModXXX values, |
| obsoleting writing directly to io.KeyCtrl, io.KeyShift etc. |
| - Added io.SetKeyEventNativeData() function (optional) to pass native and old legacy indices. |
| - Added full range of key enums in ImGuiKey (e.g. ImGuiKey_F1). |
| - Added GetKeyName() helper function. |
| - Obsoleted GetKeyIndex(): it is now unnecessary and will now return the same value. |
| - All keyboard related functions taking 'int user_key_index' now take 'ImGuiKey key': |
| - IsKeyDown(), IsKeyPressed(), IsKeyReleased(), GetKeyPressedAmount(). |
| - Added io.ConfigInputTrickleEventQueue (defaulting to true) to disable input queue trickling. |
| - Backward compatibility: |
| - All backends updated to use new functions. |
| - Old backends populating those arrays should still work! |
| - Calling e.g. IsKeyPressed(MY_NATIVE_KEY_XXX) will still work! (for a while) |
| - Those legacy arrays will only be disabled if '#define IMGUI_DISABLE_OBSOLETE_KEYIO' is set in your imconfig. |
| In a few versions, IMGUI_DISABLE_OBSOLETE_FUNCTIONS will automatically enable IMGUI_DISABLE_OBSOLETE_KEYIO, |
| so this will be moved into the regular obsolescence path. |
| - BREAKING: If your custom backend used ImGuiKey as mock native indices (e.g. "io.KeyMap[ImGuiKey_A] = ImGuiKey_A") |
| this is a use case that will now assert and be breaking for your old backend. |
| - Transition guide: |
| - IsKeyPressed(MY_NATIVE_KEY_XXX) -> use IsKeyPressed(ImGuiKey_XXX) |
| - IsKeyPressed(GetKeyIndex(ImGuiKey_XXX)) -> use IsKeyPressed(ImGuiKey_XXX) |
| - Backend writing to io.KeyMap[],KeysDown[] -> backend should call io.AddKeyEvent(), if legacy indexing is desired, call io.SetKeyEventNativeData() |
| - Basically the trick we took advantage of is that we previously only supported native keycode from 0 to 511, |
| so ImGuiKey values can still express a legacy native keycode, and new named keys are all >= 512. |
| - This will enable a few things in the future: |
| - Access to portable keys allows for backend-agnostic keyboard input code. Until now it was difficult |
| to share code using keyboard across project because of this gap. (#2625, #3724) |
| - Access to full key ranges will allow us to develop a proper keyboard shortcut system. (#456) |
| - io.SetKeyEventNativeData() include native keycode/scancode which may later be exposed. (#3141, #2959) |
| - Reworked IO nav/gamepad input API and unifying inputs sources: (#4921, #4858, #787) |
| - Added full range of ImGuiKey_GamepadXXXX enums (e.g. ImGuiKey_GamepadDpadUp, ImGuiKey_GamepadR2) to use with |
| io.AddKeyEvent(), io.AddKeyAnalogEvent(). |
| - Added io.AddKeyAnalogEvent() function, obsoleting writing directly to io.NavInputs[] arrays. |
| - Renamed ImGuiKey_KeyPadEnter to ImGuiKey_KeypadEnter to align with new symbols. Kept redirection enum. (#2625) |
| - Removed support for legacy arithmetic operators (+,+-,*,/) when inputing text into a slider/drag. (#4917, #3184) |
| This doesn't break any api/code but a feature that was accessible by end-users (which seemingly no one used). |
| (Instead you may implement custom expression evaluators to provide a better version of this). |
| - Backends: GLFW: backend now uses glfwSetCursorPosCallback(). |
| - If calling ImGui_ImplGlfw_InitXXX with install_callbacks=true: nothing to do. is already done for you. |
| - If calling ImGui_ImplGlfw_InitXXX with install_callbacks=false: you WILL NEED to register the GLFW callback |
| using glfwSetCursorPosCallback() and forward it to the backend function ImGui_ImplGlfw_CursorPosCallback(). |
| - Backends: SDL: Added SDL_Renderer* parameter to ImGui_ImplSDL2_InitForSDLRenderer(), so backend can call |
| SDL_GetRendererOutputSize() to obtain framebuffer size valid for hi-dpi. (#4927) [@Clownacy] |
| - Commented out redirecting functions/enums names that were marked obsolete in 1.69, 1.70, 1.71, 1.72 (March-July 2019) |
| - ImGui::SetNextTreeNodeOpen() -> use ImGui::SetNextItemOpen() |
| - ImGui::GetContentRegionAvailWidth() -> use ImGui::GetContentRegionAvail().x |
| - ImGui::TreeAdvanceToLabelPos() -> use ImGui::SetCursorPosX(ImGui::GetCursorPosX() + ImGui::GetTreeNodeToLabelSpacing()); |
| - ImFontAtlas::CustomRect -> use ImFontAtlasCustomRect |
| - ImGuiColorEditFlags_RGB/HSV/HEX -> use ImGuiColorEditFlags_DisplayRGB/HSV/Hex |
| - Removed io.ImeSetInputScreenPosFn() in favor of more flexible io.SetPlatformImeDataFn() for IME support. |
| Because this field was mostly only ever used by Dear ImGui internally, not by backends nor the vast majority |
| of user code, this should only affect a very small fraction for users who are already very IME-aware. |
| - Obsoleted 'void* io.ImeWindowHandle' in favor of writing to 'void* ImGuiViewport::PlatformHandleRaw'. |
| This removes an incompatibility between 'master' and 'multi-viewports' backends and toward enabling |
| better support for IME. Updated backends accordingly. Because the old field is set by existing backends, |
| we are keeping it (marked as obsolete). |
| |
| Other Changes: |
| |
| - IO: Added event based input queue API, which now trickles events to support low framerates. [@thedmd, @ocornut] |
| Previously the most common issue case (button presses in low framerates) was handled by backend. This is now |
| handled by core automatically for all kind of inputs. (#4858, #2787, #1992, #3383, #2525, #1320) |
| - New IO functions for keyboard/gamepad: AddKeyEvent(), AddKeyAnalogEvent(). |
| - New IO functions for mouse: AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent(). |
| - IO: Unified key enums allow using key functions on key mods and gamepad values. |
| - Fixed CTRL+Tab into an empty window causing artifacts on the highlight rectangle due to bad reordering on ImDrawCmd. |
| - Fixed a situation where CTRL+Tab or Modal can occasionally lead to the creation of ImDrawCmd with zero triangles, |
| which would makes the draw operation of some backends assert (e.g. Metal with debugging). (#4857) |
| - Popups: Fixed a regression crash when a new window is created after a modal on the same frame. (#4920) [@rokups] |
| - Popups: Fixed an issue when reopening a same popup multiple times would offset them by 1 pixel on the right. (#4936) |
| - Tables, ImDrawListSplitter: Fixed erroneously stripping trailing ImDrawList::AddCallback() when submitted in |
| last column or last channel and when there are no other drawing operation. (#4843, #4844) [@hoffstadt] |
| - Tables: Fixed positioning of Sort icon on right-most column with some settings (not resizable + no borders). (#4918). |
| - Nav: Fixed gamepad navigation in wrapping popups not wrapping all the way. (#4365) |
| - Sliders, Drags: Fixed text input of values with a leading sign, common when using a format enforcing sign. (#4917) |
| - Demo: draw a section of keyboard in "Inputs > Keyboard, Gamepad & Navigation state" to visualize keys. [@thedmd] |
| - Platform IME: changed io.ImeSetInputScreenPosFn() to io.SetPlatformImeDataFn() API, |
| now taking a ImGuiPlatformImeData structure which we can more easily extend in the future. |
| - Platform IME: moved io.ImeWindowHandle to GetMainViewport()->PlatformHandleRaw. |
| - Platform IME: add ImGuiPlatformImeData::WantVisible, hide IME composition window when not used. (#2589) [@actboy168] |
| - Platform IME: add ImGuiPlatformImeData::InputLineHeight. (#3113) [@liuliu] |
| - Platform IME: [windows] call ImmSetCandidateWindow() to position candidate window. |
| - Backends: GLFW: Pass localized keys (matching keyboard layout). Fix e.g. CTRL+A, CTRL+Z, CTRL+Y shortcuts. |
| We are now converting GLFW untranslated keycodes back to translated keycodes in order to match the behavior of |
| other backend, and facilitate the use of GLFW with lettered-shortcuts API. (#456, #2625) |
| - Backends: GLFW: Submit keys and key mods using io.AddKeyEvent(). (#2625, #4921) |
| - Backends: GLFW: Submit mouse data using io.AddMousePosEvent(), io.AddMouseButtonEvent(), io.AddMouseWheelEvent() functions. (#4921) |
| - Backends: GLFW: Retrieve mouse position using glfwSetCursorPosCallback() + fallback when focused but not hovered/captured. |
| - Backends: GLFW: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4921) |
| - Backends: GLFW: Added ImGui_ImplGlfw_InstallCallbacks()/ImGui_ImplGlfw_RestoreCallbacks() helpers to facilitate user installing |
| callbacks after iniitializing backend. (#4981) |
| - Backends: Win32: Submit keys and key mods using io.AddKeyEvent(). (#2625, #4921) |
| - Backends: Win32: Retrieve mouse position using WM_MOUSEMOVE/WM_MOUSELEAVE + fallback when focused but not hovered/captured. |
| - Backends: Win32: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4921) |
| - Backends: Win32: Maintain a MouseButtonsDown mask instead of using ImGui::IsAnyMouseDown() which will be obsoleted. |
| - Backends: Win32: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4921) |
| - Backends: SDL: Pass localized keys (matching keyboard layout). Fix e.g. CTRL+A, CTRL+Z, CTRL+Y shortcuts. (#456, #2625) |
| - Backends: SDL: Submit key data using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) |
| - Backends: SDL: Retrieve mouse position using SDL_MOUSEMOTION/SDL_WINDOWEVENT_LEAVE + fallback when focused but not hovered/captured. |
| - Backends: SDL: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4921) |
| - Backends: SDL: Maintain a MouseButtonsDown mask instead of using ImGui::IsAnyMouseDown() which will be obsoleted. |
| - Backends: SDL: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4921) |
| - Backends: Allegro5: Submit keys using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) |
| - Backends: Allegro5: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4921) |
| - Backends: OSX: Submit keys using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) |
| - Backends: OSX: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4921) |
| - Backends: OSX: Submit gamepad data using io.AddKeyEvent/AddKeyAnalogEvent() functions, stopped writing to io.NavInputs[]. (#4921) |
| - Backends: OSX: Added basic Platform IME support. (#3108, #2598) [@liuliu] |
| - Backends: OSX: Fix Game Controller nav mapping to use shoulder for both focusing and tweak speed. (#4759) |
| - Backends: OSX: Fix building with old Xcode versions that are missing gamepad features. [@rokups] |
| - Backends: OSX: Forward keyDown/keyUp events to OS when unused by Dear ImGui. |
| - Backends: Android, GLUT: Submit keys using io.AddKeyEvent(). Submit keymods using io.AddKeyModsEvent() at the same time. (#2625) |
| - Backends: Android, GLUT: Submit mouse data using io.AddMousePosEvent(), AddMouseButtonEvent(), AddMouseWheelEvent() functions. (#4858) |
| - Backends: OpenGL3: Fixed a buffer overflow in imgui_impl_opengl3_loader.h init (added in 1.86). (#4468, #4830) [@dymk] |
| It would generally not have noticeable side-effect at runtime but would be detected by runtime checkers. |
| - Backends: OpenGL3: Fix OpenGL ES2 includes on Apple systems. [@rokups] |
| - Backends: Metal: Added Apple Metal C++ API support. (#4824, #4746) [@luigifcruz] |
| Enable with '#define IMGUI_IMPL_METAL_CPP' in your imconfig.h file. |
| - Backends: Metal: Ignore ImDrawCmd where ElemCount == 0, which are normally not emitted by the library but |
| can theoretically be created by user code manipulating a ImDrawList. (#4857) |
| - Backends: Vulkan: Added support for ImTextureID as VkDescriptorSet, add ImGui_ImplVulkan_AddTexture(). (#914) [@martty] |
| - Backends: SDL_Renderer: Fix texture atlas format on big-endian hardware (#4927) [@Clownacy] |
| - Backends: WebGPU: Fixed incorrect size parameters in wgpuRenderPassEncoderSetIndexBuffer() and |
| wgpuRenderPassEncoderSetVertexBuffer() calls. (#4891) [@FeepsDev] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.86 (Released 2021-12-22) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.86 |
| |
| Breaking Changes: |
| |
| - Removed CalcListClipping() function. Prefer using ImGuiListClipper which can return non-contiguous ranges. |
| Please open an issue if you think you really need this function. (#3841) |
| - Backends: OSX: Added NSView* parameter to ImGui_ImplOSX_Init(). (#4759) [@stuartcarnie] |
| - Backends: Marmalade: Removed obsolete Marmalade backend (imgui_impl_marmalade.cpp) + example app. (#368, #375) |
| Find last supported version at https://github.com/ocornut/imgui/wiki/Bindings |
| |
| Other Changes: |
| |
| - Added an assertion for the common user mistake of using "" as an identifier at the root level of a window |
| instead of using "##something". Empty identifiers are valid and useful in a very small amount of cases, |
| but 99.9% of the time if you need an empty label you should use "##something". (#1414, #2562, #2807, #4008, |
| #4158, #4375, #4548, #4657, #4796). READ THE FAQ ABOUT HOW THE ID STACK WORKS -> https://dearimgui.com/faq |
| - Added GetMouseClickedCount() function, returning the number of successive clicks. (#3229) [@kudaba] |
| (so IsMouseDoubleClicked(ImGuiMouseButton_Left) is same as GetMouseClickedCount(ImGuiMouseButton_Left) == 2, |
| but it allows testing for triple clicks and more). |
| - Modals: fixed issue hovering popups inside a child windows inside a modal. (#4676, #4527) |
| - Modals, Popups, Windows: changes how appearing windows are interrupting popups and modals. (#4317) [@rokups] |
| - appearing windows created from within the begin stack of a popup/modal will no longer close it. |
| - appearing windows created not within the begin stack of a modal will no longer close the modal, |
| and automatically appear behind it. |
| - Fixed IsWindowFocused()/IsWindowHovered() issues with child windows inside popups. (#4676) |
| - Nav: Ctrl+tabbing to cycle through windows is now enabled regardless of using the _NavEnableKeyboard |
| configuration flag. This is part of an effort to generalize the use of keyboard inputs. (#4023, #787). |
| Note that while this is active you can also moving windows (with arrow) and resize (shift+arrows). |
| - Nav: tabbing now cycles through clipped items and scroll accordingly. (#4449) |
| - Nav: pressing PageUp/PageDown/Home/End when in Menu layer automatically moves back to Main layer. |
| - Nav: fixed resizing window from borders setting navigation to Menu layer. |
| - Nav: prevent child from clipping items when using _NavFlattened and parent has a pending request. |
| - Nav: pressing Esc to exit a child window reactivates the Nav highlight if it was disabled by mouse. |
| - Nav: with ImGuiConfigFlags_NavEnableSetMousePos enabled: Fixed absolute mouse position when using |
| Home/End leads to scrolling. Fixed not setting mouse position when a failed move request (e.g. when |
| already at edge) reactivates the navigation highlight. |
| - Menus: fixed closing a menu inside a popup/modal by clicking on the popup/modal. (#3496, #4797) |
| - Menus: fixed closing a menu by clicking on its menu-bar item when inside a popup. (#3496, #4797) [@xndcn] |
| - Menus: fixed menu inside a popup/modal not inhibiting hovering of items in the popup/modal. (#3496, #4797) |
| - Menus: fixed sub-menu items inside a popups from closing the popup. |
| - Menus: fixed top-level menu from not consistently using style.PopupRounding. (#4788) |
| - InputText, Nav: fixed repeated calls to SetKeyboardFocusHere() preventing to use InputText(). (#4682) |
| - Inputtext, Nav: fixed using SetKeyboardFocusHere() on InputTextMultiline(). (#4761) |
| - InputText: made double-click select word, triple-line select line. Word delimitation logic differs |
| slightly from the one used by CTRL+arrows. (#2244) |
| - InputText: fixed ReadOnly flag preventing callbacks from receiving the text buffer. (#4762) [@actondev] |
| - InputText: fixed Shift+Delete from not cutting into clipboard. (#4818, #1541) [@corporateshark] |
| - InputTextMultiline: fixed incorrect padding when FrameBorder > 0. (#3781, #4794) |
| - InputTextMultiline: fixed vertical tracking with large values of FramePadding.y. (#3781, #4794) |
| - Separator: fixed cover all columns while called inside a table. (#4787) |
| - Clipper: currently focused item is automatically included in clipper range. |
| Fixes issue where e.g. drag and dropping an item and scrolling ensure the item source location is |
| still submitted. (#3841, #1725) [@GamingMinds-DanielC, @ocornut] |
| - Clipper: added ForceDisplayRangeByIndices() to force a given item (or several) to be stepped out |
| during a clipping operation. (#3841) [@GamingMinds-DanielC] |
| - Clipper: rework so gamepad/keyboard navigation doesn't create spikes in number of items requested |
| by the clipper to display. (#3841) |
| - Clipper: fixed content height declaration slightly mismatching the value of when not using a clipper. |
| (an additional ItemSpacing.y was declared, affecting scrollbar range). |
| - Clipper: various and incomplete changes to tame down scrolling and precision issues on very large ranges. |
| Passing an explicit height to the clipper now allows larger ranges. (#3609, #3962). |
| - Clipper: fixed invalid state when number of frozen table row is smaller than ItemCount. |
| - Drag and Drop: BeginDragDropSource() with ImGuiDragDropFlags_SourceAllowNullID doesn't lose |
| tooltip when scrolling. (#143) |
| - Fonts: fixed infinite loop in ImFontGlyphRangesBuilder::AddRanges() when passing UINT16_MAX or UINT32_MAX |
| without the IMGUI_USE_WCHAR32 compile-time option. (#4802) [@SlavicPotato] |
| - Metrics: Added a node showing windows in submission order and showing the Begin() stack. |
| - Misc: Added missing ImGuiMouseCursor_NotAllowed cursor for software rendering (when the |
| io.MouseDrawCursor flag is enabled). (#4713) [@nobody-special666] |
| - Misc: Fixed software mouse cursor being rendered multiple times if Render() is called more than once. |
| - Misc: Fix MinGW DLL build issue (when IMGUI_API is defined). [@rokups] |
| - CI: Add MinGW DLL build to test suite. [@rokups] |
| - Backends: Vulkan: Call vkCmdSetScissor() at the end of render with a full-viewport to reduce |
| likehood of issues with people using VK_DYNAMIC_STATE_SCISSOR in their app without calling |
| vkCmdSetScissor() explicitly every frame. (#4644) |
| - Backends: OpenGL3: Using buffer orphaning + glBufferSubData(), seems to fix leaks with multi-viewports |
| with some Intel HD drivers, and perhaps improve performances. (#4468, #4504, #2981, #3381) [@parbo] |
| - Backends: OpenGL2, Allegro5, Marmalade: Fixed mishandling of the ImDrawCmd::IdxOffset field. |
| This is an old bug, but due to the way we created drawlists, it never had any visible side-effect before. |
| The new code for handling Modal and CTRL+Tab dimming/whitening recently made the bug surface. (#4790) |
| - Backends: Win32: Store left/right variants of Ctrl/Shift/Alt mods in KeysDown[] array. (#2625) [@thedmd] |
| - Backends: DX12: Fixed DRAW_EMPTY_SCISSOR_RECTANGLE warnings. (#4775) |
| - Backends: SDL_Renderer: Added support for large meshes (64k+ vertices) with 16-bit indices, |
| enabling 'ImGuiBackendFlags_RendererHasVtxOffset' in the backend. (#3926) [@rokups] |
| - Backends: SDL_Renderer: Fix for SDL 2.0.19+ RenderGeometryRaw() API signature change. (#4819) [@sridenour] |
| - Backends: OSX: Generally fix keyboard support. Keyboard arrays indexed using kVK_* codes, e.g. |
| ImGui::IsKeyPressed(kVK_Space). Don't set mouse cursor shape unconditionally. Handle two fingers scroll |
| cancel event. (#4759, #4253, #1873) [@stuartcarnie] |
| - Backends: OSX: Add Game Controller support (need linking GameController framework) (#4759) [@stuartcarnie] |
| - Backends: WebGPU: Passing explicit buffer sizes to wgpuRenderPassEncoderSetVertexBuffer() and |
| wgpuRenderPassEncoderSetIndexBuffer() functions as validation layers appears to not do what the |
| in-flux specs says. (#4766) [@meshula] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.85 (Released 2021-10-12) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.85 |
| |
| This is the last release officially supporting C++03 and Visual Studio 2008/2010. (#4537) |
| We expect that the next release will require a subset of the C++11 language (VS 2012~, GCC 4.8.1, Clang 3.3). |
| We may use some C++11 language features but we will not use any C++ library headers. |
| If you are stuck on ancient compiler you may need to stay at this version onward. |
| |
| Breaking Changes: |
| |
| - Removed GetWindowContentRegionWidth() function. Kept 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 illfit. |
| 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 _ChildWindows. |
| - IsWindowHovered: Added ImGuiHoveredFlags_NoPopupHierarchy flag allowing to exclude child popups |
| from the tested windows when combined with _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] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.84.2 (Released 2021-08-23) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.84.2 |
| |
| - 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] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.84.1 (Released 2021-08-20) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.84.1 |
| |
| - Disabled: Fixed BeginDisabled(false) - BeginDisabled(true) was working. (#211, #4452, #4453) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.84 (Released 2021-08-20) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.84 |
| |
| Breaking Changes: |
| |
| - Commented out redirecting functions/enums names that were marked obsolete in 1.67 and 1.69 (March 2019): |
| - ImGui::GetOverlayDrawList() -> use ImGui::GetForegroundDrawList() |
| - ImFont::GlyphRangesBuilder -> use ImFontGlyphRangesBuilder |
| - Backends: OpenGL3: added a third source file "imgui_impl_opengl3_loader.h". (#4445) [@rokups] |
| - Backends: GLFW: backend now uses glfwSetCursorEnterCallback(). (#3751, #4377, #2445) |
| - Backends: GLFW: backend now uses glfwSetWindowFocusCallback(). (#4388) [@thedmd] |
| - 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 to ImGui_ImplGlfw_CursorEnterCallback(). |
| - Register glfwSetWindowFocusCallback, forward events to ImGui_ImplGlfw_WindowFocusCallback(). |
| - Backends: SDL2: removed unnecessary SDL_Window* parameter from ImGui_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 ignore SDL_MOUSEBUTTONDOWN events coming right after a SDL_WINDOWEVENT_FOCUS_GAINED event). |
| - 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 than (HoveredId == id). |
| |
| Other 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 ImGuiStyleVar_DisabledAlpha. (#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) |
| - Windows: ImGuiWindowFlags_UnsavedDocument/ImGuiTabItemFlags_UnsavedDocument displays 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_Disabled acting a master disable over (hidden from user/context menu). (#3935) |
| - Tables: Clarified that TableSetColumnEnabled() requires the table to use the ImGuiTableFlags_Hideable flag, |
| because it manipulates the user-accessible show/hide state. (#3935) |
| - Tables: Added ImGuiTableColumnFlags_NoHeaderLabel to request TableHeadersRow() 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) |
| - Tabs: Fixed using more than 32 KB-worth of tab names. (#4176) |
| - InputInt/InputFloat: When used with Steps values and _ReadOnly flag, 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() with ImGuiDragDropFlags_AcceptNoPreviewTooltip. [@JeffM2501] |
| - Menus: MenuItem() and BeginMenu() are not affected/overlapping when style.SelectableTextAlign is 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_pixels' parameter can accept zero if it is set in ImFontSize::SizePixels. |
| - Fonts: Prefer using U+FFFD character for fallback instead of '?', if available. (#4269) |
| - Fonts: Use U+FF0E dot character to construct an ellipsis if U+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. |
| Fixed AddCircle/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_WINDOW is not set. (#4171) |
| Normally the right way to disable compiling the demo is to set IMGUI_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 call SetProcessDpiAwareness() 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_FUNCTIONS' for those compilers. Undo change from 1.82. (#2590, #738, #4185, #4301) |
| - Backends: Win32: Mouse position is correctly reported when the host window is hovered but not focused. (#2445, #2696, #3751, #4377) |
| - Backends: Win32, SDL2, GLFW, OSX, Allegro: now calling io.AddFocusEvent() on focus gain/loss. (#4388) [@thedmd] |
| This allow us to ignore certain inputs on focus loss (previously relied on mouse loss but backends are now |
| reporting mouse even when host window is unfocused, as per #2445, #2696, #3751, #4377) |
| - Backends: Fixed keyboard modifiers being reported when host window doesn't have focus. (#2622) |
| - Backends: GLFW: Mouse position is correctly reported when the host window is hovered but not focused. (#3751, #4377, #2445) |
| (backend now uses glfwSetCursorEnterCallback(). If you called ImGui_ImplGlfw_InitXXX with install_callbacks=false, you will |
| need to install this callback and forward the data to the backend via ImGui_ImplGlfw_CursorEnterCallback). |
| - Backends: SDL2: Mouse position is correctly reported when the host window is hovered but not focused. (#3751, #4377, #2445) |
| (enabled with SDL 2.0.5+ as SDL_GetMouseFocus() is only usable with SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH). |
| - Backends: DX9: Explicitly disable texture state stages after >= 1. (#4268) [@NZJenkins] |
| - Backends: DX12: Fix texture casting crash on 32-bit systems (introduced on 2021/05/19 and v1.83) + added comments |
| about building on 32-bit systems. (#4225) [@kingofthebongo2008] |
| - Backends: OpenGL3: Embed our own minimal GL headers/loader (imgui_impl_opengl3_loader.h) based on gl3w. |
| Reduces the frequent issues and confusion coming from having to support multiple loaders and requiring users to use and |
| initialize the same loader as the backend. (#4445) [@rokups] |
| Removed support for gl3w, glew, glad, glad2, glbinding2, glbinding3 (all now unnecessary). |
| - Backends: OpenGL3: Handle GL_CLIP_ORIGIN on <4.5 contexts if "GL_ARB_clip_control" extension is detected. (#4170, #3998) |
| - Backends: OpenGL3: Destroy vertex/fragment shader objects right after they are linked into main shader. (#4244) [@Crowbarous] |
| - Backends: OpenGL3: Use OES_vertex_array extension on Emscripten + backup/restore current state. (#4266, #4267) [@harry75369] |
| - Backends: GLFW: Installing and exposed ImGui_ImplGlfw_MonitorCallback() for forward compatibility with docking branch. |
| - Backends: OSX: Added a fix for shortcuts using CTRL key instead of CMD key. (#4253) [@rokups] |
| - Examples: DX12: Fixed handling of Alt+Enter in example app (using swapchain's ResizeBuffers). (#4346) [@PathogenDavid] |
| - Examples: DX12: Removed unnecessary recreation of backend-owned device objects when window is resized. (#4347) [@PathogenDavid] |
| - Examples: OpenGL3+GLFW,SDL: Remove include cruft to support variety of GL loaders (no longer necessary). [@rokups] |
| - Examples: OSX+OpenGL2: Fix event forwarding (fix key remaining stuck when using shortcuts with Cmd/Super key). |
| Other OSX examples were not affected. (#4253, #1873) [@rokups] |
| - Examples: Updated all .vcxproj to VS2015 (toolset v140) to facilitate usage with vcpkg. |
| - Examples: SDL2: Accommodate for vcpkg install having headers in SDL2/SDL.h vs SDL.h. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.83 (Released 2021-05-24) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.83 |
| |
| Breaking Changes: |
| |
| - Backends: Obsoleted direct access to ImDrawCmd::TextureId in favor of calling ImDrawCmd::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->TextureId to draw_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. |
| |
| Other Changes: |
| |
| - Scrolling: Fix scroll tracking with e.g. SetScrollHereX/Y() when WindowPadding < 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 _NavFlattened flag. (#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) |
| - Tabs: 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_speed argument to match higher-level functions. (#3922) [@eliasdaler] |
| - ColorEdit4: Alpha default to 255 (instead of 0) when omitted in hex input. (#3973) [@squadack] |
| - InputText: Fix handling of paste failure (buffer full) which in some cases could corrupt the undo stack. (#4038) |
| (fix submitted to https://github.com/nothings/stb/pull/1158) [@Unit2Ed, @ocornut] |
| - 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.Framerate so 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 of 1.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: SDL2: 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() after CreateStateBlock() 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_ORIGIN unless 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.lib required by SDL2main.lib since 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] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.82 (Released 2021-02-15) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.82 |
| |
| Breaking Changes: |
| |
| - Removed redirecting functions/enums names that were marked obsolete in 1.66 (September 2018): |
| - ImGui::SetScrollHere() --> use ImGui::SetScrollHereY() |
| - ImDrawList: upgraded AddPolyline()/PathStroke()'s "bool closed" parameter to use "ImDrawFlags flags". |
| - bool closed = false --> use ImDrawFlags_None, or 0 |
| - bool closed = true --> use ImDrawFlags_Closed |
| The matching ImDrawFlags_Closed value is 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 use ImDrawFlags instead of ImDrawCornersFlags. |
| - ImDrawCornerFlags_TopLeft --> use ImDrawFlags_RoundCornersTopLeft |
| - ImDrawCornerFlags_BotRight --> use ImDrawFlags_RoundCornersBottomRight |
| - ImDrawCornerFlags_None --> use ImDrawFlags_RoundCornersNone etc. |
| 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_RoundCornersNone or rounding == 0.0f! |
| - this is technically the only real breaking change which we can't solve automatically (it's also uncommon). |
| The old ImDrawCornersFlags used 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 ~0 |
| or any value from 0x1 or 0xF. 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_AlwaysInsertMode to ImGuiInputTextFlags_AlwaysOverwrite, old name was an |
| incorrect description of behavior. Was ostly used by memory editor. Kept inline redirection function. (#2863) |
| - Moved 'misc/natvis/imgui.natvis' to 'misc/debuggers/imgui.natvis' as we will provide scripts for other debuggers. |
| - Style: renamed rarely used style.CircleSegmentMaxError (old default = 1.60f) |
| to style.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] |
| *EDIT* Undid in 1.84. |
| - Backends: Win32: Pragma linking with dwmapi.lib (Vista-era, ~9 kb). MinGW users will need to link with -ldwmapi. |
| |
| Other Changes: |
| |
| - Window, Nav: Fixed crash when calling SetWindowFocus(NULL) at the 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.) |
| with ImGuiSliderFlags_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.h |
| would cause incorrect value to be displayed. (#3604) [@rokups] |
| - Drags, Sliders: Support ImGuiSliderFlags_Logarithmic flag 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) |
| - ImFontAtlas: Added 'bool TexPixelsUseColors' output to help backend decide of underlying texture format. (#3369) |
| This can currently only ever be set by the Freetype renderer. |
| - imgui_freetype: Added ImGuiFreeTypeBuilderFlags_Bitmap flag 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 supports "int 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 from "style.CircleTessellationMaxError") (#3491) [@thedmd] |
| - ImDrawList: PathArcToFast() also adaptively tessellate 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 GetAllocatorFunctions() to facilitate sharing allocators across DLL boundaries. (#3836) |
| - Misc: Added 'debuggers/imgui.gdb' and 'debuggers/imgui.natstepfilter' (along with existing '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 builds builds are not required. [@rokups] |
| - Log/Capture: Added LogTextV, a va_list variant of LogText. [@PathogenDavid] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.81 (Released 2021-02-10) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.81 |
| |
| Breaking Changes: |
| |
| - ListBox helpers: |
| - Renamed ListBoxHeader(const char* label, ImVec2 size) to BeginListBox(). |
| - Renamed ListBoxFooter() to EndListBox(). |
| - 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 of (items_count <= height_in_items) or not. |
| - Kept inline redirection function for all threes (will obsolete). |
| - imgui_freetype: |
| - 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) to ImFontConfig::FontBuilderFlags. |
| - Renamed ImGuiFreeType::XXX flags to ImGuiFreeTypeBuilderFlags_XXX for consistency with other API. |
| |
| Other Changes: |
| |
| - Viewports Added ImGui::GetMainViewport() as a way to get the bounds and work area of the host display. (#3789, #1542) |
| - In 'master' branch or without multi-viewports feature enabled: |
| - GetMainViewport()->Pos is always == (0,0) |
| - GetMainViewport()->Size is always == io.DisplaySize |
| - In 'docking' branch 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.DisplaySize as a way to signify "size of the host window" should use GetMainViewport()->Size. |
| - We are also exposing a work area in ImGuiViewport ('WorkPos', 'WorkSize' vs 'Pos', 'Size' for 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. |
| - Tables: Fixed PopItemWidth() or multi-components items not restoring per-colum ItemWidth correctly. (#3760) |
| - Window: Fixed minor title bar text clipping issue when FramePadding is small/zero and there are no |
| close button in the window. (#3731) |
| - SliderInt: Fixed click/drag when v_min==v_max from setting the value to zero. (#3774) [@erwincoumans] |
| Would also repro with DragFloat() when using ImGuiSliderFlags_Logarithmic with 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.y worth 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_FREETYPE' in 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_TRUETYPE' if you somehow need the stb_truetype rasterizer to be |
| compiled in along with the FreeType one, otherwise it is enabled by default. |
| - Fonts: imgui_freetype: Added support for colored glyphs as supported by Freetype 2.10+ (for .ttf using CPAL/COLR |
| tables only). Enable the ImGuiFreeTypeBuilderFlags_LoadColor on a given font. Atlas always output directly |
| as RGBA8 in this situation. Likely to make sense with IMGUI_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 with CalcTextSize().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 'docking' branch. |
| - Demo: Added 'Examples->Fullscreen Window' demo using GetMainViewport() values. (#3789) |
| - Demo: 'Simple Overlay' demo now moves under main menu-bar (if any) using GetMainViewport()'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 call ImGui_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) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.80 (Released 2021-01-21) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.80 |
| |
| Breaking Changes: |
| |
| - Added imgui_tables.cpp file! 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() to ImDrawList::AddBezierCubic(). Kept inline redirection function (will obsolete). |
| - Renamed ImDrawList::PathBezierCurveTo() to ImDrawList::PathBezierCubicCurveTo(). Kept inline redirection function (will obsolete). |
| - Removed redirecting functions/enums names that were marked obsolete in 1.60 (April 2018): |
| - io.RenderDrawListsFn pointer -> use ImGui::GetDrawData() value and call the render function of your backend |
| - ImGui::IsAnyWindowFocused() -> use ImGui::IsWindowFocused(ImGuiFocusedFlags_AnyWindow) |
| - ImGui::IsAnyWindowHovered() -> use ImGui::IsWindowHovered(ImGuiHoveredFlags_AnyWindow) |
| - ImGuiStyleVar_Count_ -> use ImGuiStyleVar_COUNT |
| - ImGuiMouseCursor_Count_ -> use ImGuiMouseCursor_COUNT |
| - Removed redirecting functions/enums names that were marked obsolete in 1.61 (May 2018): |
| - InputFloat (... int decimal_precision ...) -> use InputFloat (... const char* format ...) with format = "%.Xf" where X was value for decimal_precision. |
| - same for InputFloat2()/InputFloat3()/InputFloat4() variants taking a `int decimal_precision` parameter. |
| - Removed redirecting functions/enums names that were marked obsolete in 1.63 (August 2018): |
| - ImGui::IsItemDeactivatedAfterChange() -> use ImGui::IsItemDeactivatedAfterEdit(). |
| - ImGuiCol_ModalWindowDarkening -> use ImGuiCol_ModalWindowDimBg |
| - ImGuiInputTextCallback -> use ImGuiTextEditCallback |
| - ImGuiInputTextCallbackData -> use ImGuiTextEditCallbackData |
| - If you were still using the old names, while you are cleaning up, considering enabling |
| IMGUI_DISABLE_OBSOLETE_FUNCTIONS in imconfig.h even temporarily to have a pass at finding |
| and removing up old API calls, if any remaining. |
| - Internals: Columns: renamed undocumented/internals ImGuiColumnsFlags_* to ImGuiOldColumnFlags_* to reduce |
| confusion with Tables API. Keep redirection enums (will obsolete). (#125, #513, #913, #1204, #1444, #2142, #2707) |
| - Renamed io.ConfigWindowsMemoryCompactTimer to io.ConfigMemoryCompactTimer as the feature now applies |
| to other data structures. (#2636) |
| |
| Other 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. |
| - Tabs: Made it possible to append to an existing tab bar by calling BeginTabBar()/EndTabBar() again. |
| - Tabs: Fixed using more than 128 tabs in a tab bar (scrolling policy recommended). |
| - Tabs: Do not display a tooltip if the name already fits over a given tab. (#3521) |
| - Tabs: Fixed minor/unlikely bug skipping over a button when scrolling left with arrows. |
| - Tabs: Requested ideal content size (for auto-fit) doesn't affect horizontal scrolling. (#3414) |
| - Drag and Drop: Fix losing drop source ActiveID (and often source tooltip) when opening a TreeNode() |
| or CollapsingHeader() 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 with int* type (internals have a template version, not exposed). |
| - Clipper: Fixed incorrect end-list positioning when using ImGuiListClipper with 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.ConfigDragClickToInputText feature 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::VtxOffset in 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] |
| - Log/Capture: fix capture to work on clipped child windows. |
| - Misc: Made the ItemFlags stack shared, so effectively the ButtonRepeat/AllowKeyboardFocus states |
| (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.76) more |
| lenient, allowing full mid-frame releases. This is to accommodate the use of mid-frame modal native |
| windows calls, which leads backends such as GLFW to send key clearing events on focus loss. (#3575) |
| - Style: Changed default style.WindowRounding value to 0.0f (matches default for multi-viewports). |
| - Style: Reduced the size of the resizing grip, made alpha less prominent. |
| - Style: Classic: Increase the default alpha value of WindowBg to be closer to other styles. |
| - Demo: Clarify usage of right-aligned items in Demo>Layout>Widgets Width. |
| - Backends: OpenGL3: Use glGetString(GL_VERSION) query instead of glGetIntegerv(GL_MAJOR_VERSION, ...) |
| when the later returns zero (e.g. Desktop GL 2.x). (#3530) [@xndcn] |
| - Backends: OpenGL2: Backup and restore GL_SHADE_MODEL and disable GL_NORMAL_ARRAY state to increase |
| compatibility with legacy code. (#3671) |
| - Backends: OpenGL3: Backup and restore GL_PRIMITIVE_RESTART state. (#3544) [@Xipiryon] |
| - Backends: OpenGL2, OpenGL3: Backup and restore GL_STENCIL_TEST enable state. (#3668) |
| - Backends: Vulkan: Added support for specifying which sub-pass to reference during VkPipeline creation. (@3579) [@bdero] |
| - Backends: DX12: Improve Windows 7 compatibility (for D3D12On7) by loading d3d12.dll dynamically. (#3696) [@Mattiwatti] |
| - Backends: Win32: Fix setting of io.DisplaySize to invalid/uninitialized data after hwnd has been closed. |
| - Backends: OSX: Fix keypad-enter key not working on MacOS. (#3554) [@rokups, @lfnoise] |
| - Examples: Apple+Metal: Consolidated/simplified to get closer to other examples. (#3543) [@warrenm] |
| - Examples: Apple+Metal: Forward events down so OS key combination like Cmd+Q can work. (#3554) [@rokups] |
| - Examples: Emscripten: Renamed example_emscripten/ to example_emscripten_opengl3/. (#3632) |
| - Examples: Emscripten: Added 'make serve' helper to spawn a web-server on localhost. (#3705) [@Horki] |
| - Examples: DirectX12: Move ImGui::Render() call above the first barrier to clarify its lack of effect on the graphics pipe. |
| - CI: Fix testing for Windows DLL builds. (#3603, #3601) [@iboB] |
| - Docs: Improved the wiki and added a https://github.com/ocornut/imgui/wiki/Useful-Widgets page. [@Xipiryon] |
| [2021/05/20: moved to https://github.com/ocornut/imgui/wiki/Useful-Extensions] |
| - Docs: Split examples/README.txt into docs/BACKENDS.md and docs/EXAMPLES.md, and improved them. |
| - Docs: Consistently renamed all occurrences of "binding" and "back-end" to "backend" in comments and docs. |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.79 (Released 2020-10-08) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.79 |
| |
| Breaking Changes: |
| |
| - Fonts: Removed ImFont::DisplayOffset in favor of ImFontConfig::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. (#1619) |
| If you scaled this value after calling AddFontDefault(), this is now done automatically. |
| - ImGuiListClipper: Renamed constructor parameters which created an ambiguous alternative to using |
| the ImGuiListClipper::Begin() function, with misleading edge cases. Always use ImGuiListClipper::Begin()! |
| Kept inline redirection function (will obsolete). |
| (note: imgui_memory_editor <0.40 from imgui_club/ used this old clipper API. Update your copy if needed). |
| - Style: Renamed style.TabMinWidthForUnselectedCloseButton to style.TabMinWidthForCloseButton. |
| - Renamed ImGuiSliderFlags_ClampOnInput to ImGuiSliderFlags_AlwaysClamp. Kept redirection enum (will obsolete). |
| - Renamed OpenPopupContextItem() back to OpenPopupOnItemClick(), REVERTED CHANGE FROM 1.77. |
| For variety of reason this is more self-explanatory and less error-prone. Kept inline redirection function. |
| - Removed return value from OpenPopupOnItemClick() - returned true on mouse release on an item - because it |
| is inconsistent with other popups API and makes others misleading. It's also and unnecessary: you can |
| use IsWindowAppearing() after BeginPopup() 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(0) 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_CallbackEdit to 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_Password with InputTextMultiline(). (#3427, #3428) |
| It is a rather unusual or useless combination of features but no reason it shouldn't work! |
| - 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] |
| - DragFloat, DragScalar: Fixed ImGuiSliderFlags_ClampOnInput not 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 CursorPosMax gets pushed to CursorPos prior to calling BeginMenuBar(), |
| 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.) |
| - Tabs: Added TabItemButton() to submit tab that behave like a button. (#3291) [@Xipiryon] |
| - Tabs: Added ImGuiTabItemFlags_Leading and ImGuiTabItemFlags_Trailing flags 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 with TabItemButton(). (#3291) [@Xipiryon] |
| - Tabs: Added ImGuiTabItemFlags_NoReorder flag to disable reordering a given tab. |
| - Tabs: Keep tab item close button visible while dragging a tab (independent of hovering state). |
| - Tabs: Fixed a small bug where closing a tab that is not selected would leave a tab hole for a frame. |
| - Tabs: Fixed a small bug where scrolling buttons (with ImGuiTabBarFlags_FittingPolicyScroll) would |
| generate an unnecessary extra draw call. |
| - Tabs: Fixed a small bug where toggling a tab bar from Reorderable to not Reorderable would leave |
| tabs reordered in the tab list popup. [@Xipiryon] |
| - 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 tooltips 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_validation" instead of |
| "VK_LAYER_LUNARG_standard_validation" which is deprecated (#3459) [@FunMiles] |
| - Examples: DX12: Enable breaking on any warning/error when debug interface is enabled. |
| - Examples: DX12: Added '#define ImTextureID ImU64' in project and build files to also allow building |
| on 32-bit systems. Added project to default Visual Studio solution file. (#301) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.78 (Released 2020-08-18) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.78 |
| |
| Breaking Changes: |
| |
| - Obsoleted use of the trailing 'float power=1.0f' parameter 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.0f' argument with ImGuiSliderFlags 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!), 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 https://github.com/ocornut/imgui/issues/3361 for all details. |
| For shared code, you can version check at compile-time with `#if IMGUI_VERSION_NUM >= 17704`. |
| 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, this 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.WantCaptureKeyboard |
| flag 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 ImGuiSliderFlags parameters. |
| - For float functions they replace the old trailing 'float power=1.0' parameter. |
| (See #3361 and the "Breaking Changes" block above for all details). |
| - Added ImGuiSliderFlags_Logarithmic flag 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_ClampOnInput flag to force clamping value when using |
| CTRL+Click to type in a value manually. (#1829, #3209, #946, #413). |
| [note: RENAMED to ImGuiSliderFlags_AlwaysClamp in 1.79]. |
| - Added ImGuiSliderFlags_NoRoundToFormat flag to disable rounding underlying |
| value to match precision of the display format string. (#642) |
| - Added ImGuiSliderFlags_NoInput flag 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] |
| - 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 as TextUnformatted() 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 in SetScrollHere functions as they are more explicitly |
| aiming at making widgets visible. May later be moved to a flag. |
| - Tabs: 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 to InvisibleButton(): 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::GlyphExtraSpacing and ImFontConfig::PixelSnapH settings 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 = false` to disable rendering using this method. |
| - Clear `ImFontAtlasFlags_NoBakedLines` in ImFontAtlas::Flags to disable baking data in texture. |
| - ImDrawList: changed AddCircle(), AddCircleFilled() default num_segments from 12 to 0, effectively |
| enabling auto-tessellation by default. Tweak tessellation in Style Editor->Rendering section, or |
| by modifying the 'style.CircleSegmentMaxError' value. [@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] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.77 (Released 2020-06-29) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.77 |
| |
| Breaking Changes: |
| |
| - Removed unnecessary ID (first arg) of ImFontAtlas::AddCustomRectRegular() function. Please |
| note that this is a Beta api and will likely be reworked in order to support multi-DPI across |
| multiple monitors. |
| - Renamed OpenPopupOnItemClick() to OpenPopupContextItem(). Kept inline redirection function (will obsolete). |
| [NOTE: THIS WAS REVERTED IN 1.79] |
| - Removed BeginPopupContextWindow(const char*, int mouse_button, bool also_over_items) in favor |
| of BeginPopupContextWindow(const char*, ImGuiPopupFlags flags) with ImGuiPopupFlags_NoOverItems. |
| Kept inline redirection function (will obsolete). |
| - Removed obsoleted CalcItemRectClosestPoint() entry point (has been asserting since December 2017). |
| |
| Other Changes: |
| |
| - TreeNode: Fixed bug where BeginDragDropSource() failed when the _OpenOnDoubleClick flag is |
| enabled (bug introduced in 1.76, but pre-1.76 it would also fail unless the _OpenOnArrow |
| flag was also set, and _OpenOnArrow is frequently set along with _OpenOnDoubleClick). |
| - TreeNode: Fixed bug where dragging a payload over a TreeNode() with either _OpenOnDoubleClick |
| or _OpenOnArrow would open the node. (#143) |
| - Windows: Fix unintended feedback loops when resizing windows close to main viewport edges. [@rokups] |
| - Tabs: Added style.TabMinWidthForUnselectedCloseButton settings: |
| - Set to 0.0f (default) to always make a close button appear on hover (same as Chrome, VS). |
| - Set to FLT_MAX to only display a close button when selected (merely hovering is not enough). |
| - Set to an intermediary value to toggle behavior based on width (same as Firefox). |
| - Tabs: Added a ImGuiTabItemFlags_NoTooltip flag to disable the tooltip for individual tab item |
| (vs ImGuiTabBarFlags_NoTooltip for entire tab bar). [@Xipiryon] |
| - Popups: All functions capable of opening popups (OpenPopup*, BeginPopupContext*) now take a new |
| ImGuiPopupFlags sets of flags instead of a mouse button index. The API is automatically backward |
| compatible as ImGuiPopupFlags is guaranteed to hold mouse button index in the lower bits. |
| - Popups: Added ImGuiPopupFlags_NoOpenOverExistingPopup for OpenPopup*/BeginPopupContext* functions |
| to first test for the presence of another popup at the same level. |
| - Popups: Added ImGuiPopupFlags_NoOpenOverItems for BeginPopupContextWindow() - similar to testing |
| for !IsAnyItemHovered() prior to doing an OpenPopup(). |
| - Popups: Added ImGuiPopupFlags_AnyPopupId and ImGuiPopupFlags_AnyPopupLevel flags for IsPopupOpen(), |
| allowing to check if any popup is open at the current level, if a given popup is open at any popup |
| level, if any popup is open at all. |
| - Popups: Fix an edge case where programmatically closing a popup while clicking on its empty space |
| would attempt to focus it and close other popups. (#2880) |
| - Popups: Fix BeginPopupContextVoid() when clicking over the area made unavailable by a modal. (#1636) |
| - Popups: Clarified some of the comments and function prototypes. |
| - Modals: BeginPopupModal() doesn't set the ImGuiWindowFlags_NoSavedSettings flag anymore, and will |
| not always be auto-centered. Note that modals are more similar to regular windows than they are to |
| popups, so api and behavior may evolve further toward embracing this. (#915, #3091) |
| Enforce centering using e.g. SetNextWindowPos(io.DisplaySize * 0.5f, ImGuiCond_Appearing, ImVec2(0.5f,0.5f)). |
| - Metrics: Added a "Settings" section with some details about persistent ini settings. |
| - Nav, Menus: Fix vertical wrap-around in menus or popups created with multiple appending calls to |
| BeginMenu()/EndMenu() or BeginPopup(0/EndPopup(). (#3223, #1207) [@rokups] |
| - Drag and Drop: Fixed unintended fallback "..." tooltip display during drag operation when |
| drag source uses _SourceNoPreviewTooltip flags. (#3160) [@rokups] |
| - Columns: Lower overhead on column switches and switching to background channel. |
| Benefits Columns but was primarily made with Tables in mind! |
| - Fonts: Fix GetGlyphRangesKorean() end-range to end at 0xD7A3 (instead of 0xD79D). (#348, #3217) [@marukrap] |
| - ImDrawList: Fixed an issue where draw command merging or primitive unreserve while crossing the |
| VtxOffset boundary would lead to draw commands with wrong VtxOffset. (#3129, #3163, #3232, #2591) |
| [@thedmd, @Shironekoben, @sergeyn, @ocornut] |
| - ImDrawList, ImDrawListSplitter, Columns: Fixed an issue where changing channels with different |
| TextureId, VtxOffset would incorrectly apply new settings to draw channels. (#3129, #3163) |
| [@ocornut, @thedmd, @Shironekoben] |
| - ImDrawList, ImDrawListSplitter, Columns: Fixed an issue where starting a split when current |
| VtxOffset was not zero would lead to draw commands with wrong VtxOffset. (#2591) |
| - ImDrawList, ImDrawListSplitter, Columns: Fixed an issue where starting a split right after |
| a callback draw command would incorrectly override the callback draw command. |
| - Misc, Freetype: Fix for rare case where FT_Get_Char_Index() succeeds but FT_Load_Glyph() fails. |
| - Docs: Improved and moved font documentation to docs/FONTS.md so it can be readable on the web. |
| Updated various links/wiki accordingly. Added FAQ entry about DPI. (#2861) [@ButternCream, @ocornut] |
| - CI: Added CI test to verify we're never accidentally dragging libstdc++ (on some compiler setups, |
| static constructors for non-pod data seems to drag in libstdc++ due to thread-safety concerns). |
| Fixed a static constructor which led to this dependency on some compiler setups. [@rokups] |
| - Backends: Win32: Support for #define NOGDI, won't try to call GetDeviceCaps(). (#3137, #2327) |
| - Backends: Win32: Fix _WIN32_WINNT < 0x0600 (MinGW defaults to 0x502 == Windows 2003). (#3183) |
| - Backends: SDL: Report a zero display-size when window is minimized, consistent with other backends, |
| making more render/clipping code use an early out path. |
| - Backends: OpenGL: Fixed handling of GL 4.5+ glClipControl(GL_UPPER_LEFT) by inverting the |
| projection matrix top and bottom values. (#3143, #3146) [@u3shit] |
| - Backends: OpenGL: On OSX, if unspecified by app, made default GLSL version 150. (#3199) [@albertvaka] |
| - Backends: OpenGL: Fixed loader auto-detection to not interfere with ES2/ES3 defines. (#3246) [@funchal] |
| - Backends: Vulkan: Fixed error in if initial frame has no vertices. (#3177) |
| - Backends: Vulkan: Fixed edge case where render callbacks wouldn't be called if the ImDrawData |
| structure didn't have any vertices. (#2697) [@kudaba] |
| - Backends: OSX: Added workaround to avoid fast mouse clicks. (#3261, #1992, #2525) [@nburrus] |
| - Examples: GLFW+Vulkan, SDL+Vulkan: Fix for handling of minimized windows. (#3259) |
| - Examples: Apple: Fixed example_apple_metal and example_apple_opengl2 using imgui_impl_osx.mm |
| not forwarding right and center mouse clicks. (#3260) [@nburrus] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.76 (Released 2020-04-12) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.76 |
| |
| Other Changes: |
| |
| - Drag and Drop, Nav: Disabling navigation arrow keys when drag and drop is active. In the docking |
| branch pressing arrow keys while dragging a window from a tab could trigger an assert. (#3025) |
| - BeginMenu: Using same ID multiple times appends content to a menu. (#1207) [@rokups] |
| - BeginMenu: Fixed a bug where SetNextWindowXXX data before a BeginMenu() would not be cleared |
| when the menu is not open. (#3030) |
| - InputText: Fixed password fields displaying ASCII spaces as blanks instead of using the '*' |
| glyph. (#2149, #515) |
| - Selectable: Fixed honoring style.SelectableTextAlign with unspecified size. (#2347, #2601) |
| - Selectable: Allow using ImGuiSelectableFlags_SpanAllColumns in other columns than first. (#125) |
| - TreeNode: Made clicking on arrow with _OpenOnArrow toggle the open state on the Mouse Down |
| event rather than the Mouse Down+Up sequence (this is rather standard behavior). |
| - ColorButton: Added ImGuiColorEditFlags_NoBorder flag to remove the border normally enforced |
| by default for standalone ColorButton. |
| - Nav: Fixed interactions with ImGuiListClipper, so e.g. Home/End result would not clip the |
| landing item on the landing frame. (#787) |
| - Nav: Fixed currently focused item from ever being clipped by ItemAdd(). (#787) |
| - Scrolling: Fixed scrolling centering API leading to non-integer scrolling values and initial |
| cursor position. This would often get fixed after the fix item submission, but using the |
| ImGuiListClipper as the first thing after Begin() could largely break size calculations. (#3073) |
| - Added optional support for Unicode plane 1-16 (#2538, #2541, #2815) [@cloudwu, @samhocevar] |
| - Compile-time enable with '#define IMGUI_USE_WCHAR32' in imconfig.h. |
| - More onsistent handling of unsupported code points (0xFFFD). |
| - Surrogate pairs are supported when submitting UTF-16 data via io.AddInputCharacterUTF16(), |
| allowing for more complete CJK input. |
| - sizeof(ImWchar) goes from 2 to 4. IM_UNICODE_CODEPOINT_MAX goes from 0xFFFF to 0x10FFFF. |
| - Various structures such as ImFont, ImFontGlyphRangesBuilder will use more memory, this |
| is currently not particularly efficient. |
| - Columns: undid the change in 1.75 were Columns()/BeginColumns() were preemptively limited |
| to 64 columns with an assert. (#3037, #125) |
| - Window: Fixed a bug with child window inheriting ItemFlags from their parent when the child |
| window also manipulate the ItemFlags stack. (#3024) [@Stanbroek] |
| - Font: Fixed non-ASCII space occasionally creating unnecessary empty looking polygons. |
| - Misc: Added an explicit compile-time test for non-scoped IM_ASSERT() macros to redirect users |
| to a solution rather than encourage people to add braces in the codebase. |
| - Misc: Added additional checks in EndFrame() to verify that io.KeyXXX values have not been |
| tampered with between NewFrame() and EndFrame(). |
| - Misc: Made default clipboard handlers for Win32 and OSX use a buffer inside the main context |
| instead of a static buffer, so it can be freed properly on Shutdown. (#3110) |
| - Misc, Freetype: Fixed support for IMGUI_STB_RECT_PACK_FILENAME compile time directive |
| in imgui_freetype.cpp (matching support in the regular code path). (#3062) [@DonKult] |
| - Metrics: Made Tools section more prominent. Showing wire-frame mesh directly hovering the ImDrawCmd |
| instead of requiring to open it. Added options to disable bounding box and mesh display. |
| Added notes on inactive/gc-ed windows. |
| - Demo: Added black and white and color gradients to Demo>Examples>Custom Rendering. |
| - CI: Added more tests on the continuous-integration server: extra warnings for Clang/GCC, building |
| SDL+Metal example, building imgui_freetype.cpp, more compile-time imconfig.h settings: disabling |
| obsolete functions, enabling 32-bit ImDrawIdx, enabling 32-bit ImWchar, disabling demo. [@rokups] |
| - Backends: OpenGL3: Fixed version check mistakenly testing for GL 4.0+ instead of 3.2+ to enable |
| ImGuiBackendFlags_RendererHasVtxOffset, leaving 3.2 contexts without it. (#3119, #2866) [@wolfpld] |
| - Backends: OpenGL3: Added include support for older glbinding 2.x loader. (#3061) [@DonKult] |
| - Backends: Win32: Added ImGui_ImplWin32_EnableDpiAwareness(), ImGui_ImplWin32_GetDpiScaleForHwnd(), |
| ImGui_ImplWin32_GetDpiScaleForMonitor() helpers functions (backported from the docking branch). |
| Those functions makes it easier for example apps to support hi-dpi features without setting up |
| a manifest. |
| - Backends: Win32: Calling AddInputCharacterUTF16() from WM_CHAR message handler in order to support |
| high-plane surrogate pairs. (#2815) [@cloudwu, @samhocevar] |
| - Backends: SDL: Added ImGui_ImplSDL2_InitForMetal() for API consistency (even though the function |
| currently does nothing). |
| - Backends: SDL: Fixed mapping for ImGuiKey_KeyPadEnter. (#3031) [@Davido71] |
| - Examples: Win32+DX12: Fixed resizing main window, enabled debug layer. (#3087, #3115) [@sergeyn] |
| - Examples: SDL+DX11: Fixed resizing main window. (#3057) [@joeslay] |
| - Examples: Added SDL+Metal example application. (#3017) [@coding-jackalope] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.75 (Released 2020-02-10) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.75 |
| |
| Breaking Changes: |
| |
| - Removed redirecting functions/enums names that were marked obsolete in 1.53 (December 2017): |
| - ShowTestWindow() -> use ShowDemoWindow() |
| - IsRootWindowFocused() -> use IsWindowFocused(ImGuiFocusedFlags_RootWindow) |
| - IsRootWindowOrAnyChildFocused() -> use IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows) |
| - SetNextWindowContentWidth(w) -> use SetNextWindowContentSize(ImVec2(w, 0.0f) |
| - GetItemsLineHeightWithSpacing() -> use GetFrameHeightWithSpacing() |
| - ImGuiCol_ChildWindowBg -> use ImGuiCol_ChildBg |
| - ImGuiStyleVar_ChildWindowRounding -> use ImGuiStyleVar_ChildRounding |
| - ImGuiTreeNodeFlags_AllowOverlapMode -> use ImGuiTreeNodeFlags_AllowItemOverlap |
| - IMGUI_DISABLE_TEST_WINDOWS -> use IMGUI_DISABLE_DEMO_WINDOWS |
| If you were still using the old names, while you are cleaning up, considering enabling |
| IMGUI_DISABLE_OBSOLETE_FUNCTIONS in imconfig.h even temporarily to have a pass at finding |
| and removing up old API calls, if any remaining. |
| - Removed implicit default parameter to IsMouseDragging(int button = 0) to be consistent |
| with other mouse functions (none of the other functions have it). |
| - Obsoleted calling ImDrawList::PrimReserve() with a negative count (which was vaguely |
| documented and rarely if ever used). Instead we added an explicit PrimUnreserve() API |
| which can be implemented faster. Also clarified pre-existing constraints which weren't |
| documented (can only unreserve from the last reserve call). If you suspect you ever |
| used that feature before (very unlikely, but grep for call to PrimReserve in your code), |
| you can #define IMGUI_DEBUG_PARANOID in imconfig.h to catch existing calls. [@ShironekoBen] |
| - ImDrawList::AddCircle()/AddCircleFilled() functions don't accept negative radius. |
| - Limiting Columns()/BeginColumns() api to 64 columns with an assert. While the current code |
| technically supports it, future code may not so we're putting the restriction ahead. |
| [Undid that change in 1.76] |
| - imgui_internal.h: changed ImRect() default constructor initializes all fields to 0.0f instead |
| of (FLT_MAX,FLT_MAX,-FLT_MAX,-FLT_MAX). If you used ImRect::Add() to create bounding boxes by |
| adding points into it without explicit initialization, you may need to fix your initial value. |
| |
| Other Changes: |
| |
| - Inputs: Added ImGuiMouseButton enum for convenience (e.g. ImGuiMouseButton_Right=1). |
| We forever guarantee that the existing value will not changes so existing code is free to use 0/1/2. |
| - Nav: Fixed a bug where the initial CTRL-Tab press while in a child window sometimes selected |
| the current root window instead of always selecting the previous root window. (#787) |
| - ColorEdit: Fix label alignment when using ImGuiColorEditFlags_NoInputs. (#2955) [@rokups] |
| - ColorEdit: In HSV display of a RGB stored value, attempt to locally preserve Saturation |
| when Value==0.0 (similar to changes done in 1.73 for Hue). Removed Hue editing lock since |
| those improvements in 1.73 makes them unnecessary. (#2722, #2770). [@rokups] |
| - ColorEdit: "Copy As" context-menu tool shows hex values with a '#' prefix instead of '0x'. |
| - ColorEdit: "Copy As" content-menu tool shows hex values both with/without alpha when available. |
| - InputText: Fix corruption or crash when executing undo after clearing input with ESC, as a |
| byproduct we are allowing to later undo the revert with a CTRL+Z. (#3008). |
| - InputText: Fix using a combination of _CallbackResize (e.g. for std::string binding), along with the |
| _EnterReturnsTrue flag along with the rarely used property of using an InputText without persisting |
| user-side storage. Previously if you had e.g. a local unsaved std::string and reading result back |
| from the widget, the user string object wouldn't be resized when Enter key was pressed. (#3009) |
| - MenuBar: Fix minor clipping issue where occasionally a menu text can overlap the right-most border. |
| - Window: Fix SetNextWindowBgAlpha(1.0f) failing to override alpha component. (#3007) [@Albog] |
| - Window: When testing for the presence of the ImGuiWindowFlags_NoBringToFrontOnFocus flag we |
| test both the focused/clicked window (which could be a child window) and the root window. |
| - ImDrawList: AddCircle(), AddCircleFilled() API can now auto-tessellate when provided a segment |
| count of zero. Alter tessellation quality with 'style.CircleSegmentMaxError'. [@ShironekoBen] |
| - ImDrawList: Add AddNgon(), AddNgonFilled() API with a guarantee on the explicit segment count. |
| In the current branch they are essentially the same as AddCircle(), AddCircleFilled() but as |
| we will rework the circle rendering functions to use textures and automatic segment count |
| selection, those new api can fill a gap. [@ShironekoBen] |
| - Columns: ImDrawList::Channels* functions now work inside columns. Added extra comments to |
| suggest using user-owned ImDrawListSplitter instead of ImDrawList functions. [@rokups] |
| - Misc: Added ImGuiMouseCursor_NotAllowed enum so it can be used by more shared widgets. [@rokups] |
| - Misc: Added IMGUI_DISABLE compile-time definition to make all headers and sources empty. |
| - Misc: Disable format checks when using stb_printf, to allow using extra formats. |
| Made IMGUI_USE_STB_SPRINTF a properly documented imconfig.h flag. (#2954) [@loicmolinari] |
| - Misc: Added misc/single_file/imgui_single_file.h, We use this to validate compiling all *.cpp |
| files in a same compilation unit. Actual users of that technique (also called "Unity builds") |
| can generally provide this themselves, so we don't really recommend you use this. [@rokups] |
| - CI: Added PVS-Studio static analysis on the continuous-integration server. [@rokups] |
| - Backends: GLFW, SDL, Win32, OSX, Allegro: Added support for ImGuiMouseCursor_NotAllowed. [@rokups] |
| - Backends: GLFW: Added support for the missing mouse cursors newly added in GLFW 3.4+. [@rokups] |
| - Backends: SDL: Wayland: use SDL_GetMouseState (because there is no global mouse state available |
| on Wayland). (#2800, #2802) [@NeroBurner] |
| - Backends: GLFW, SDL: report Windows key (io.KeySuper) as always released. Neither GLFW nor SDL can |
| correctly report the key release in every cases (e.g. when using Win+V) causing problems with some |
| widgets. The next release of GLFW (3.4+) will have a fix for it. However since it is both difficult |
| and discouraged to make use of this key for Windows application anyway, we just hide it. (#2976) |
| - Backends: Win32: Added support for #define IMGUI_IMPL_WIN32_DISABLE_GAMEPAD to disable all |
| XInput using code, and IMGUI_IMPL_WIN32_DISABLE_LINKING_XINPUT to disable linking with XInput, |
| the later may be problematic if compiling with recent Windows SDK and you want your app to run |
| on Windows 7. You can instead try linking with Xinput9_1_0.lib instead. (#2716) |
| - Backends: Glut: Improved FreeGLUT support for MinGW. (#3004) [@podsvirov] |
| - Backends: Emscripten: Avoid forcefully setting IMGUI_DISABLE_FILE_FUNCTIONS. (#3005) [@podsvirov] |
| - Examples: OpenGL: Explicitly adding -DIMGUI_IMPL_OPENGL_LOADER_GL3W to Makefile to match linking |
| settings (otherwise if another loader such as Glew is accessible, the OpenGL3 backend might |
| automatically use it). (#2919, #2798) |
| - Examples: OpenGL: Added support for glbinding OpenGL loader. (#2870) [@rokups] |
| - Examples: Emscripten: Demonstrating embedding fonts in Makefile and code. (#2953) [@Oipo] |
| - Examples: Metal: Wrapped main loop in @autoreleasepool block to ensure allocations get freed |
| even if underlying system event loop gets paused due to app nap. (#2910, #2917) [@bear24rw] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.74 (Released 2019-11-25) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.74 |
| |
| Breaking Changes: |
| |
| - Removed redirecting functions/enums names that were marked obsolete in 1.52 (October 2017): |
| - Begin() [old 5 args version] -> use Begin() [3 args], use SetNextWindowSize() SetNextWindowBgAlpha() if needed |
| - IsRootWindowOrAnyChildHovered() -> use IsWindowHovered(ImGuiHoveredFlags_RootAndChildWindows) |
| - AlignFirstTextHeightToWidgets() -> use AlignTextToFramePadding() |
| - SetNextWindowPosCenter() -> use SetNextWindowPos() with a pivot of (0.5f, 0.5f) |
| - ImFont::Glyph -> use ImFontGlyph |
| If you were still using the old names, read "API Breaking Changes" section of imgui.cpp to find out |
| the new names or equivalent features, or see how they were implemented until 1.73. |
| - Inputs: Fixed a miscalculation in the keyboard/mouse "typematic" repeat delay/rate calculation, used |
| by keys and e.g. repeating mouse buttons as well as the GetKeyPressedAmount() function. |
| If you were using a non-default value for io.KeyRepeatRate (previous default was 0.250), you can |
| add +io.KeyRepeatDelay to it to compensate for the fix. |
| The function was triggering on: 0.0 and (delay+rate*N) where (N>=1). Fixed formula responds to (N>=0). |
| Effectively it made io.KeyRepeatRate behave like it was set to (io.KeyRepeatRate + io.KeyRepeatDelay). |
| Fixed the code and altered default io.KeyRepeatRate,Delay from 0.250,0.050 to 0.300,0.050 to compensate. |
| If you never altered io.KeyRepeatRate nor used GetKeyPressedAmount() this won't affect you. |
| - Misc: Renamed IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS to IMGUI_DISABLE_DEFAULT_FORMAT_FUNCTIONS. (#1038) |
| - Misc: Renamed IMGUI_DISABLE_MATH_FUNCTIONS to IMGUI_DISABLE_DEFAULT_MATH_FUNCTIONS. |
| - Fonts: ImFontAtlas::AddCustomRectRegular() now requires an ID larger than 0x110000 (instead of 0x10000) to |
| conform with supporting Unicode planes 1-16 in a future update. ID below 0x110000 will now assert. |
| - Backends: DX12: Added extra ID3D12DescriptorHeap parameter to ImGui_ImplDX12_Init() function. |
| The value is unused in master branch but will be used by the multi-viewport feature. (#2851) [@obfuscate] |
| |
| Other Changes: |
| |
| - InputText, Nav: Fixed Home/End key broken when activating Keyboard Navigation. (#787) |
| - InputText: Filter out ASCII 127 (DEL) emitted by low-level OSX layer, as we are using the Key value. (#2578) |
| - Layout: Fixed a couple of subtle bounding box vertical positioning issues relating to the handling of text |
| baseline alignment. The issue would generally manifest when laying out multiple items on a same line, |
| with varying heights and text baseline offsets. |
| Some specific examples, e.g. a button with regular frame padding followed by another item with a |
| multi-line label and no frame padding, such as: multi-line text, small button, tree node item, etc. |
| The second item was correctly offset to match text baseline, and would interact/display correctly, |
| but it wouldn't push the contents area boundary low enough. |
| - Scrollbar: Fixed an issue where scrollbars wouldn't display on the frame following a frame where |
| all child window contents would be culled. |
| - ColorPicker: Fixed SV triangle gradient to block (broken in 1.73). (#2864, #2711). [@lewa-j] |
| - TreeNode: Fixed combination of ImGuiTreeNodeFlags_SpanFullWidth and ImGuiTreeNodeFlags_OpenOnArrow |
| incorrectly locating the arrow hit position to the left of the frame. (#2451, #2438, #1897) |
| - TreeNode: The collapsing arrow accepts click even if modifier keys are being held, facilitating |
| interactions with custom multi-selections patterns. (#2886, #1896, #1861) |
| - TreeNode: Added IsItemToggledOpen() to explicitly query if item was just open/closed, facilitating |
| interactions with custom multi-selections patterns. (#1896, #1861) |
| - DragScalar, SliderScalar, InputScalar: Added p_ prefix to parameter that are pointers to the data |
| to clarify how they are used, and more comments redirecting to the demo code. (#2844) |
| - Error handling: Assert if user mistakenly calls End() instead of EndChild() on a child window. (#1651) |
| - Misc: Optimized storage of window settings data (reducing allocation count). |
| - Misc: Windows: Do not use _wfopen() if IMGUI_DISABLE_WIN32_FUNCTIONS is defined. (#2815) |
| - Misc: Windows: Disabled win32 function by default when building with UWP. (#2892, #2895) |
| - Misc: Using static_assert() when using C++11, instead of our own construct (avoid zealous Clang warnings). |
| - Misc: Added IMGUI_DISABLE_FILE_FUNCTIONS/IMGUI_DISABLE_DEFAULT_FILE_FUNCTION to nullify or disable |
| default implementation of ImFileXXX functions linking with fopen/fclose/fread/fwrite. (#2734) |
| - Docs: Improved and moved FAQ to docs/FAQ.md so it can be readable on the web. [@ButternCream, @ocornut] |
| - Docs: Moved misc/fonts/README.txt to docs/FONTS.txt. |
| - Docs: Added permanent redirect from https://www.dearimgui.com/faq to FAQ page. |
| - Demo: Added simple item reordering demo in Widgets -> Drag and Drop section. (#2823, #143) [@rokups] |
| - Metrics: Show wire-frame mesh and approximate surface area when hovering ImDrawCmd. [@ShironekoBen] |
| - Metrics: Expose basic details of each window key/value state storage. |
| - Examples: DX12: Using IDXGIDebug1::ReportLiveObjects() when DX12_ENABLE_DEBUG_LAYER is enabled. |
| - Examples: Emscripten: Removed BINARYEN_TRAP_MODE=clamp from Makefile which was removed in Emscripten 1.39.0 |
| but required prior to 1.39.0, making life easier for absolutely no-one. (#2877, #2878) [@podsvirov] |
| - Backends: OpenGL2: Explicitly backup, setup and restore GL_TEXTURE_ENV to increase compatibility with |
| legacy OpenGL applications. (#3000) |
| - Backends: OpenGL3: Fix building with pre-3.2 GL loaders which do not expose glDrawElementsBaseVertex(), |
| using runtime GL version to decide if we set ImGuiBackendFlags_RendererHasVtxOffset. (#2866, #2852) [@dpilawa] |
| - Backends: OSX: Fix using Backspace key. (#2578, #2817, #2818) [@DiligentGraphics] |
| - Backends: GLFW: Previously installed user callbacks are now restored on shutdown. (#2836) [@malte-v] |
| - CI: Set up a bunch of continuous-integration tests using GitHub Actions. We now compile many of the example |
| applications on Windows, Linux, MacOS, iOS, Emscripten. Removed Travis integration. (#2865) [@rokups] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.73 (Released 2019-09-24) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.73 |
| |
| Other Changes: |
| |
| - Nav, Scrolling: Added support for Home/End key. (#787) |
| - ColorEdit: Disable Hue edit when Saturation==0 instead of letting Hue values jump around. |
| - ColorEdit, ColorPicker: In HSV display of a RGB stored value, attempt to locally preserve Hue |
| when Saturation==0, which reduces accidentally lossy interactions. (#2722, #2770) [@rokups] |
| - ColorPicker: Made rendering aware of global style alpha of the picker can be faded out. (#2711) |
| Note that some elements won't accurately fade down with the same intensity, and the color wheel |
| when enabled will have small overlap glitches with (style.Alpha < 1.0). |
| - Tabs: Fixed single-tab not shrinking their width down. |
| - Tabs: Fixed clicking on a tab larger than tab-bar width creating a bouncing feedback loop. |
| - Tabs: Feed desired width (sum of unclipped tabs width) into layout system to allow for auto-resize. (#2768) |
| (before 1.71 tab bars fed the sum of current width which created feedback loops in certain situations). |
| - Tabs: Improved shrinking for large number of tabs to avoid leaving extraneous space on the right side. |
| Individuals tabs are given integer-rounded width and remainder is spread between tabs left-to-right. |
| - Columns, Separator: Fixed a bug where non-visible separators within columns would alter the next row position |
| differently than visible ones. |
| - SliderScalar: Improved assert when using U32 or U64 types with a large v_max value. (#2765) [@loicmouton] |
| - DragInt, DragFloat, DragScalar: Using (v_min > v_max) allows locking any edits to the value. |
| - DragScalar: Fixed dragging of unsigned values on ARM cpu (float to uint cast is undefined). (#2780) [@dBagrat] |
| - TreeNode: Added ImGuiTreeNodeFlags_SpanAvailWidth flag. (#2451, #2438, #1897) [@Melix19, @PathogenDavid] |
| This extends the hit-box to the right-most edge, even if the node is not framed. |
| (Note: this is not the default in order to allow adding other items on the same line. In the future we will |
| aim toward refactoring the hit-system to be front-to-back, allowing more natural overlapping of items, |
| and then we will be able to make this the default.) |
| - TreeNode: Added ImGuiTreeNodeFlags_SpanFullWidth flag. This extends the hit-box to both the left-most and |
| right-most edge of the working area, bypassing indentation. |
| - CollapsingHeader: Added support for ImGuiTreeNodeFlags_Bullet and ImGuiTreeNodeFlags_Leaf on framed nodes, |
| mostly for consistency. (#2159, #2160) [@goran-w] |
| - Selectable: Added ImGuiSelectableFlags_AllowItemOverlap flag in public api (was previously internal only). |
| - Style: Allow style.WindowMenuButtonPosition to be set to ImGuiDir_None to hide the collapse button. (#2634, #2639) |
| - Font: Better ellipsis ("...") drawing implementation. Instead of drawing three pixel-ey dots (which was glaringly |
| unfitting with many types of fonts) we first attempt to find a standard ellipsis glyphs within the loaded set. |
| Otherwise we render ellipsis using '.' from the font from where we trim excessive spacing to make it as narrow |
| as possible. (#2775) [@rokups] |
| - ImDrawList: Clarified the name of many parameters so reading the code is a little easier. (#2740) |
| - ImDrawListSplitter: Fixed merging channels if the last submitted draw command used a different texture. (#2506) |
| - Using offsetof() when available in C++11. Avoids Clang sanitizer complaining about old-style macros. (#94) |
| - ImVector: Added find(), find_erase(), find_erase_unsorted() helpers. |
| - Added a mechanism to compact/free the larger allocations of unused windows (buffers are compacted when |
| a window is unused for 60 seconds, as per io.ConfigWindowsMemoryCompactTimer = 60.0f). Note that memory |
| usage has never been reported as a problem, so this is merely a touch of overzealous luxury. (#2636) |
| - Documentation: Various tweaks and improvements to the README page. [@ker0chan] |
| - Backends: OpenGL3: Tweaked initialization code allow application calling ImGui_ImplOpenGL3_CreateFontsTexture() |
| before ImGui_ImplOpenGL3_NewFrame(), which sometimes can be convenient. |
| - Backends: OpenGL3: Attempt to automatically detect default GL loader by using __has_include. (#2798) [@o-micron] |
| - Backends: DX11: Fixed GSGetShader() call not passing an initialized instance count, which would |
| generally make the DX11 debug layer complain (bug added in 1.72). |
| - Backends: Vulkan: Added support for specifying multisample count. Set 'ImGui_ImplVulkan_InitInfo::MSAASamples' to |
| one of the VkSampleCountFlagBits values to use, default is non-multisampled as before. (#2705, #2706) [@vilya] |
| - Examples: OSX: Fix example_apple_opengl2/main.mm not forwarding mouse clicks and drags correctly. (#1961, #2710) |
| [@intonarumori, @ElectricMagic] |
| - Misc: Updated stb_rect_pack.h from 0.99 to 1.00 (fixes by @rygorous: off-by-1 bug in best-fit heuristic, |
| fix handling of rectangles too large to fit inside texture). (#2762) [@tido64] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.72b (Released 2019-07-31) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.72b |
| |
| Other Changes: |
| |
| - Nav, Scrolling: Fixed programmatic scroll leading to a slightly incorrect scroll offset when |
| the window has decorations or a menu-bar (broken in 1.71). This was mostly noticeable when |
| a keyboard/gamepad movement led to scrolling the view, or using e.g. SetScrollHereY() function. |
| - Nav: Made hovering non-MenuItem Selectable not re-assign the source item for keyboard navigation. |
| - Nav: Fixed an issue with NavFlattened window flag (beta) where widgets not entirely fitting |
| in child window (often selectables because of their protruding sides) would be not considered |
| as entry points to to navigate toward the child window. (#787) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.72 (Released 2019-07-27) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.72 |
| |
| Breaking Changes: |
| |
| - Removed redirecting functions/enums names that were marked obsolete in 1.51 (June 2017): |
| - ImGuiCol_Column*, ImGuiSetCond_* enums. |
| - IsItemHoveredRect(), IsPosHoveringAnyWindow(), IsMouseHoveringAnyWindow(), IsMouseHoveringWindow() functions. |
| - IMGUI_ONCE_UPON_A_FRAME macro. |
| If you were still using the old names, read "API Breaking Changes" section of imgui.cpp to find out |
| the new names or equivalent features. |
| - Renamed ImFontAtlas::CustomRect to ImFontAtlasCustomRect. Kept redirection typedef (will obsolete). |
| - Removed TreeAdvanceToLabelPos() which is rarely used and only does SetCursorPosX(GetCursorPosX() + GetTreeNodeToLabelSpacing()). |
| Kept redirection function (will obsolete). (#581, #324) |
| |
| Other Changes: |
| |
| - Scrolling: Made mouse-wheel scrolling lock the underlying window until the mouse is moved again or |
| until a short delay expires (~2 seconds). This allow uninterrupted scroll even if child windows are |
| passing under the mouse cursor. (#2604) |
| - Scrolling: Made it possible for mouse wheel and navigation-triggered scrolling to override a call to |
| SetScrollX()/SetScrollY(), making it possible to use a simpler stateless pattern for auto-scrolling: |
| // (Submit items..) |
| if (ImGui::GetScrollY() >= ImGui::GetScrollMaxY()) // If scrolling at the already at the bottom.. |
| ImGui::SetScrollHereY(1.0f); // ..make last item fully visible |
| - Scrolling: Added SetScrollHereX(), SetScrollFromPosX() for completeness. (#1580) [@kevreco] |
| - Scrolling: Mouse wheel scrolling while hovering a child window is automatically forwarded to parent window |
| if ScrollMax is zero on the scrolling axis. |
| Also still the case if ImGuiWindowFlags_NoScrollWithMouse is set (not new), but previously the forwarding |
| would be disabled if ImGuiWindowFlags_NoScrollbar was set on the child window, which is not the case |
| any more. Forwarding can still be disabled by setting ImGuiWindowFlags_NoInputs. (amend #1502, #1380). |
| - Window: Fixed InnerClipRect right-most coordinates using wrong padding setting (introduced in 1.71). |
| - Window: Fixed old SetWindowFontScale() api value from not being inherited by child window. Added |
| comments about the right way to scale your UI (load a font at the right side, rebuild atlas, scale style). |
| - Scrollbar: Avoid overlapping the opposite side when window (often a child window) is forcibly too small. |
| - Combo: Hide arrow when there's not enough space even for the square button. |
| - InputText: Testing for newly added ImGuiKey_KeyPadEnter key. (#2677, #2005) [@amc522] |
| - Tabs: Fixed unfocused tab bar separator color (was using ImGuiCol_Tab, should use ImGuiCol_TabUnfocusedActive). |
| - Columns: Fixed a regression from 1.71 where the right-side of the contents rectangle within each column |
| would wrongly use a WindowPadding.x instead of ItemSpacing.x like it always did. (#125, #2666) |
| - Columns: Made the right-most edge reaches up to the clipping rectangle (removing half of WindowPadding.x |
| worth of asymmetrical/extraneous padding, note that there's another half that conservatively has to offset |
| the right-most column, otherwise it's clipping width won't match the other columns). (#125, #2666) |
| - Columns: Improved honoring alignment with various values of ItemSpacing.x and WindowPadding.x. (#125, #2666) |
| - Columns: Made GetColumnOffset() and GetColumnWidth() behave when there's no column set, consistently with |
| other column functions. (#2683) |
| - InputTextMultiline: Fixed vertical scrolling tracking glitch. |
| - Word-wrapping: Fixed overzealous word-wrapping when glyph edge lands exactly on the limit. Because |
| of this, auto-fitting exactly unwrapped text would make it wrap. (fixes initial 1.15 commit, 78645a7d). |
| - Style: Attenuated default opacity of ImGuiCol_Separator in Classic and Light styles. |
| - Style: Added style.ColorButtonPosition (left/right, defaults to ImGuiDir_Right) to move the color button |
| of ColorEdit3/ColorEdit4 functions to either side of the inputs. |
| - IO: Added ImGuiKey_KeyPadEnter and support in various backends (previously backends would need to |
| specifically redirect key-pad keys to their regular counterpart). This is a temporary attenuating measure |
| until we actually refactor and add whole sets of keys into the ImGuiKey enum. (#2677, #2005) [@amc522] |
| - Misc: Made Button(), ColorButton() not trigger an "edited" event leading to IsItemDeactivatedAfterEdit() |
| returning true. This also effectively make ColorEdit4() not incorrect trigger IsItemDeactivatedAfterEdit() |
| when clicking the color button to open the picker popup. (#1875) |
| - Misc: Added IMGUI_DISABLE_METRICS_WINDOW imconfig.h setting to explicitly compile out ShowMetricsWindow(). |
| - Debug Tools: Added "Metrics->Tools->Item Picker" tool which allow clicking on a widget to break in the |
| debugger within the item code. The tool calls IM_DEBUG_BREAK() which can be redefined in imconfig.h. |
| - ImDrawList: Fixed CloneOutput() helper crashing. (#1860) [@gviot] |
| - ImDrawList::ChannelsSplit(), ImDrawListSplitter: Fixed an issue with merging draw commands between |
| channel 0 and 1. (#2624) |
| - ImDrawListSplitter: Fixed memory leak when using low-level split api (was not affecting ImDrawList api, |
| also this type was added in 1.71 and not advertised as a public-facing feature). |
| - Fonts: binary_to_compressed_c.cpp: Display an error message if failing to open/read the input font file. |
| - Demo: Log, Console: Using a simpler stateless pattern for auto-scrolling. |
| - Demo: Widgets: Showing how to use the format parameter of Slider/Drag functions to display the name |
| of an enum value instead of the underlying integer value. |
| - Demo: Renamed the "Help" menu to "Tools" (more accurate). |
| - Backends: DX10/DX11: Backup, clear and restore Geometry Shader is any is bound when calling renderer. |
| - Backends: DX11: Clear Hull Shader, Domain Shader, Compute Shader before rendering. Not backing/restoring them. |
| - Backends: OSX: Disabled default native Mac clipboard copy/paste implementation in core library (added in 1.71), |
| because it needs application to be linked with '-framework ApplicationServices'. It can be explicitly |
| enabled back by using '#define IMGUI_ENABLE_OSX_DEFAULT_CLIPBOARD_FUNCTIONS' in imconfig.h. Re-added |
| equivalent using NSPasteboard api in the imgui_impl_osx.mm experimental backend. (#2546) |
| - Backends: SDL2: Added ImGui_ImplSDL2_InitForD3D() function to make D3D support more visible. |
| (#2482, #2632) [@josiahmanson] |
| - Examples: Added SDL2+DirectX11 example application. (#2632, #2612, #2482) [@vincenthamm] |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.71 (Released 2019-06-12) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.71 |
| |
| Breaking Changes: |
| |
| - IO: changed AddInputCharacter(unsigned short c) signature to AddInputCharacter(unsigned int c). |
| - Renamed SetNextTreeNodeOpen() to SetNextItemOpen(). Kept inline redirection function (will obsolete). |
| - Window: rendering of child windows outer decorations (e.g. bg color, border, scrollbars) is now |
| performed as part of their parent window, avoiding the creation of an extraneous draw commands. |
| If you have overlapping child windows with decorations, and relied on their relative z-order to be |
| mapped to submission their order, this will affect your rendering. The optimization is disabled |
| if the parent window has no visual output because it appears to be the most common situation leading |
| to the creation of overlapping child windows. Please reach out if you are affected by this change! |
| |
| Other Changes: |
| |
| - Window: clarified behavior of SetNextWindowContentSize(). Content size is defined as the size available |
| after removal of WindowPadding on each sides. So SetNextWindowContentSize(ImVec2(100,100)) + auto-resize |
| will always allow submitting a 100x100 item without creating a scrollbar, regarding of WindowPadding. |
| The exact meaning of ContentSize for decorated windows was previously ill-defined. |
| - Window: Fixed auto-resize with AlwaysVerticalScrollbar or AlwaysHorizontalScrollbar flags. |
| - Window: Fixed one case where auto-resize by double-clicking the resize grip would make either scrollbar |
| appear for a single frame after the resize. |
| - Separator: Revert 1.70 "Declare its thickness (1.0f) to the layout" change. It's not incorrect |
| but it breaks existing some layout patterns. Will return back to it when we expose Separator flags. |
| - Fixed InputScalar, InputScalarN, SliderScalarN, DragScalarN with non-visible label from inserting |
| style.ItemInnerSpacing.x worth of trailing spacing. |
| - Fixed InputFloatX, SliderFloatX, DragFloatX functions erroneously reporting IsItemEdited() multiple |
| times when the text input doesn't match the formatted output value (e.g. input "1" shows "1.000"). |
| It wasn't much of a problem because we typically use the return value instead of IsItemEdited() here. |
| - Fixed uses of IsItemDeactivated(), IsItemDeactivatedAfterEdit() on multi-components widgets and |
| after EndGroup(). (#2550, #1875) |
| - Fixed crash when appending with BeginMainMenuBar() more than once and no other window are showing. (#2567) |
| - ColorEdit: Fixed the color picker popup only displaying inputs as HSV instead of showing multiple |
| options. (#2587, broken in 1.69 by #2384). |
| - CollapsingHeader: Better clipping when a close button is enabled and it overlaps the label. (#600) |
| - Scrollbar: Minor bounding box adjustment to cope with various border size. |
| - Scrollbar, Style: Changed default style.ScrollbarSize from 16 to 14. |
| - Combo: Fixed rounding not applying with the ImGuiComboFlags_NoArrowButton flag. (#2607) [@DucaRii] |
| - Nav: Fixed gamepad/keyboard moving of window affecting contents size incorrectly, sometimes leading |
| to scrollbars appearing during the movement. |
| - Nav: Fixed rare crash when e.g. releasing Alt-key while focusing a window with a menu at the same |
| frame as clearing the focus. This was in most noticeable in backends such as Glfw and SDL which |
| emits key release events when focusing another viewport, leading to Alt+clicking on void on another |
| viewport triggering the issue. (#2609) |
| - TreeNode, CollapsingHeader: Fixed highlight frame not covering horizontal area fully when using |
| horizontal scrolling. (#2211, #2579) |
| - Tabs: Fixed BeginTabBar() within a window with horizontal scrolling from creating a feedback |
| loop with the horizontal contents size. |
| - Columns: Fixed Columns() within a window with horizontal scrolling from not covering the full |
| horizontal area (previously only worked with an explicit contents size). (#125) |
| - Columns: Fixed Separator from creating an extraneous draw command. (#125) |
| - Columns: Fixed Selectable with SpanAllColumns flag from creating an extraneous draw command. (#125) |
| - Style: Added style.WindowMenuButtonPosition (left/right, defaults to ImGuiDir_Left) to move the |
| collapsing/docking button to the other side of the title bar. |
| - Style: Made window close button cross slightly smaller. |
| - Log/Capture: Fixed BeginTabItem() label not being included in a text log/capture. |
| - ImDrawList: Added ImDrawCmd::VtxOffset value to support large meshes (64k+ vertices) using 16-bit indices. |
| The renderer backend needs to set 'io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset' to enable |
| this, and honor the ImDrawCmd::VtxOffset field. Otherwise the value will always be zero. (#2591) |
| This has the advantage of preserving smaller index buffers and allowing to execute on hardware that do not |
| support 32-bit indices. Most examples backends have been modified to support the VtxOffset field. |
| - ImDrawList: Added ImDrawCmd::IdxOffset value, equivalent to summing element count for each draw command. |
| This is provided for convenience and consistency with VtxOffset. (#2591) |
| - ImDrawCallback: Allow to override the signature of ImDrawCallback by #define-ing it. This is meant to |
| facilitate custom rendering backends passing local render-specific data to the draw callback. |
| - ImFontAtlas: FreeType: Added RasterizerFlags::Monochrome flag to disable font anti-aliasing. Combine |
| with RasterizerFlags::MonoHinting for best results. (#2545) [@HolyBlackCat] |
| - ImFontGlyphRangesBuilder: Fixed unnecessarily over-sized buffer, which incidentally was also not |
| fully cleared. Fixed edge-case overflow when adding character 0xFFFF. (#2568). [@NIKE3500] |
| - Demo: Added full "Dear ImGui" prefix to the title of "Dear ImGui Demo" and "Dear ImGui Metrics" windows. |
| - Backends: Add native Mac clipboard copy/paste default implementation in core library to match what we are |
| dealing with Win32, and to facilitate integration in custom engines. (#2546) [@andrewwillmott] |
| - Backends: OSX: imgui_impl_osx: Added mouse cursor support. (#2585, #1873) [@actboy168] |
| - Examples/Backends: DirectX9/10/11/12, Metal, Vulkan, OpenGL3 (Desktop GL only): Added support for large meshes |
| (64k+ vertices) with 16-bit indices, enable 'ImGuiBackendFlags_RendererHasVtxOffset' in those backends. (#2591) |
| - Examples/Backends: Don't filter characters under 0x10000 before calling io.AddInputCharacter(), |
| the filtering is done in io.AddInputCharacter() itself. This is in prevision for fuller Unicode |
| support. (#2538, #2541) |
| |
| |
| ----------------------------------------------------------------------- |
| VERSION 1.70 (Released 2019-05-06) |
| ----------------------------------------------------------------------- |
| |
| Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.70 |
| |
| Breaking Changes: |
|