From 8f1e01fc89ca5d5f03d172f038e2310ba2ac5580 Mon Sep 17 00:00:00 2001 From: Maxim Monastirsky Date: Mon, 18 Sep 2017 09:57:39 +0300 Subject: Support non-ToolBox popup case in DockingManager, tdf#106762 prep Change-Id: I54d4de28336b70dbd07923377e6cceb67079fa80 --- vcl/source/window/dockmgr.cxx | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'vcl') diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx index bc3eb2cc5b42..67569f773ee4 100644 --- a/vcl/source/window/dockmgr.cxx +++ b/vcl/source/window/dockmgr.cxx @@ -332,6 +332,13 @@ void DockingManager::SetFloatingMode( const vcl::Window *pWindow, bool bFloating pWrapper->SetFloatingMode( bFloating ); } +void DockingManager::StartPopupMode( const vcl::Window *pWindow, const tools::Rectangle& rRect, FloatWinPopupFlags nFlags ) +{ + ImplDockingWindowWrapper* pWrapper = GetDockingWindowWrapper( pWindow ); + if( pWrapper ) + pWrapper->StartPopupMode( rRect, nFlags ); +} + void DockingManager::StartPopupMode( ToolBox *pParentToolBox, const vcl::Window *pWindow, FloatWinPopupFlags nFlags ) { ImplDockingWindowWrapper* pWrapper = GetDockingWindowWrapper( pWindow ); @@ -915,12 +922,8 @@ void ImplDockingWindowWrapper::ShowTitleButton( TitleButton nButton, bool bVisib } } -void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWinPopupFlags nFlags ) +void ImplDockingWindowWrapper::ImplPreparePopupMode( FloatWinPopupFlags nFlags ) { - // do nothing if window is floating - if( IsFloatingMode() ) - return; - GetWindow()->Show( false, ShowFlags::NoFocusChange ); // prepare reparenting @@ -966,6 +969,15 @@ void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWin // set mpFloatWin not until all window positioning is done !!! // (SetPosPixel etc. check for valid mpFloatWin pointer) mpFloatWin = pWin; +} + +void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWinPopupFlags nFlags ) +{ + // do nothing if window is floating + if( IsFloatingMode() ) + return; + + ImplPreparePopupMode( nFlags ); // if the subtoolbar was opened via keyboard make sure that key events // will go into subtoolbar @@ -983,6 +995,17 @@ void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWin } } +void ImplDockingWindowWrapper::StartPopupMode( const tools::Rectangle& rRect, FloatWinPopupFlags nFlags ) +{ + // do nothing if window is floating + if( IsFloatingMode() ) + return; + + ImplPreparePopupMode( nFlags ); + mpFloatWin->StartPopupMode( rRect, nFlags ); + GetWindow()->Show(); +} + IMPL_LINK_NOARG(ImplDockingWindowWrapper, PopupModeEnd, FloatingWindow*, void) { GetWindow()->Show( false, ShowFlags::NoFocusChange ); -- cgit