summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorNoel Power <noel.power@novell.com>2012-07-06 11:19:57 +0100
committerPetr Mladek <pmladek@suse.cz>2012-08-08 10:08:51 +0200
commit99cad9fd7f413adecffc527d334eff616799cc4b (patch)
treeb76f54f004ef089a86e548a30baeb9b27e94f999 /vcl
parent73a465ed443e820974600ee291e21ed6413ecb9d (diff)
fdo#51336 - change vcl checkbox no-label behaviour
Change-Id: I352c6041cc520dc76c302190dcf3a6945f5ac85f Signed-off-by: Petr Mladek <pmladek@suse.cz>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/vcl/button.hxx15
-rw-r--r--vcl/source/control/button.cxx18
2 files changed, 21 insertions, 12 deletions
diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx
index 89d4d8e3fff0..90dbcd9b1e4a 100644
--- a/vcl/inc/vcl/button.hxx
+++ b/vcl/inc/vcl/button.hxx
@@ -401,7 +401,6 @@ public:
class VCL_DLLPUBLIC CheckBox : public Button
{
-private:
Rectangle maStateRect;
Rectangle maMouseRect;
TriState meState;
@@ -420,7 +419,7 @@ private:
SAL_DLLPRIVATE void ImplDrawCheckBox( bool bLayout = false );
SAL_DLLPRIVATE long ImplGetImageToTextDistance() const;
SAL_DLLPRIVATE Size ImplGetCheckImageSize() const;
-
+private:
// Copy assignment is forbidden and not implemented.
SAL_DLLPRIVATE CheckBox(const CheckBox &);
SAL_DLLPRIVATE CheckBox& operator= (const CheckBox &);
@@ -428,15 +427,19 @@ 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 );
- SAL_DLLPRIVATE virtual void FillLayoutData() const;
- SAL_DLLPRIVATE virtual const Font&
+ virtual void FillLayoutData() const;
+ virtual const Font&
GetCanonicalFont( const StyleSettings& _rStyle ) const;
- SAL_DLLPRIVATE virtual const Color&
+ virtual const Color&
GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
- SAL_DLLPRIVATE virtual void ImplDrawCheckBoxState();
+ virtual void ImplDrawCheckBoxState();
SAL_DLLPRIVATE const Rectangle& GetStateRect() const { return maStateRect; }
SAL_DLLPRIVATE const Rectangle& GetMouseRect() const { return maMouseRect; }
public:
diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx
index 3e09946ed16f..670c9e64d42a 100644
--- a/vcl/source/control/button.cxx
+++ b/vcl/source/control/button.cxx
@@ -3252,12 +3252,9 @@ void CheckBox::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();
- else
- rStateRect.Left() = rPos.X();
+ // 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 )
@@ -3299,6 +3296,15 @@ void CheckBox::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags,
// -----------------------------------------------------------------------
+void CheckBox:: ImplHandleHoriAlign( const Point& rPos, const Size& /*rSize*/,
+ const Size& /*rImageSize*/, Rectangle& rStateRect )
+{
+ // align Checkbox image left ( always )
+ rStateRect.Left() = rPos.X();
+}
+
+// -----------------------------------------------------------------------
+
void CheckBox::ImplDrawCheckBox( bool bLayout )
{
Size aImageSize = ImplGetCheckImageSize();