From ab58646b3eefcdee9e6ad786b8eed27390da4419 Mon Sep 17 00:00:00 2001 From: Jim Raykowski Date: Wed, 24 Oct 2018 01:01:21 -0800 Subject: Fix undocked window loses focus Use any method to undock a docked window and the window loses focus. This is a regression that began sometime after version 5.1.6.2 Change-Id: I91194db3cc23a24e805a90edaf1566f950ac129d Reviewed-on: https://gerrit.libreoffice.org/62270 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- vcl/source/window/dockwin.cxx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'vcl') diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx index ec203fc743bf..53a40c35c752 100644 --- a/vcl/source/window/dockwin.cxx +++ b/vcl/source/window/dockwin.cxx @@ -532,6 +532,8 @@ bool DockingWindow::EventNotify( NotifyEvent& rNEvt ) if (!bDockingSupportCrippled && pMEvt->IsMod1() && (pMEvt->GetClicks() == 2) ) { SetFloatingMode( !IsFloatingMode() ); + if ( IsFloatingMode() ) + ToTop( ToTopFlags::GrabFocusOnly ); return true; } else if ( pMEvt->GetClicks() == 1 ) @@ -561,6 +563,8 @@ bool DockingWindow::EventNotify( NotifyEvent& rNEvt ) rKey.IsShift() && rKey.IsMod1() && !bDockingSupportCrippled ) { SetFloatingMode( !IsFloatingMode() ); + if ( IsFloatingMode() ) + ToTop( ToTopFlags::GrabFocusOnly ); return true; } } @@ -587,12 +591,11 @@ void DockingWindow::EndDocking( const tools::Rectangle& rRect, bool bFloatMode ) if ( !IsDockingCanceled() ) { - bool bShow = false; if ( bFloatMode != IsFloatingMode() ) { - Show( false, ShowFlags::NoFocusChange ); SetFloatingMode( bFloatMode ); - bShow = true; + if ( IsFloatingMode() ) + ToTop( ToTopFlags::GrabFocusOnly ); if ( bFloatMode && mpFloatWin ) mpFloatWin->SetPosSizePixel( rRect.TopLeft(), rRect.GetSize() ); } @@ -602,9 +605,6 @@ void DockingWindow::EndDocking( const tools::Rectangle& rRect, bool bFloatMode ) aPos = GetParent()->ScreenToOutputPixel( aPos ); Window::SetPosSizePixel( aPos, rRect.GetSize() ); } - - if ( bShow ) - Show(); } mbDocking = false; mbDockCanceled = bOrigDockCanceled; -- cgit