From 702cc9993aca927d70c963d7c5826c2cd5ff0c0e Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 14 Oct 2025 16:07:07 +0200 Subject: [PATCH 1/4] Relaxed internal assert in MarkItemEdited() some more. (#8997) Amend e7a734f78d, 5a2b1e8482 --- docs/CHANGELOG.txt | 1 + imgui.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 73c029ae0..4d4193633 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -93,6 +93,7 @@ Other Changes: using a shared ImFontAtlas, leading standard backends to not properly free texture resources. (#8975) [@icrashstuff] - Demo: fixed layout issue in "Layout & Scrolling -> Scrolling" section. +- Misc: Relaxed internal assert in MarkItemEdited() to allow for more use cases. (#8997) - Misc: Debuggers: added type formatters for the LLDB debuggers (e.g. Xcode, Android Studio & more) to provide nicer display for ImVec2, ImVec4, ImVector etc. See misc/debuggers/ for details. (#8950) [@mentlerd] diff --git a/imgui.cpp b/imgui.cpp index 2cf1cb273..977ce3b11 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4639,7 +4639,8 @@ void ImGui::MarkItemEdited(ImGuiID id) // We accept a MarkItemEdited() on drag and drop targets (see https://github.com/ocornut/imgui/issues/1875#issuecomment-978243343) // We accept 'ActiveIdPreviousFrame == id' for InputText() returning an edit after it has been taken ActiveId away (#4714) - IM_ASSERT(g.DragDropActive || g.ActiveId == id || g.ActiveId == 0 || g.ActiveIdPreviousFrame == id || (g.CurrentMultiSelect != NULL && g.BoxSelectState.IsActive)); + // FIXME: This assert is getting a bit meaningless over time. It helped detect some unusual use cases but eventually it is becoming an unnecessary restriction. + IM_ASSERT(g.DragDropActive || g.ActiveId == id || g.ActiveId == 0 || g.ActiveIdPreviousFrame == id || g.NavJustMovedToId || (g.CurrentMultiSelect != NULL && g.BoxSelectState.IsActive)); //IM_ASSERT(g.CurrentWindow->DC.LastItemId == id); g.LastItemData.StatusFlags |= ImGuiItemStatusFlags_Edited; From c8db91b7b43a01ebb0c1440663abb02a89c371fb Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 14 Oct 2025 18:52:27 +0200 Subject: [PATCH 2/4] (Breaking) TreeNode, Selectable: commented out legacy ImGuiTreeNodeFlags_AllowItemOverlap, ImGuiSelectableFlags_AllowItemOverlap names obsoleted in 1.89.7. Amend 51f564e --- docs/CHANGELOG.txt | 3 +++ imgui.cpp | 3 +++ imgui.h | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 4d4193633..4b710a55e 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -42,6 +42,9 @@ HOW TO UPDATE? Breaking Changes: - Backends: + - TreeNode, Selectable: commented out legacy names obsoleted in 1.89.7 (July 2023): + ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap + ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlap - Vulkan: moved some fields in ImGui_ImplVulkan_InitInfo: init_info.RenderPass --> init_info.PipelineInfoMain.RenderPass init_info.Subpass --> init_info.PipelineInfoMain.Subpass diff --git a/imgui.cpp b/imgui.cpp index 977ce3b11..c2c36a9e0 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -392,6 +392,9 @@ IMPLEMENTING SUPPORT for ImGuiBackendFlags_RendererHasTextures: When you are not sure about an old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files. You can read releases logs https://github.com/ocornut/imgui/releases for more details. + - 2025/10/14 (1.92.4) - TreeNode, Selectable: commented out legacy names which were obsoleted in 1.89.7 (July 2023): + - ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap + - ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlapB - 2025/08/08 (1.92.2) - Backends: SDL_GPU3: Changed ImTextureID type from SDL_GPUTextureSamplerBinding* to SDL_GPUTexture*, which is more natural and easier for user to manage. If you need to change the current sampler, you can access the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988) - 2025/07/31 (1.92.2) - Tabs: Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink. Kept inline redirection enum (will obsolete). - 2025/06/25 (1.92.0) - Layout: commented out legacy ErrorCheckUsingSetCursorPosToExtendParentBoundaries() fallback obsoleted in 1.89 (August 2022) which allowed a SetCursorPos()/SetCursorScreenPos() call WITHOUT AN ITEM diff --git a/imgui.h b/imgui.h index b798903be..7b0c28831 100644 --- a/imgui.h +++ b/imgui.h @@ -29,7 +29,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.92.4 WIP" -#define IMGUI_VERSION_NUM 19236 +#define IMGUI_VERSION_NUM 19237 #define IMGUI_HAS_TABLE // Added BeginTable() - from IMGUI_VERSION_NUM >= 18000 #define IMGUI_HAS_TEXTURES // Added ImGuiBackendFlags_RendererHasTextures - from IMGUI_VERSION_NUM >= 19198 @@ -1311,7 +1311,7 @@ enum ImGuiTreeNodeFlags_ #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS ImGuiTreeNodeFlags_NavLeftJumpsBackHere = ImGuiTreeNodeFlags_NavLeftJumpsToParent, // Renamed in 1.92.0 ImGuiTreeNodeFlags_SpanTextWidth = ImGuiTreeNodeFlags_SpanLabelWidth, // Renamed in 1.90.7 - ImGuiTreeNodeFlags_AllowItemOverlap = ImGuiTreeNodeFlags_AllowOverlap, // Renamed in 1.89.7 + //ImGuiTreeNodeFlags_AllowItemOverlap = ImGuiTreeNodeFlags_AllowOverlap, // Renamed in 1.89.7 #endif }; @@ -1354,7 +1354,7 @@ enum ImGuiSelectableFlags_ #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS ImGuiSelectableFlags_DontClosePopups = ImGuiSelectableFlags_NoAutoClosePopups, // Renamed in 1.91.0 - ImGuiSelectableFlags_AllowItemOverlap = ImGuiSelectableFlags_AllowOverlap, // Renamed in 1.89.7 + //ImGuiSelectableFlags_AllowItemOverlap = ImGuiSelectableFlags_AllowOverlap, // Renamed in 1.89.7 #endif }; From 25e5baf5f0da5aa0820b4fdc5b2633a7d25965aa Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 14 Oct 2025 19:00:27 +0200 Subject: [PATCH 3/4] (Breaking) Clipper: commented out legacy IncludeRangeByIndices name obsoleted in 1.89.9. (#6424, #3841) --- docs/CHANGELOG.txt | 8 +++++--- imgui.cpp | 7 ++++--- imgui.h | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 4b710a55e..9c8a6077c 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -42,9 +42,11 @@ HOW TO UPDATE? Breaking Changes: - Backends: - - TreeNode, Selectable: commented out legacy names obsoleted in 1.89.7 (July 2023): - ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap - ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlap + - TreeNode, Selectable, Clipper: commented out legacy names obsoleted in + 1.89.7 (July 2023) and 1.89.9 (Sept 2023): + ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap + ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlap + ImGuiListClipper::IncludeRangeByIndices() --> ImGuiListClipper::IncludeItemsByIndex() - Vulkan: moved some fields in ImGui_ImplVulkan_InitInfo: init_info.RenderPass --> init_info.PipelineInfoMain.RenderPass init_info.Subpass --> init_info.PipelineInfoMain.Subpass diff --git a/imgui.cpp b/imgui.cpp index c2c36a9e0..216c56ba9 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -392,9 +392,10 @@ IMPLEMENTING SUPPORT for ImGuiBackendFlags_RendererHasTextures: When you are not sure about an old symbol or function name, try using the Search/Find function of your IDE to look for comments or references in all imgui files. You can read releases logs https://github.com/ocornut/imgui/releases for more details. - - 2025/10/14 (1.92.4) - TreeNode, Selectable: commented out legacy names which were obsoleted in 1.89.7 (July 2023): - - ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap - - ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlapB + - 2025/10/14 (1.92.4) - TreeNode, Selectable, Clipper: commented out legacy names which were obsoleted in 1.89.7 (July 2023) and 1.89.9 (Sept 2023); + - ImGuiTreeNodeFlags_AllowItemOverlap --> ImGuiTreeNodeFlags_AllowOverlap + - ImGuiSelectableFlags_AllowItemOverlap --> ImGuiSelectableFlags_AllowOverlap + - ImGuiListClipper::IncludeRangeByIndices() --> ImGuiListClipper::IncludeItemsByIndex() - 2025/08/08 (1.92.2) - Backends: SDL_GPU3: Changed ImTextureID type from SDL_GPUTextureSamplerBinding* to SDL_GPUTexture*, which is more natural and easier for user to manage. If you need to change the current sampler, you can access the ImGui_ImplSDLGPU3_RenderState struct. (#8866, #8163, #7998, #7988) - 2025/07/31 (1.92.2) - Tabs: Renamed ImGuiTabBarFlags_FittingPolicyResizeDown to ImGuiTabBarFlags_FittingPolicyShrink. Kept inline redirection enum (will obsolete). - 2025/06/25 (1.92.0) - Layout: commented out legacy ErrorCheckUsingSetCursorPosToExtendParentBoundaries() fallback obsoleted in 1.89 (August 2022) which allowed a SetCursorPos()/SetCursorScreenPos() call WITHOUT AN ITEM diff --git a/imgui.h b/imgui.h index 7b0c28831..6aa73009d 100644 --- a/imgui.h +++ b/imgui.h @@ -2855,7 +2855,7 @@ struct ImGuiListClipper IMGUI_API void SeekCursorForItem(int item_index); #ifndef IMGUI_DISABLE_OBSOLETE_FUNCTIONS - inline void IncludeRangeByIndices(int item_begin, int item_end) { IncludeItemsByIndex(item_begin, item_end); } // [renamed in 1.89.9] + //inline void IncludeRangeByIndices(int item_begin, int item_end) { IncludeItemsByIndex(item_begin, item_end); } // [renamed in 1.89.9] //inline void ForceDisplayRangeByIndices(int item_begin, int item_end) { IncludeItemsByIndex(item_begin, item_end); } // [renamed in 1.89.6] //inline ImGuiListClipper(int items_count, float items_height = -1.0f) { memset(this, 0, sizeof(*this)); ItemsCount = -1; Begin(items_count, items_height); } // [removed in 1.79] #endif From 9a5d5c45f54b1301ea471622eddede70384243af Mon Sep 17 00:00:00 2001 From: ocornut Date: Tue, 14 Oct 2025 19:16:43 +0200 Subject: [PATCH 4/4] Version 1.92.4 --- docs/CHANGELOG.txt | 15 +++++++++------ imgui.cpp | 2 +- imgui.h | 6 +++--- imgui_demo.cpp | 2 +- imgui_draw.cpp | 2 +- imgui_internal.h | 2 +- imgui_tables.cpp | 2 +- imgui_widgets.cpp | 2 +- 8 files changed, 18 insertions(+), 15 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 9c8a6077c..b703e065a 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -36,9 +36,11 @@ HOW TO UPDATE? - Please report any issue! ----------------------------------------------------------------------- - VERSION 1.92.4 WIP (In Progress) + VERSION 1.92.4 (Released 2025-10-14) ----------------------------------------------------------------------- +Decorated log and release notes: https://github.com/ocornut/imgui/releases/tag/v1.92.4 + Breaking Changes: - Backends: @@ -85,13 +87,13 @@ Other Changes: previously it would only temporary wreck cursor position, and since 1.92.3 it would go in an infinite loop. (#8994, #3237) - Textures: - - Fixed a crash if texture status is set to _WantDestroy by a backend after - it had already been destroyed. This would typically happen when calling backend's + - Fixed a crash if texture status is set to ImTextureStatus_WantDestroy by a backend + after it had already been destroyed. This would typically happen when calling ImGui_ImplXXXX_InvalidateDeviceObjects() helpers twice in a row. (#8977, #8811) - Allowed backend to destroy texture while inside the NewFrame/EndFrame scope. Basically if a backend decide to destroy a texture that we didn't request to destroy (for e.g. freeing resources) the texture is immediately set to - a _WantCreate status again. (#8811) + a ImTextureStatus_WantCreate status again. (#8811) - Fixed an issue preventing multi-contexts sharing a ImFontAtlas from being possible to destroy in any order. - Fixed not updating ImTextureData's RefCount when destroying a context @@ -130,8 +132,9 @@ Other Changes: - Vulkan: added a way to specify custom shaders by filling init fields CustomShaderVertCreateInfo and CustomShaderFragCreateInfo. (#8585, #8271) [@johan0A] - DX9,DX10,DX11,DX12,Metal,Vulkan,WGPU,SDLRenderer2,SDLRenderer3: - ensure that a texture in _WantDestroy state always turn to _Destroyed even - if your underlying graphics data was already destroyed. (#8977) + ensure that a texture in ImTextureStatus_WantDestroy state always turn to + ImTextureStatus_Destroyed even if your underlying graphics data was already + destroyed. (#8977) - Examples: - SDL2+DirectX11: Try WARP software driver if hardware driver is not available. (#5924, #5562) diff --git a/imgui.cpp b/imgui.cpp index 216c56ba9..76b4a73f4 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (main code and documentation) // Help: diff --git a/imgui.h b/imgui.h index 6aa73009d..0a216b76c 100644 --- a/imgui.h +++ b/imgui.h @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (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.4 WIP" -#define IMGUI_VERSION_NUM 19237 +#define IMGUI_VERSION "1.92.4" +#define IMGUI_VERSION_NUM 19240 #define IMGUI_HAS_TABLE // Added BeginTable() - from IMGUI_VERSION_NUM >= 18000 #define IMGUI_HAS_TEXTURES // Added ImGuiBackendFlags_RendererHasTextures - from IMGUI_VERSION_NUM >= 19198 diff --git a/imgui_demo.cpp b/imgui_demo.cpp index dec1bad40..e473b2520 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (demo code) // Help: diff --git a/imgui_draw.cpp b/imgui_draw.cpp index a2c616012..9d0f024f5 100644 --- a/imgui_draw.cpp +++ b/imgui_draw.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (drawing and font code) /* diff --git a/imgui_internal.h b/imgui_internal.h index c9c1f1333..9c920eda1 100644 --- a/imgui_internal.h +++ b/imgui_internal.h @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (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 af0e8c6cf..b4d4f891a 100644 --- a/imgui_tables.cpp +++ b/imgui_tables.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (tables and columns code) /* diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp index a3a4ae1cf..9ebafa85b 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -1,4 +1,4 @@ -// dear imgui, v1.92.4 WIP +// dear imgui, v1.92.4 // (widgets code) /*