diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index b896eca9..e3b5ef52 100644 --- a/docs/CHANGELOG.txt +++ b/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) diff --git a/imgui.cpp b/imgui.cpp index 199950ed..6b6a1b22 100644 --- a/imgui.cpp +++ b/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