diff options
Diffstat (limited to 'vcl/source/control/scrbar.cxx')
-rw-r--r-- | vcl/source/control/scrbar.cxx | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/vcl/source/control/scrbar.cxx b/vcl/source/control/scrbar.cxx index 9e90362d7fb9..b99ff260188c 100644 --- a/vcl/source/control/scrbar.cxx +++ b/vcl/source/control/scrbar.cxx @@ -323,7 +323,7 @@ void ScrollBar::ImplCalc( sal_Bool bUpdate ) Rectangle& maTrackRect = mpData->maTrackRect; // TODO: remove when maTrackRect is no longer in mpData if ( mbCalcSize ) { - Size aOldSize = GetOptimalSize(WINDOWSIZE_PREFERRED); + Size aOldSize = getCurrentCalcSize(); const Rectangle aControlRegion( Point(0,0), aSize ); Rectangle aBtn1Region, aBtn2Region, aTrackRegion, aBoundingRegion; @@ -416,7 +416,7 @@ void ScrollBar::ImplCalc( sal_Bool bUpdate ) mbCalcSize = sal_False; - Size aNewSize = GetOptimalSize(WINDOWSIZE_PREFERRED); + Size aNewSize = getCurrentCalcSize(); if (aOldSize != aNewSize) { queue_resize(); @@ -1509,6 +1509,13 @@ void ScrollBar::SetVisibleSize( long nNewSize ) Size ScrollBar::GetOptimalSize(WindowSizeType) const { + if (mbCalcSize) + const_cast<ScrollBar*>(this)->ImplCalc(sal_False); + return getCurrentCalcSize(); +} + +Size ScrollBar::getCurrentCalcSize() const +{ Rectangle aCtrlRegion; aCtrlRegion.Union(maBtn1Rect); aCtrlRegion.Union(maBtn2Rect); |