From ff534b0d0a6df31764626a97ebcaa0de5be20fd3 Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 2 Oct 2023 10:56:50 +0200 Subject: [PATCH] Docking: Fixed a bug where ClassId compare tests (when using SetNextWindowClass) on success would prevent further filter from running. (#6882) --- docs/CHANGELOG.txt | 6 ++++++ imgui.cpp | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index b896eca96..e3b5ef520 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 199950ed6..6b6a1b227 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