diff options
author | Noel Power <noel.power@novell.com> | 2012-07-06 14:38:51 +0100 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2012-07-06 14:38:51 +0100 |
commit | 2bc2d09bba2e3f34e8ce13571de9ff7007e1c2b6 (patch) | |
tree | ca6052a168c3e2863fa7d0c0cab264bf44b57c5b | |
parent | a1345cd93a57ec7d9352f2c71ec2664332ce5e76 (diff) |
additional fix for fdo#51336 for radiobuttons
Change-Id: Ib35d27962b2c63221e1967886236547b3b1047d6
-rw-r--r-- | vcl/inc/vcl/button.hxx | 4 | ||||
-rw-r--r-- | vcl/source/control/button.cxx | 17 |
2 files changed, 15 insertions, 6 deletions
diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx index 64f7581248e2..9eb60888b6e3 100644 --- a/vcl/inc/vcl/button.hxx +++ b/vcl/inc/vcl/button.hxx @@ -313,6 +313,10 @@ private: protected: using Control::ImplInitSettings; using Window::ImplInit; + // allows the behaviour of horizontal placement of the checbox image to be + // overridden. + virtual void ImplHandleHoriAlign( const Point& rPos, const Size& rSize, + const Size& rImageSize, Rectangle& rStateRect ); SAL_DLLPRIVATE void ImplInit( Window* pParent, WinBits nStyle ); SAL_DLLPRIVATE void ImplLoadRes( const ResId& rResId ); diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index e3ed723bc988..9ba7e8f0fbf6 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2124,6 +2124,14 @@ if ( bNativeOK == sal_False ) // ----------------------------------------------------------------------- +void RadioButton:: ImplHandleHoriAlign( const Point& rPos, const Size& /*rSize*/, + const Size& /*rImageSize*/, Rectangle& rStateRect ) +{ + // align Checkbox image left ( always ) + rStateRect.Left() = rPos.X(); +} +// ----------------------------------------------------------------------- + void RadioButton::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, const Point& rPos, const Size& rSize, const Size& rImageSize, Rectangle& rStateRect, @@ -2188,12 +2196,9 @@ void RadioButton::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, } else { - if ( nWinStyle & WB_CENTER ) - rStateRect.Left() = rPos.X()+((rSize.Width()-rImageSize.Width())/2); - else if ( nWinStyle & WB_RIGHT ) - rStateRect.Left() = rPos.X()+rSize.Width()-rImageSize.Width(); //-1; - else - rStateRect.Left() = rPos.X(); //+1; + // allow specific handling of WB_CENTER, WB_LEFT & WB_RIGHT by + // by subclasses + ImplHandleHoriAlign( rPos, rSize, rImageSize, rStateRect ); if ( nWinStyle & WB_VCENTER ) rStateRect.Top() = rPos.Y()+((rSize.Height()-rImageSize.Height())/2); else if ( nWinStyle & WB_BOTTOM ) |