include/vcl/floatwin.hxx | 1 - include/vcl/syswin.hxx | 2 +- vcl/source/window/dockmgr.cxx | 8 +++++--- vcl/source/window/dockwin.cxx | 6 ++---- vcl/source/window/floatwin.cxx | 11 ----------- vcl/source/window/syswin.cxx | 8 +++----- 6 files changed, 11 insertions(+), 25 deletions(-)
New commits: commit b197a47889a81b0181553a2a9c4db9683dd5d760 Author: Maxim Monastirsky <momonas...@gmail.com> Date: Tue Oct 11 00:04:12 2016 +0300 Height and Width seem to be swapped here when height takes left-right borders, and width top-bottom. And also - Why do we calculate the borders twice - as the call to CalcWindowSize does this again? Change-Id: I63a66939bd526a225ccac9bdd6262feba48da5c2 diff --git a/vcl/source/window/dockwin.cxx b/vcl/source/window/dockwin.cxx index 8dff109..9a523c7 100644 --- a/vcl/source/window/dockwin.cxx +++ b/vcl/source/window/dockwin.cxx @@ -1072,10 +1072,8 @@ Size DockingWindow::GetOptimalSize() const sal_Int32 nBorderWidth = get_border_width(); - aSize.Height() += mpWindowImpl->mnLeftBorder + mpWindowImpl->mnRightBorder - + 2*nBorderWidth; - aSize.Width() += mpWindowImpl->mnTopBorder + mpWindowImpl->mnBottomBorder - + 2*nBorderWidth; + aSize.Height() += 2 * nBorderWidth; + aSize.Width() += 2 * nBorderWidth; return Window::CalcWindowSize(aSize); } diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index f844eef..5e1a372 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -1091,10 +1091,8 @@ Size SystemWindow::GetOptimalSize() const sal_Int32 nBorderWidth = get_border_width(); - aSize.Height() += mpWindowImpl->mnLeftBorder + mpWindowImpl->mnRightBorder - + 2*nBorderWidth; - aSize.Width() += mpWindowImpl->mnTopBorder + mpWindowImpl->mnBottomBorder - + 2*nBorderWidth; + aSize.Height() += 2 * nBorderWidth; + aSize.Width() += 2 * nBorderWidth; return Window::CalcWindowSize(aSize); } commit 9079d599baf01cb414ed4cccb22546f1807e5637 Author: Maxim Monastirsky <momonas...@gmail.com> Date: Mon Oct 10 23:36:22 2016 +0300 Merge SystemWindow and FloatingWindow setPosSizeOnContainee methods This reverts commit 95942b16f44bc6eac57ad7b579b4158565446884 ("Resolves: tdf#90481 fix cropped buttons"), and changes the code in a way that seems to not crop buttons anymore. Tested under gtk3 with File > Digital Signatures... and the toolbar underline dropdown. Change-Id: Idcb680c82f594f630b1dd7c76c42912e6b5a093a diff --git a/include/vcl/floatwin.hxx b/include/vcl/floatwin.hxx index 414fcee..680cc13 100644 --- a/include/vcl/floatwin.hxx +++ b/include/vcl/floatwin.hxx @@ -103,7 +103,6 @@ private: SAL_DLLPRIVATE void ImplCallPopupModeEnd(); DECL_DLLPRIVATE_LINK( ImplEndPopupModeHdl, void*, void ); - virtual void setPosSizeOnContainee(Size aSize, Window &rBox) override; FloatingWindow (const FloatingWindow &) = delete; FloatingWindow & operator= (const FloatingWindow &) = delete; diff --git a/include/vcl/syswin.hxx b/include/vcl/syswin.hxx index d3a44e7..dd6d9f0 100644 --- a/include/vcl/syswin.hxx +++ b/include/vcl/syswin.hxx @@ -177,7 +177,7 @@ public: private: SAL_DLLPRIVATE void ImplMoveToScreen( long& io_rX, long& io_rY, long i_nWidth, long i_nHeight, vcl::Window* i_pConfigureWin ); - virtual void setPosSizeOnContainee(Size aSize, Window &rBox); + SAL_DLLPRIVATE void setPosSizeOnContainee(Size aSize, Window &rBox); DECL_DLLPRIVATE_LINK( ImplHandleLayoutTimerHdl, Idle*, void ); protected: diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index f9c4513..465177e 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -827,15 +827,4 @@ void FloatingWindow::AddPopupModeWindow( vcl::Window* pWindow ) mpFirstPopupModeWin = pWindow; } -void FloatingWindow::setPosSizeOnContainee(Size aSize, Window &rBox) -{ - sal_Int32 nBorderWidth = get_border_width(); - - aSize.Width() -= mpWindowImpl->mnLeftBorder + mpWindowImpl->mnRightBorder + 2 * nBorderWidth; - aSize.Height() -= nBorderWidth + mpWindowImpl->mnTopBorder + mpWindowImpl->mnBottomBorder + 2 * nBorderWidth; - - Point aPos(nBorderWidth, nBorderWidth); - VclContainer::setLayoutAllocation(rBox, aPos, aSize); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/window/syswin.cxx b/vcl/source/window/syswin.cxx index dca00fd..f844eef 100644 --- a/vcl/source/window/syswin.cxx +++ b/vcl/source/window/syswin.cxx @@ -1107,7 +1107,7 @@ void SystemWindow::setPosSizeOnContainee(Size aSize, Window &rBox) aSize.Height() -= 2 * nBorderWidth; Point aPos(nBorderWidth, nBorderWidth); - VclContainer::setLayoutAllocation(rBox, aPos, aSize); + VclContainer::setLayoutAllocation(rBox, aPos, CalcOutputSize(aSize)); } IMPL_LINK_NOARG( SystemWindow, ImplHandleLayoutTimerHdl, Idle*, void ) commit e48d1086d79c319b31d48b984840a424780deefa Author: Maxim Monastirsky <momonas...@gmail.com> Date: Sun Oct 9 10:13:12 2016 +0300 The key event is not needed for the non-ToolBox case Change-Id: I8d593665f1c2bcafa583eca311cd86ab618dec3d diff --git a/vcl/source/window/dockmgr.cxx b/vcl/source/window/dockmgr.cxx index 8a82de7..497d316 100644 --- a/vcl/source/window/dockmgr.cxx +++ b/vcl/source/window/dockmgr.cxx @@ -1043,10 +1043,12 @@ void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWin if( mpOldBorderWin.get() == GetWindow() ) mpOldBorderWin = nullptr; // no border window found + bool bAllowTearOff = bool( nFlags & FloatWinPopupFlags::AllowTearOff ); + bool bIsToolBox = GetWindow()->GetType() == WINDOW_TOOLBOX; + // the new parent for popup mode VclPtr<FloatingWindow> pWin; - bool bAllowTearOff = bool( nFlags & FloatWinPopupFlags::AllowTearOff ); - if ( bAllowTearOff && !dynamic_cast< ToolBox* >( GetWindow() ) ) + if ( bAllowTearOff && !bIsToolBox ) pWin = VclPtr<FloatingWindow>::Create( mpParent, WB_STDPOPUP ); else pWin = VclPtr<ImplPopupFloatWin>::Create( mpParent, this, bAllowTearOff ); @@ -1087,7 +1089,7 @@ void ImplDockingWindowWrapper::StartPopupMode( ToolBox *pParentToolBox, FloatWin mpFloatWin->StartPopupMode( pParentToolBox, nFlags ); GetWindow()->Show(); - if( pParentToolBox->IsKeyEvent() ) + if( bIsToolBox && pParentToolBox->IsKeyEvent() ) { // send HOME key to subtoolbar in order to select first item KeyEvent aEvent( 0, vcl::KeyCode( KEY_HOME ) ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits