[Libreoffice-commits] core.git: include/svtools svtools/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Thu Jan 31 08:52:33 UTC 2019
include/svtools/brwbox.hxx | 6 +++++-
svtools/source/brwbox/brwbox1.cxx | 8 +++++---
svtools/source/brwbox/brwbox2.cxx | 19 ++++++++++++++-----
3 files changed, 24 insertions(+), 9 deletions(-)
New commits:
commit 50547d359ff5229da1108b097612412bb06a3000
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Jan 30 16:32:01 2019 +0000
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Jan 31 09:52:06 2019 +0100
tdf#115941 use max of scrollbar and statusbar height for record locater
Change-Id: I639fd1c593e7cc440de5d2038562e64eab1a5af6
Reviewed-on: https://gerrit.libreoffice.org/67164
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx
index cba45688835d..fbff8176572e 100644
--- a/include/svtools/brwbox.hxx
+++ b/include/svtools/brwbox.hxx
@@ -21,6 +21,7 @@
#include <svtools/svtdllapi.h>
#include <vcl/scrbar.hxx>
+#include <vcl/status.hxx>
#include <vcl/ctrl.hxx>
#include <vcl/vclptr.hxx>
#include <tools/multisel.hxx>
@@ -195,6 +196,7 @@ private:
VclPtr<BrowserDataWin> pDataWin; // window to display data rows
VclPtr<ScrollBar> pVScroll; // vertical scrollbar
VclPtr<ScrollBar> aHScroll; // horizontal scrollbar
+ VclPtr<StatusBar> aStatusBar; // statusbar, just to measure its height
long nDataRowHeight; // height of a single data-row
sal_uInt16 nTitleLines; // number of lines in title row
@@ -289,7 +291,9 @@ private:
DECL_DLLPRIVATE_LINK( ScrollHdl, ScrollBar*, void );
DECL_DLLPRIVATE_LINK( StartDragHdl, HeaderBar*, void );
- SVT_DLLPRIVATE long GetFrozenWidth() const;
+ SVT_DLLPRIVATE long GetFrozenWidth() const;
+
+ SVT_DLLPRIVATE long GetBarHeight() const;
bool GoToRow(long nRow, bool bRowColMove, bool bDoNotModifySelection = false );
diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx
index 12b9e2c54aef..67e73f26a492 100644
--- a/svtools/source/brwbox/brwbox1.cxx
+++ b/svtools/source/brwbox/brwbox1.cxx
@@ -111,6 +111,7 @@ BrowseBox::BrowseBox( vcl::Window* pParent, WinBits nBits, BrowserMode nMode )
,DragSourceHelper( this )
,DropTargetHelper( this )
,aHScroll( VclPtr<ScrollBar>::Create(this, WB_HSCROLL) )
+ ,aStatusBar( VclPtr<StatusBar>::Create(this) )
{
ConstructImpl( nMode );
}
@@ -137,6 +138,7 @@ void BrowseBox::dispose()
pDataWin.disposeAndClear();
pVScroll.disposeAndClear();
aHScroll.disposeAndClear();
+ aStatusBar.disposeAndClear();
// free columns-space
mvCols.clear();
@@ -2076,11 +2078,11 @@ bool BrowseBox::ReserveControlArea(sal_uInt16 nWidth)
tools::Rectangle BrowseBox::GetControlArea() const
{
-
+ auto nHeight = aHScroll->GetSizePixel().Height();
return tools::Rectangle(
- Point( 0, GetOutputSizePixel().Height() - aHScroll->GetSizePixel().Height() ),
+ Point( 0, GetOutputSizePixel().Height() - nHeight ),
Size( GetOutputSizePixel().Width() - aHScroll->GetSizePixel().Width(),
- aHScroll->GetSizePixel().Height() ) );
+ nHeight ) );
}
void BrowseBox::SetMode( BrowserMode nMode )
diff --git a/svtools/source/brwbox/brwbox2.cxx b/svtools/source/brwbox/brwbox2.cxx
index 8af97408a2d7..f2aa331e18b7 100644
--- a/svtools/source/brwbox/brwbox2.cxx
+++ b/svtools/source/brwbox/brwbox2.cxx
@@ -475,9 +475,7 @@ void BrowseBox::Resize()
pDataWin->bResizeOnPaint = false;
// calc the size of the scrollbars
- // (we can't ask the scrollbars for their widths cause if we're zoomed they still have to be
- // resized - which is done in UpdateScrollbars)
- sal_uLong nSBSize = GetSettings().GetStyleSettings().GetScrollBarSize();
+ sal_uLong nSBSize = GetBarHeight();
if (IsZoom())
nSBSize = static_cast<sal_uLong>(nSBSize * static_cast<double>(GetZoom()));
@@ -1028,6 +1026,17 @@ void BrowseBox::PaintData( vcl::Window const & rWin, vcl::RenderContext& rRender
ImplPaintData(rRenderContext, rRect, false);
}
+long BrowseBox::GetBarHeight() const
+{
+ // tdf#115941 because some platforms have things like overlay scrollbars, take a max
+ // of a statusbar height and a scrollbar height as the control area height
+
+ // (we can't ask the scrollbars for their size cause if we're zoomed they still have to be
+ // resized - which is done in UpdateScrollbars)
+
+ return std::max(aStatusBar->GetSizePixel().Height(), GetSettings().GetStyleSettings().GetScrollBarSize());
+}
+
void BrowseBox::UpdateScrollbars()
{
@@ -1043,7 +1052,7 @@ void BrowseBox::UpdateScrollbars()
pDataWin->bInUpdateScrollbars = true;
// the size of the corner window (and the width of the VSB/height of the HSB)
- sal_uLong nCornerSize = GetSettings().GetStyleSettings().GetScrollBarSize();
+ sal_uLong nCornerSize = GetBarHeight();
if (IsZoom())
nCornerSize = static_cast<sal_uLong>(nCornerSize * static_cast<double>(GetZoom()));
@@ -1940,7 +1949,7 @@ tools::Rectangle BrowseBox::calcTableRect(bool _bOnScreen)
long nY = aRowBar.Top() - aRect.Top();
Size aSize(aRect.GetSize());
- return tools::Rectangle(aRowBar.TopRight(), Size(aSize.Width() - nX, aSize.Height() - nY - aHScroll->GetSizePixel().Height()) );
+ return tools::Rectangle(aRowBar.TopRight(), Size(aSize.Width() - nX, aSize.Height() - nY - GetBarHeight()) );
}
tools::Rectangle BrowseBox::GetFieldRectPixelAbs( sal_Int32 _nRowId, sal_uInt16 _nColId, bool /*_bIsHeader*/, bool _bOnScreen )
More information about the Libreoffice-commits
mailing list