diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index cf4667c72..48ccc0cf3 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -41,6 +41,11 @@ HOW TO UPDATE? Other changes: +- 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) + ----------------------------------------------------------------------- VERSION 1.90.4 (Released 2024-02-22) diff --git a/imgui.cpp b/imgui.cpp index 4a576b428..9648c7976 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -10887,7 +10887,8 @@ void ImGui::ClosePopupToLevel(int remaining, bool restore_focus_to_window_under_ ImGuiPopupData prev_popup = g.OpenPopupStack[remaining]; g.OpenPopupStack.resize(remaining); - if (restore_focus_to_window_under_popup) + // Restore focus (unless popup window was not yet submitted, and didn't have a chance to take focus anyhow. See #7325 for an edge case) + if (restore_focus_to_window_under_popup && prev_popup.Window) { ImGuiWindow* popup_window = prev_popup.Window; ImGuiWindow* focus_window = (popup_window && popup_window->Flags & ImGuiWindowFlags_ChildMenu) ? popup_window->ParentWindow : prev_popup.RestoreNavWindow; diff --git a/imgui.h b/imgui.h index 2c50eb77a..307834fff 100644 --- a/imgui.h +++ b/imgui.h @@ -24,7 +24,7 @@ // Library Version // (Integer encoded as XYYZZ for use in #if preprocessor conditionals, e.g. '#if IMGUI_VERSION_NUM >= 12345') #define IMGUI_VERSION "1.90.5 WIP" -#define IMGUI_VERSION_NUM 19041 +#define IMGUI_VERSION_NUM 19042 #define IMGUI_HAS_TABLE /*