From 29525255f30d0693bb707be76855b897ec991c5f Mon Sep 17 00:00:00 2001 From: ocornut Date: Fri, 9 Jul 2021 19:15:47 +0200 Subject: [PATCH] Disabled items more consistently release active id if the active item got disabled. (#211) --- docs/CHANGELOG.txt | 1 + imgui_widgets.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index 6daab9184..a4e32d583 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -56,6 +56,7 @@ Other Changes: - Drag and Drop: drop target highlight doesn't try to bypass host clipping rectangle. (#4281, #3272) - Menus: MenuItem() and BeginMenu() are not affected/overlapping when style.SelectableTextAlign is altered. - Nav: Disabled items are not candidate for default focus. (#211, #787) +- Disabled: disabled mode more consistently release active id if the active item got disabled. (#211) - 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) diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp index 83174255d..610f7d566 100644 --- a/imgui_widgets.cpp +++ b/imgui_widgets.cpp @@ -611,6 +611,10 @@ bool ImGui::ButtonBehavior(const ImRect& bb, ImGuiID id, bool* out_hovered, bool } } + // Release active id if turning disabled + if (g.ActiveId == id && (g.CurrentItemFlags & ImGuiItemFlags_Disabled)) + ClearActiveID(); + // Process while held bool held = false; if (g.ActiveId == id)