From fb4b5b25750261c4d5b2e6853b5a897eebea96d1 Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Tue, 7 Jan 2025 17:53:37 +0200 Subject: [PATCH] Allow window with single tab to be dragged from tab area --- Source/Editor/GUI/Docking/DockPanelProxy.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Source/Editor/GUI/Docking/DockPanelProxy.cs b/Source/Editor/GUI/Docking/DockPanelProxy.cs index dbb4e082e..62733ac1e 100644 --- a/Source/Editor/GUI/Docking/DockPanelProxy.cs +++ b/Source/Editor/GUI/Docking/DockPanelProxy.cs @@ -49,6 +49,11 @@ namespace FlaxEditor.GUI.Docking /// The mouse position. /// public Float2 MousePosition = Float2.Minimum; + + /// + /// The mouse position. + /// + public Float2 MouseStartPosition = Float2.Minimum; /// /// The start drag asynchronous window. @@ -355,6 +360,7 @@ namespace FlaxEditor.GUI.Docking if (IsSingleFloatingWindow) return base.OnMouseDown(location, button); MouseDownWindow = GetTabAtPos(location, out IsMouseDownOverCross); + MouseStartPosition = location; // Check buttons if (button == MouseButton.Left) @@ -441,6 +447,20 @@ namespace FlaxEditor.GUI.Docking StartDrag(MouseDownWindow); MouseDownWindow = null; } + // Check if single tab is tried to be moved + else if (MouseDownWindow != null && _panel.TabsCount <= 1) + { + if ((MousePosition - MouseStartPosition).Length > 3) + { + // Clear flag + IsMouseLeftButtonDown = false; + + // Check tab under the mouse + if (!IsMouseDownOverCross && MouseDownWindow != null) + StartDrag(MouseDownWindow); + MouseDownWindow = null; + } + } // Check if has more than one tab to change order else if (MouseDownWindow != null && _panel.TabsCount > 1) {