Quellcode durchsuchen

Docking: Fixed a bug where ClassId compare tests (when using SetNextWindowClass) on success would prevent further filter from running. (#6882)

ocornut vor 1 Jahr
Ursprung
Commit
ff534b0d0a
2 geänderte Dateien mit 11 neuen und 3 gelöschten Zeilen
  1. 6 0
      docs/CHANGELOG.txt
  2. 5 3
      imgui.cpp

+ 6 - 0
docs/CHANGELOG.txt

@@ -127,6 +127,12 @@ Docking+Viewports Branch:
 - Docking: renamed ImGuiDockNodeFlags_NoDockingInCentralNode to ImGuiDockNodeFlags_NoDockingOverCentralNode.
 - Docking: Internals: renamed ImGuiDockNodeFlags_NoDockingSplitMe to ImGuiDockNodeFlags_NoDockingSplit.
 
+Docking+Viewports Branch:
+
+- Docking: Fixed a bug where ClassId compare tests (when using SetNextWindowClass)
+  on success would prevent further filter from running, namely the one that prevent
+  docking over a popup.
+
 
 -----------------------------------------------------------------------
  VERSION 1.89.9 (Released 2023-09-04)

+ 5 - 3
imgui.cpp

@@ -17059,11 +17059,13 @@ static bool DockNodeIsDropAllowedOne(ImGuiWindow* payload, ImGuiWindow* host_win
     ImGuiWindowClass* payload_class = &payload->WindowClass;
     if (host_class->ClassId != payload_class->ClassId)
     {
+        bool pass = false;
         if (host_class->ClassId != 0 && host_class->DockingAllowUnclassed && payload_class->ClassId == 0)
-            return true;
+            pass = true;
         if (payload_class->ClassId != 0 && payload_class->DockingAllowUnclassed && host_class->ClassId == 0)
-            return true;
-        return false;
+            pass = true;
+        if (!pass)
+            return false;
     }
 
     // Prevent docking any window created above a popup