Explorar el Código

Popups: fixed CloseInactivePopups() so that right-clicking to close one level of popups in a popups stack won't close the whole stack. This is done by properly refocusing the lower level popup. Fixes 87ae40843c0b5c526edd9cdb62b072cd0bcc49ff (~#439)

omar hace 8 años
padre
commit
59a89774d7
Se han modificado 1 ficheros con 2 adiciones y 4 borrados
  1. 2 4
      imgui.cpp

+ 2 - 4
imgui.cpp

@@ -2802,9 +2802,7 @@ void ImGui::EndFrame()
             // With right mouse button we close popups without changing focus
             // (The left mouse button path calls FocusWindow which will lead NewFrame->CloseInactivePopups to trigger)
             if (g.IO.MouseClicked[1])
-            {
                 CloseInactivePopups(g.HoveredWindow);
-            }
         }
     }
 
@@ -3605,8 +3603,8 @@ static void CloseInactivePopups(ImGuiWindow* ref_window)
                 break;
         }
     }
-    if (n < g.OpenPopupStack.Size)   // This test is not required but it allows to set a useful breakpoint on the line below
-        g.OpenPopupStack.resize(n);
+    if (n < g.OpenPopupStack.Size) // This test is not required but it allows to set a convenient breakpoint on the block below
+        ClosePopupToLevel(n);
 }
 
 static ImGuiWindow* GetFrontMostModalRootWindow()