vcl/source/window/floatwin.cxx | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-)
New commits: commit 822f94e260b8351dc3459d2c05180af2de96d4c7 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue May 12 15:57:11 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue May 12 20:24:32 2020 +0200 tdf#132435 only place menu vertically if up/down requested don't fallback to left/right if it doesn't fit, just scroll the menu instead Change-Id: I20b261fd7fee78555bf87b25dfeed33c23602493 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94065 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/source/window/floatwin.cxx b/vcl/source/window/floatwin.cxx index 749ceacd09d0..a9a3e7163bb2 100644 --- a/vcl/source/window/floatwin.cxx +++ b/vcl/source/window/floatwin.cxx @@ -265,6 +265,7 @@ Point FloatingWindow::ImplCalcPos(vcl::Window* pWindow, Application::GetBestScreen( bRTL ? devRectRTL : devRect ) ); FloatWinPopupFlags nArrangeAry[5]; + sal_uInt16 nArrangeAttempts = 5; Point e1,e2; // the common edge between the item rect and the floating window if ( nFlags & FloatWinPopupFlags::Left ) @@ -287,23 +288,21 @@ Point FloatingWindow::ImplCalcPos(vcl::Window* pWindow, { nArrangeAry[0] = FloatWinPopupFlags::Up; nArrangeAry[1] = FloatWinPopupFlags::Down; - nArrangeAry[2] = FloatWinPopupFlags::Right; - nArrangeAry[3] = FloatWinPopupFlags::Left; - nArrangeAry[4] = FloatWinPopupFlags::Up; + nArrangeAry[2] = FloatWinPopupFlags::Up; + nArrangeAttempts = 3; } else { nArrangeAry[0] = FloatWinPopupFlags::Down; nArrangeAry[1] = FloatWinPopupFlags::Up; - nArrangeAry[2] = FloatWinPopupFlags::Right; - nArrangeAry[3] = FloatWinPopupFlags::Left; - nArrangeAry[4] = FloatWinPopupFlags::Down; + nArrangeAry[2] = FloatWinPopupFlags::Down; + nArrangeAttempts = 3; } sal_uInt16 nArrangeIndex = 0; const bool bLOKActive = comphelper::LibreOfficeKit::isActive(); - for ( ; nArrangeIndex < 5; nArrangeIndex++ ) + for ( ; nArrangeIndex < nArrangeAttempts; nArrangeIndex++ ) { bool bBreak = true; switch ( nArrangeAry[nArrangeIndex] ) @@ -428,8 +427,8 @@ Point FloatingWindow::ImplCalcPos(vcl::Window* pWindow, if ( bBreak ) break; } - if ( nArrangeIndex > 4 ) - nArrangeIndex = 4; + if (nArrangeIndex >= nArrangeAttempts) + nArrangeIndex = nArrangeAttempts - 1; rArrangeIndex = nArrangeIndex; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits