From 36055213c544683fbd41fbbc06ff096dfe0a567e Mon Sep 17 00:00:00 2001 From: Rokas Kupstys Date: Thu, 19 May 2022 14:01:18 +0300 Subject: [PATCH] Docking: Fixed moving window being interrupted when undocing a window with "io.ConfigDockingAlwaysTabBar = true". (#5324) Regression introduced in 6b7766817 --- docs/CHANGELOG.txt | 4 +++- imgui.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index dac5e8cc3..128b8ac43 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -188,7 +188,9 @@ Other Changes: Docking+Viewports Branch: - Docking: Fixed floating docked nodes not being clamped into viewport workrect to stay reachable - when g.ConfigWindowsMoveFromTitleBarOnly is set and multi-viewports are disabled. (#5044) + when io.ConfigWindowsMoveFromTitleBarOnly is true and multi-viewports are disabled. (#5044) +- Docking: Fixed a regression where moving window would be interrupted after undocking a tab + when io.ConfigDockingAlwaysTabBar is true. (#5324) [@rokups] - Viewports: Fixed translating a host viewport from briefly altering the size of AlwaysAutoResize windows. (#5057) - Viewports: Fixed main viewport size not matching ImDrawData::DisplaySize for one frame during resize when multi-viewports are disabled. (#4900) diff --git a/imgui.cpp b/imgui.cpp index 44ee4c75d..77fe3bb4a 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -3936,7 +3936,7 @@ void ImGui::UpdateMouseMovingWindowNewFrame() ImGuiWindow* moving_window = g.MovingWindow->RootWindowDockTree; // When a window stop being submitted while being dragged, it may will its viewport until next Begin() - const bool window_disappared = (!moving_window->WasActive || moving_window->Viewport == NULL); + const bool window_disappared = ((!moving_window->WasActive && !moving_window->Active) || moving_window->Viewport == NULL); if (g.IO.MouseDown[0] && IsMousePosValid(&g.IO.MousePos) && !window_disappared) { ImVec2 pos = g.IO.MousePos - g.ActiveIdClickOffset;