瀏覽代碼

Menus, Popups: Fixed an issue where sibling menu popups re-opening in successive frames would erroneously close the window. (#7325, #7287, #7063)

Amend 014e0ac8
ocornut 1 年之前
父節點
當前提交
c3f8f4de25
共有 3 個文件被更改,包括 8 次插入2 次删除
  1. 5 0
      docs/CHANGELOG.txt
  2. 2 1
      imgui.cpp
  3. 1 1
      imgui.h

+ 5 - 0
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)

+ 2 - 1
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;

+ 1 - 1
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
 
 /*