From 2b24f5fa71d124de108da54d9da49ea3049dc91e Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 11 Aug 2025 16:27:27 +0200 Subject: [PATCH] Version 1.92.2 --- docs/CHANGELOG.txt | 35 ++++++++++++++++++++--------------- docs/README.md | 2 +- imgui.cpp | 2 +- imgui.h | 26 +++++++++++++------------- imgui_demo.cpp | 2 +- imgui_draw.cpp | 2 +- imgui_internal.h | 2 +- imgui_tables.cpp | 2 +- imgui_widgets.cpp | 2 +- 9 files changed, 40 insertions(+), 35 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index cd78ff878..50b9193b8 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -36,9 +36,11 @@ HOW TO UPDATE? - Please report any issue! ----------------------------------------------------------------------- - VERSION 1.92.2 WIP (In Progress) + VERSION 1.92.2 (Released 2025-08-11) ----------------------------------------------------------------------- +Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.92.2 + Breaking Changes: - Tabs: Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink. @@ -49,35 +51,36 @@ Breaking Changes: Other Changes: -- Fixed an inconsistency between IsItemHovered() and internal hovering check, +- Fixed an old inconsistency between IsItemHovered() and internal hovering check, where IsItemHovered() would return true to mouse was first clicked on the background of a non-moveable window then moved over the item or button. Note that while it is consistent with other logic, there is a possibility - that some third-party code may accidentally relied on this. + that some third-party code may accidentally relied on this. One can always use + ImGuiHoveredFlags_AllowWhenBlockedByActiveItem to bypass the active id check. (#8877) [@achabense, @ocornut] - Fonts: fixed an issue when a font using MergeMode has a reference size specified but the target font doesn't. Usually either all fonts should have a reference size (only required when specifying e.g. GlyphOffset), - or none should have a reference size. + or none should have a reference size. - Fonts: fixed a crash when changing texture format when using a legacy backend. Most commonly would happen when calling GetTexDataAsRGBA32() - then immediately GetTexDataAsAlpha8(). (#8824) + then immediately calling GetTexDataAsAlpha8(). (#8824) - Windows: fixed an issue where resizable child windows would emit border logic when hidden/non-visible (e.g. when in a docked window that is not selected), impacting code not checking for BeginChild() return value. (#8815) - Textures: Fixed support for `#define ImTextureID_Invalid` to non-zero value: ImFontAtlas() was incorrectly cleared with zeroes. (#8860, #8745) [@cfillion] - Tables: fixed TableGetRowIndex() which never correctly worked when using - a clipper (it exists for consistency but is almost never used, as it is + a clipper (it exists for consistency but is almost never used, as it is often more convenient to use index in caller-code, whereas TableGetRowIndex() - includes header rows). + includes header rows). - Tables: fixed imgui_internal.h's TableGetHoveredRow() the same way. (#7350, #6588, #6250) - Tabs: added new fitting policy ImGuiTabBarFlags_FittingPolicyMixed and made it the default. This policy shrink tab width down to a given amount, and then beyond that it enable scrolling buttons. (#3421, #8800) - Tabs: added style.TabMinWidthShrink, ImGuiStyleVar_TabMinWidthShrink to control the width to shrink to in ImGuiTabBarFlags_FittingPolicyMixed mode. - (#3421, #8800). + (#3421, #8800). - Tabs: when scrolling is enabled, track selected tabs when resizing down parent container. This does not prevent to horizontally scroll it out of view during normal operations. (#3421, #8800) @@ -90,24 +93,26 @@ Other Changes: - Nav, Tables: fixed navigation within scrolling tables when item boundaries goes beyond columns limits. The fix done in 1.89.6 didn't work correctly on scrolling windows. (#8816, #2221) -- Nav: fixed a bug where GamepadMenu button couldn't toggle between main and - menu layers while navigating a Modal window. (#8834) +- Nav: fixed a bug where ImGuiKey_NavGamepadMenu (==ImGuiKey_GamepadFaceLeft) + button couldn't toggle between main and menu layers while navigating a Modal + window. (#8834) - Error Handling: minor improvements to error handling for TableGetSortSpecs() and TableSetBgColor() calls. (#1651, #8499) - Misc: fixed building with IMGUI_DISABLE_DEBUG_TOOLS only. (#8796) - Misc: fixed building with IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION. (#8794) -- Misc: removed more redundant inline static linkage from imgui_internal.h to +- Misc: removed more redundant inline static linkage from imgui_internal.h to facilitate using in C++ modules. (#8813, #8682, #8358) [@stripe2933] - Misc: ImVector: skip memcpy in operator= if `Data` isn't initialized in order to play nice with -fsanitize=undefined. (#8874) [@i25e] - CI: Added SDL3 builds to MacOS and Windows. (#8819, #8778) [@scribam] - CI: Updated Windows CI to use a more recent SDL2. (#8819, #8778) [@scribam] - Examples: SDL3+Metal: added SDL3+Metal example. (#8827, #8825) [@shi-yan] -- Examples: SDL3+SDL_GPU: use SDL_WaitAndAcquireGPUSwapchainTexture() instead +- Examples: SDL3+SDL_GPU: use SDL_WaitAndAcquireGPUSwapchainTexture() instead of SDL_AcquireGPUSwapchainTexture(). (#8830) [@itsdanott] -- Backends: OpenGL3: add and call embedded loader shutdown in ImGui_ImplOpenGL3_Shutdown() +- Examples: SDL3+SDL_GPU: use SDL_GPU_PRESENTMODE_VSYNC present mode. +- Backends: OpenGL3: add and call embedded loader shutdown in ImGui_ImplOpenGL3_Shutdown() to facilitate multiple init/shutdown cycles in same process. (#8792) [@tim-rex] -- Backends: OpenGL2, OpenGL3: set GL_UNPACK_ALIGNMENT to 1 before updating +- Backends: OpenGL2, OpenGL3: set GL_UNPACK_ALIGNMENT to 1 before updating textures. (#8802) [@Daandelange] - Backends: SDL_GPU3: expose current SDL_GPUSampler* in the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988) @@ -247,7 +252,7 @@ Breaking changes: see list of glyphs available in multiple font sources. This can facilitate understanding which font input is providing which glyph. - Fonts: **IMPORTANT** on Thread Safety: - - A few functions such as font->CalcTextSizeA() were by sheer luck (== accidentally) + - A few functions such as font->CalcTextSizeA() were by sheer luck (== accidentally) thread-safe even thou we had never provided that guarantee before. They are definitively not thread-safe anymore as new glyphs may be loaded. diff --git a/docs/README.md b/docs/README.md index 6a873a4fd..90a66119d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -214,7 +214,7 @@ Omar: "I first discovered the IMGUI paradigm at [Q-Games](https://www.q-games.co Embeds [ProggyClean.ttf](https://www.proggyfonts.net) font by Tristan Grimmer (MIT license).
Embeds [stb_textedit.h, stb_truetype.h, stb_rect_pack.h](https://github.com/nothings/stb/) by Sean Barrett (public domain). -Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. Special thanks to Alex Evans, Patrick Doane, Marco Koegler to pulling nice strings at the right moment. Also thank you to everyone posting feedback, questions and patches on GitHub. +Inspiration, feedback, and testing for early versions: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. Special thanks to Alex Evans, Patrick Doane, Marco Koegler for kindly helping. Also thank you to everyone posting feedback, questions and patches on GitHub. License ------- diff --git a/imgui.cpp b/imgui.cpp index cef058b45..9ebe39c2e 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (main code and documentation) // Help: diff --git a/imgui.h b/imgui.h index 95a8001d5..37d65b8e1 100644 --- a/imgui.h +++ b/imgui.h @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (headers) // Help: @@ -28,8 +28,8 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') -#define IMGUI_VERSION "1.92.2 WIP" -#define IMGUI_VERSION_NUM 19215 +#define IMGUI_VERSION "1.92.2" +#define IMGUI_VERSION_NUM 19220 #define IMGUI_HAS_TABLE // Added BeginTable() - from IMGUI_VERSION_NUM >= 18000 #define IMGUI_HAS_TEXTURES // Added ImGuiBackendFlags_RendererHasTextures - from IMGUI_VERSION_NUM >= 19198 @@ -3970,24 +3970,24 @@ struct ImGuiPlatformImeData namespace ImGui { // OBSOLETED in 1.92.0 (from June 2025) - inline void PushFont(ImFont* font) { PushFont(font, font ? font->LegacySize : 0.0f); } + inline void PushFont(ImFont* font) { PushFont(font, font ? font->LegacySize : 0.0f); } IMGUI_API void SetWindowFontScale(float scale); // Set font scale factor for current window. Prefer using PushFont(NULL, style.FontSizeBase * factor) or use style.FontScaleMain to scale all windows. // OBSOLETED in 1.91.9 (from February 2025) IMGUI_API void Image(ImTextureRef tex_ref, const ImVec2& image_size, const ImVec2& uv0, const ImVec2& uv1, const ImVec4& tint_col, const ImVec4& border_col); // <-- 'border_col' was removed in favor of ImGuiCol_ImageBorder. If you use 'tint_col', use ImageWithBg() instead. // OBSOLETED in 1.91.0 (from July 2024) - inline void PushButtonRepeat(bool repeat) { PushItemFlag(ImGuiItemFlags_ButtonRepeat, repeat); } - inline void PopButtonRepeat() { PopItemFlag(); } - inline void PushTabStop(bool tab_stop) { PushItemFlag(ImGuiItemFlags_NoTabStop, !tab_stop); } - inline void PopTabStop() { PopItemFlag(); } + inline void PushButtonRepeat(bool repeat) { PushItemFlag(ImGuiItemFlags_ButtonRepeat, repeat); } + inline void PopButtonRepeat() { PopItemFlag(); } + inline void PushTabStop(bool tab_stop) { PushItemFlag(ImGuiItemFlags_NoTabStop, !tab_stop); } + inline void PopTabStop() { PopItemFlag(); } IMGUI_API ImVec2 GetContentRegionMax(); // Content boundaries max (e.g. window boundaries including scrolling, or current column boundaries). You should never need this. Always use GetCursorScreenPos() and GetContentRegionAvail()! IMGUI_API ImVec2 GetWindowContentRegionMin(); // Content boundaries min for the window (roughly (0,0)-Scroll), in window-local coordinates. You should never need this. Always use GetCursorScreenPos() and GetContentRegionAvail()! IMGUI_API ImVec2 GetWindowContentRegionMax(); // Content boundaries max for the window (roughly (0,0)+Size-Scroll), in window-local coordinates. You should never need this. Always use GetCursorScreenPos() and GetContentRegionAvail()! // OBSOLETED in 1.90.0 (from September 2023) - inline bool BeginChildFrame(ImGuiID id, const ImVec2& size, ImGuiWindowFlags window_flags = 0) { return BeginChild(id, size, ImGuiChildFlags_FrameStyle, window_flags); } - inline void EndChildFrame() { EndChild(); } - //static inline bool BeginChild(const char* str_id, const ImVec2& size_arg, bool borders, ImGuiWindowFlags window_flags){ return BeginChild(str_id, size_arg, borders ? ImGuiChildFlags_Borders : ImGuiChildFlags_None, window_flags); } // Unnecessary as true == ImGuiChildFlags_Borders - //static inline bool BeginChild(ImGuiID id, const ImVec2& size_arg, bool borders, ImGuiWindowFlags window_flags) { return BeginChild(id, size_arg, borders ? ImGuiChildFlags_Borders : ImGuiChildFlags_None, window_flags); } // Unnecessary as true == ImGuiChildFlags_Borders - inline void ShowStackToolWindow(bool* p_open = NULL) { ShowIDStackToolWindow(p_open); } + inline bool BeginChildFrame(ImGuiID id, const ImVec2& size, ImGuiWindowFlags window_flags = 0) { return BeginChild(id, size, ImGuiChildFlags_FrameStyle, window_flags); } + inline void EndChildFrame() { EndChild(); } + //inline bool BeginChild(const char* str_id, const ImVec2& size_arg, bool borders, ImGuiWindowFlags window_flags){ return BeginChild(str_id, size_arg, borders ? ImGuiChildFlags_Borders : ImGuiChildFlags_None, window_flags); } // Unnecessary as true == ImGuiChildFlags_Borders + //inline bool BeginChild(ImGuiID id, const ImVec2& size_arg, bool borders, ImGuiWindowFlags window_flags) { return BeginChild(id, size_arg, borders ? ImGuiChildFlags_Borders : ImGuiChildFlags_None, window_flags); } // Unnecessary as true == ImGuiChildFlags_Borders + inline void ShowStackToolWindow(bool* p_open = NULL) { ShowIDStackToolWindow(p_open); } IMGUI_API bool Combo(const char* label, int* current_item, bool (*old_callback)(void* user_data, int idx, const char** out_text), void* user_data, int items_count, int popup_max_height_in_items = -1); IMGUI_API bool ListBox(const char* label, int* current_item, bool (*old_callback)(void* user_data, int idx, const char** out_text), void* user_data, int items_count, int height_in_items = -1); // OBSOLETED in 1.89.7 (from June 2023) diff --git a/imgui_demo.cpp b/imgui_demo.cpp index 3fd05ba0e..2c82f57c7 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (demo code) // Help: diff --git a/imgui_draw.cpp b/imgui_draw.cpp index a0afce188..2dba0c1b9 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (drawing and font code) /* diff --git a/imgui_internal.h b/imgui_internal.h index e4354c375..a8bd72f78 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (internal structures/api) // You may use this file to debug, understand or extend Dear ImGui features but we don't provide any guarantee of forward compatibility. diff --git a/imgui_tables.cpp b/imgui_tables.cpp index 2816707cf..4f06f454b 100644 --- a/imgui_tables.cpp +++ b/imgui_tables.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (tables and columns code) /* diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp index 12ff71385..8bd0923bb 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.2 WIP +// dear imgui, v1.92.2 // (widgets code) /*