Kaydet (Commit) b755c56c authored tarafından Caolán McNamara's avatar Caolán McNamara

TODO: move to ScrollBar when binary incompatibility is no longer problematic

since...

commit 72ebade6
Author: Ivo Hinkelmann <ihi@openoffice.org>
Date:   Thu Sep 13 15:33:31 2007 +0000

    INTEGRATION: CWS aquavclcarbonfixes (1.20.70); FILE MERGED
    2007/08/29 12:59:47 hdu 1.20.70.1: #i77549# extend native scrollbar NWF by adding PART_TRACK_*_AREA controls

Change-Id: I124c4014556f3a10b986a2886202210ebfc9eb10
Reviewed-on: https://gerrit.libreoffice.org/35586Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst d27818c1
...@@ -46,6 +46,7 @@ private: ...@@ -46,6 +46,7 @@ private:
Rectangle maPage1Rect; Rectangle maPage1Rect;
Rectangle maPage2Rect; Rectangle maPage2Rect;
Rectangle maThumbRect; Rectangle maThumbRect;
Rectangle maTrackRect;
ImplScrollBarData* mpData; ImplScrollBarData* mpData;
long mnStartPos; long mnStartPos;
long mnMouseOff; long mnMouseOff;
......
...@@ -68,7 +68,6 @@ struct ImplScrollBarData ...@@ -68,7 +68,6 @@ struct ImplScrollBarData
{ {
AutoTimer maTimer; // Timer AutoTimer maTimer; // Timer
bool mbHide; bool mbHide;
Rectangle maTrackRect; // TODO: move to ScrollBar class when binary incompatibility of ScrollBar class is no longer problematic
}; };
void ScrollBar::ImplInit( vcl::Window* pParent, WinBits nStyle ) void ScrollBar::ImplInit( vcl::Window* pParent, WinBits nStyle )
...@@ -90,14 +89,6 @@ void ScrollBar::ImplInit( vcl::Window* pParent, WinBits nStyle ) ...@@ -90,14 +89,6 @@ void ScrollBar::ImplInit( vcl::Window* pParent, WinBits nStyle )
mbCalcSize = true; mbCalcSize = true;
mbFullDrag = false; mbFullDrag = false;
if( !mpData ) // TODO: remove when maTrackRect is no longer in mpData
{
mpData = new ImplScrollBarData;
mpData->maTimer.SetInvokeHandler( LINK( this, ScrollBar, ImplAutoTimerHdl ) );
mpData->maTimer.SetDebugName( "vcl::ScrollBar mpData->maTimer" );
mpData->mbHide = false;
}
ImplInitStyle( nStyle ); ImplInitStyle( nStyle );
Control::ImplInit( pParent, nStyle, nullptr ); Control::ImplInit( pParent, nStyle, nullptr );
...@@ -135,12 +126,11 @@ void ScrollBar::ImplUpdateRects( bool bUpdate ) ...@@ -135,12 +126,11 @@ void ScrollBar::ImplUpdateRects( bool bUpdate )
mnStateFlags &= ~SCRBAR_STATE_BTN1_DISABLE; mnStateFlags &= ~SCRBAR_STATE_BTN1_DISABLE;
mnStateFlags &= ~SCRBAR_STATE_BTN2_DISABLE; mnStateFlags &= ~SCRBAR_STATE_BTN2_DISABLE;
Rectangle& aTrackRect = mpData->maTrackRect; // TODO: remove when maTrackRect is no longer in mpData
if ( mnThumbPixRange ) if ( mnThumbPixRange )
{ {
if ( GetStyle() & WB_HORZ ) if ( GetStyle() & WB_HORZ )
{ {
maThumbRect.Left() = aTrackRect.Left()+mnThumbPixPos; maThumbRect.Left() = maTrackRect.Left()+mnThumbPixPos;
maThumbRect.Right() = maThumbRect.Left()+mnThumbPixSize-1; maThumbRect.Right() = maThumbRect.Left()+mnThumbPixSize-1;
if ( !mnThumbPixPos ) if ( !mnThumbPixPos )
maPage1Rect.Right() = RECT_EMPTY; maPage1Rect.Right() = RECT_EMPTY;
...@@ -151,12 +141,12 @@ void ScrollBar::ImplUpdateRects( bool bUpdate ) ...@@ -151,12 +141,12 @@ void ScrollBar::ImplUpdateRects( bool bUpdate )
else else
{ {
maPage2Rect.Left() = maThumbRect.Right()+1; maPage2Rect.Left() = maThumbRect.Right()+1;
maPage2Rect.Right() = aTrackRect.Right(); maPage2Rect.Right() = maTrackRect.Right();
} }
} }
else else
{ {
maThumbRect.Top() = aTrackRect.Top()+mnThumbPixPos; maThumbRect.Top() = maTrackRect.Top()+mnThumbPixPos;
maThumbRect.Bottom() = maThumbRect.Top()+mnThumbPixSize-1; maThumbRect.Bottom() = maThumbRect.Top()+mnThumbPixSize-1;
if ( !mnThumbPixPos ) if ( !mnThumbPixPos )
maPage1Rect.Bottom() = RECT_EMPTY; maPage1Rect.Bottom() = RECT_EMPTY;
...@@ -167,7 +157,7 @@ void ScrollBar::ImplUpdateRects( bool bUpdate ) ...@@ -167,7 +157,7 @@ void ScrollBar::ImplUpdateRects( bool bUpdate )
else else
{ {
maPage2Rect.Top() = maThumbRect.Bottom()+1; maPage2Rect.Top() = maThumbRect.Bottom()+1;
maPage2Rect.Bottom() = aTrackRect.Bottom(); maPage2Rect.Bottom() = maTrackRect.Bottom();
} }
} }
} }
...@@ -175,24 +165,24 @@ void ScrollBar::ImplUpdateRects( bool bUpdate ) ...@@ -175,24 +165,24 @@ void ScrollBar::ImplUpdateRects( bool bUpdate )
{ {
if ( GetStyle() & WB_HORZ ) if ( GetStyle() & WB_HORZ )
{ {
const long nSpace = aTrackRect.Right() - aTrackRect.Left(); const long nSpace = maTrackRect.Right() - maTrackRect.Left();
if ( nSpace > 0 ) if ( nSpace > 0 )
{ {
maPage1Rect.Left() = aTrackRect.Left(); maPage1Rect.Left() = maTrackRect.Left();
maPage1Rect.Right() = aTrackRect.Left() + (nSpace/2); maPage1Rect.Right() = maTrackRect.Left() + (nSpace/2);
maPage2Rect.Left() = maPage1Rect.Right() + 1; maPage2Rect.Left() = maPage1Rect.Right() + 1;
maPage2Rect.Right() = aTrackRect.Right(); maPage2Rect.Right() = maTrackRect.Right();
} }
} }
else else
{ {
const long nSpace = aTrackRect.Bottom() - aTrackRect.Top(); const long nSpace = maTrackRect.Bottom() - maTrackRect.Top();
if ( nSpace > 0 ) if ( nSpace > 0 )
{ {
maPage1Rect.Top() = aTrackRect.Top(); maPage1Rect.Top() = maTrackRect.Top();
maPage1Rect.Bottom() = aTrackRect.Top() + (nSpace/2); maPage1Rect.Bottom() = maTrackRect.Top() + (nSpace/2);
maPage2Rect.Top() = maPage1Rect.Bottom() + 1; maPage2Rect.Top() = maPage1Rect.Bottom() + 1;
maPage2Rect.Bottom() = aTrackRect.Bottom(); maPage2Rect.Bottom() = maTrackRect.Bottom();
} }
} }
} }
...@@ -247,7 +237,6 @@ void ScrollBar::ImplCalc( bool bUpdate ) ...@@ -247,7 +237,6 @@ void ScrollBar::ImplCalc( bool bUpdate )
const Size aSize = GetOutputSizePixel(); const Size aSize = GetOutputSizePixel();
const long nMinThumbSize = GetSettings().GetStyleSettings().GetMinThumbSize(); const long nMinThumbSize = GetSettings().GetStyleSettings().GetMinThumbSize();
Rectangle& aTrackRect = mpData->maTrackRect; // TODO: remove when maTrackRect is no longer in mpData
if ( mbCalcSize ) if ( mbCalcSize )
{ {
Size aOldSize = getCurrentCalcSize(); Size aOldSize = getCurrentCalcSize();
...@@ -276,18 +265,18 @@ void ScrollBar::ImplCalc( bool bUpdate ) ...@@ -276,18 +265,18 @@ void ScrollBar::ImplCalc( bool bUpdate )
if ( GetNativeControlRegion( ControlType::Scrollbar, ControlPart::TrackHorzArea, if ( GetNativeControlRegion( ControlType::Scrollbar, ControlPart::TrackHorzArea,
aControlRegion, ControlState::NONE, ImplControlValue(), OUString(), aBoundingRegion, aTrackRegion ) ) aControlRegion, ControlState::NONE, ImplControlValue(), OUString(), aBoundingRegion, aTrackRegion ) )
aTrackRect = aTrackRegion; maTrackRect = aTrackRegion;
else else
aTrackRect = Rectangle( maBtn1Rect.TopRight(), maBtn2Rect.BottomLeft() ); maTrackRect = Rectangle( maBtn1Rect.TopRight(), maBtn2Rect.BottomLeft() );
// Check if available space is big enough for thumb ( min thumb size = ScrBar width/height ) // Check if available space is big enough for thumb ( min thumb size = ScrBar width/height )
mnThumbPixRange = aTrackRect.Right() - aTrackRect.Left(); mnThumbPixRange = maTrackRect.Right() - maTrackRect.Left();
if( mnThumbPixRange > 0 ) if( mnThumbPixRange > 0 )
{ {
maPage1Rect.Left() = aTrackRect.Left(); maPage1Rect.Left() = maTrackRect.Left();
maPage1Rect.Bottom() = maPage1Rect.Bottom() =
maPage2Rect.Bottom() = maPage2Rect.Bottom() =
maThumbRect.Bottom() = aTrackRect.Bottom(); maThumbRect.Bottom() = maTrackRect.Bottom();
} }
else else
{ {
...@@ -317,18 +306,18 @@ void ScrollBar::ImplCalc( bool bUpdate ) ...@@ -317,18 +306,18 @@ void ScrollBar::ImplCalc( bool bUpdate )
if ( GetNativeControlRegion( ControlType::Scrollbar, ControlPart::TrackVertArea, if ( GetNativeControlRegion( ControlType::Scrollbar, ControlPart::TrackVertArea,
aControlRegion, ControlState::NONE, ImplControlValue(), OUString(), aBoundingRegion, aTrackRegion ) ) aControlRegion, ControlState::NONE, ImplControlValue(), OUString(), aBoundingRegion, aTrackRegion ) )
aTrackRect = aTrackRegion; maTrackRect = aTrackRegion;
else else
aTrackRect = Rectangle( maBtn1Rect.BottomLeft()+Point(0,1), maBtn2Rect.TopRight() ); maTrackRect = Rectangle( maBtn1Rect.BottomLeft()+Point(0,1), maBtn2Rect.TopRight() );
// Check if available space is big enough for thumb // Check if available space is big enough for thumb
mnThumbPixRange = aTrackRect.Bottom() - aTrackRect.Top(); mnThumbPixRange = maTrackRect.Bottom() - maTrackRect.Top();
if( mnThumbPixRange > 0 ) if( mnThumbPixRange > 0 )
{ {
maPage1Rect.Top() = aTrackRect.Top(); maPage1Rect.Top() = maTrackRect.Top();
maPage1Rect.Right() = maPage1Rect.Right() =
maPage2Rect.Right() = maPage2Rect.Right() =
maThumbRect.Right() = aTrackRect.Right(); maThumbRect.Right() = maTrackRect.Right();
} }
else else
{ {
...@@ -422,7 +411,7 @@ void ScrollBar::Draw( OutputDevice* pDev, const Point& rPos, const Size& /* rSiz ...@@ -422,7 +411,7 @@ void ScrollBar::Draw( OutputDevice* pDev, const Point& rPos, const Size& /* rSiz
maBtn1Rect+=aPos; maBtn1Rect+=aPos;
maBtn2Rect+=aPos; maBtn2Rect+=aPos;
maThumbRect+=aPos; maThumbRect+=aPos;
mpData->maTrackRect+=aPos; // TODO: update when maTrackRect is no longer in mpData maTrackRect+=aPos;
maPage1Rect+=aPos; maPage1Rect+=aPos;
maPage2Rect+=aPos; maPage2Rect+=aPos;
...@@ -1157,6 +1146,7 @@ void ScrollBar::GetFocus() ...@@ -1157,6 +1146,7 @@ void ScrollBar::GetFocus()
{ {
mpData = new ImplScrollBarData; mpData = new ImplScrollBarData;
mpData->maTimer.SetInvokeHandler( LINK( this, ScrollBar, ImplAutoTimerHdl ) ); mpData->maTimer.SetInvokeHandler( LINK( this, ScrollBar, ImplAutoTimerHdl ) );
mpData->maTimer.SetDebugName( "vcl::ScrollBar mpData->maTimer" );
mpData->mbHide = false; mpData->mbHide = false;
} }
ImplInvert(); // react immediately ImplInvert(); // react immediately
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment