summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2012-07-06 14:38:51 +0100
committerPetr Mladek <pmladek@suse.cz>2012-08-08 10:08:58 +0200
commitaea425a8cd851e6bee02247673c8996b58789484 (patch)
treec7bc392e852146cce9015d8590eb608e9190f5a7
parent99cad9fd7f413adecffc527d334eff616799cc4b (diff)
additional fix for fdo#51336 for radiobuttons
Change-Id: Ib35d27962b2c63221e1967886236547b3b1047d6 Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r--vcl/inc/vcl/button.hxx4
-rw-r--r--vcl/source/control/button.cxx17
2 files changed, 15 insertions, 6 deletions
diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx
index 90dbcd9b1e4a..d2c514616b17 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 670c9e64d42a..99e1724e50d6 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 )