6307193
From 19c3559e873e79a178e9c4932363e2a2cc1b9ac0 Mon Sep 17 00:00:00 2001
6307193
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
6307193
Date: Tue, 22 Nov 2016 13:43:32 +0000
6307193
Subject: [PATCH] Resolves: rhbz#1397181 toolbar layout manager not respecting
6307193
 drag cancel
6307193
6307193
plus restore original mbDockCanceled state after wayland-enforced
6307193
cancel otherwise next drag won't work
6307193
6307193
Change-Id: Idefed25b925b36d0bf72b77609c4fc2eb47f71b9
6307193
---
6307193
 framework/source/layoutmanager/toolbarlayoutmanager.cxx | 3 +++
6307193
 vcl/source/window/dockmgr.cxx                           | 3 +++
6307193
 vcl/source/window/dockwin.cxx                           | 2 ++
6307193
 3 files changed, 8 insertions(+)
6307193
6307193
diff --git a/framework/source/layoutmanager/toolbarlayoutmanager.cxx b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
6307193
index 583d622..b770fd8 100644
6307193
--- a/framework/source/layoutmanager/toolbarlayoutmanager.cxx
6307193
+++ b/framework/source/layoutmanager/toolbarlayoutmanager.cxx
6307193
@@ -3476,6 +3476,9 @@ throw (uno::RuntimeException, std::exception)
6307193
 void SAL_CALL ToolbarLayoutManager::endDocking( const awt::EndDockingEvent& e )
6307193
 throw (uno::RuntimeException, std::exception)
6307193
 {
6307193
+    if (e.bCancelled)
6307193
+        return;
6307193
+
6307193
     bool bDockingInProgress( false );
6307193
     bool bStartDockFloated( false );
6307193
     bool bFloating( false );
6307193
diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx
6307193
index 9012a90..1467df8 100644
6307193
--- a/vcl/source/window/dockmgr.cxx
6307193
+++ b/vcl/source/window/dockmgr.cxx
6307193
@@ -935,6 +935,7 @@ void ImplDockingWindowWrapper::EndDocking( const Rectangle& rRect, bool bFloatMo
6307193
 {
6307193
     Rectangle aRect( rRect );
6307193
 
6307193
+    bool bOrigDockCanceled = mbDockCanceled;
6307193
     if (bFloatMode && !StyleSettings::GetDockingFloatsSupported())
6307193
         mbDockCanceled = true;
6307193
 
6307193
@@ -971,6 +972,8 @@ void ImplDockingWindowWrapper::EndDocking( const Rectangle& rRect, bool bFloatMo
6307193
 
6307193
     // must be enabled in Window::Notify to prevent permanent docking during mouse move
6307193
     mbStartDockingEnabled = false;
6307193
+
6307193
+    mbDockCanceled = bOrigDockCanceled;
6307193
 }
6307193
 
6307193
 bool ImplDockingWindowWrapper::PrepareToggleFloatingMode()
6307193
diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx
6307193
index 8f63c69..7d3ba8b 100644
6307193
--- a/vcl/source/window/dockwin.cxx
6307193
+++ b/vcl/source/window/dockwin.cxx
6307193
@@ -589,6 +589,7 @@ bool DockingWindow::Docking( const Point&, Rectangle& )
6307193
 
6307193
 void DockingWindow::EndDocking( const Rectangle& rRect, bool bFloatMode )
6307193
 {
6307193
+    bool bOrigDockCanceled = mbDockCanceled;
6307193
     if (bFloatMode && !StyleSettings::GetDockingFloatsSupported())
6307193
         mbDockCanceled = true;
6307193
 
6307193
@@ -614,6 +615,7 @@ void DockingWindow::EndDocking( const Rectangle& rRect, bool bFloatMode )
6307193
             Show();
6307193
     }
6307193
     mbDocking = false;
6307193
+    mbDockCanceled = bOrigDockCanceled;
6307193
 }
6307193
 
6307193
 bool DockingWindow::PrepareToggleFloatingMode()
6307193
-- 
6307193
2.9.3
6307193