svtools/source/brwbox/ebbcontrols.cxx | 25 +------------------ vcl/inc/vcl/button.hxx | 33 ++++++++++++++------------ vcl/source/control/button.cxx | 43 ++++++++++++---------------------- 3 files changed, 36 insertions(+), 65 deletions(-)
New commits: commit ff54a3c291b8aa104992a0285207166cf25ddd86 Author: Noel Power <noel.po...@novell.com> Date: Wed Aug 1 17:01:44 2012 +0100 simpler fix fo fdo#51336 - change vcl checkbox no-label behaviour Change-Id: I1563dc2afc49c7b1115192db00fbd08a7524154e diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index 1d7b025..fd607f2 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -268,6 +268,7 @@ namespace svt EnableChildTransparentMode(); pBox = new TriStateBox(this,WB_CENTER|WB_VCENTER); + pBox->SetLegacyNoTextAlign( true ); pBox->EnableChildTransparentMode(); pBox->SetPaintTransparent( sal_True ); pBox->SetClickHdl( LINK( this, CheckBoxControl, OnClick ) ); diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx index 9c5d6a3..9daf41a 100644 --- a/vcl/inc/vcl/button.hxx +++ b/vcl/inc/vcl/button.hxx @@ -292,7 +292,11 @@ private: sal_Bool mbRadioCheck; sal_Bool mbStateChanged; Link maToggleHdl; - + // when mbLegacyNoTextAlign is set then the old behaviour where + // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement + // occurs, otherwise the image ( radiobutton circle ) is placed + // to the left or right ( depending on RTL or LTR settings ) + bool mbLegacyNoTextAlign; SAL_DLLPRIVATE void ImplInitRadioButtonData(); SAL_DLLPRIVATE WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle ); SAL_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground ); @@ -409,7 +413,11 @@ private: TriState meSaveValue; sal_Bool mbTriState; Link maToggleHdl; - + // when mbLegacyNoTextAlign is set then the old behaviour where + // the WB_LEFT, WB_RIGHT & WB_CENTER affect the image placement + // occurs, otherwise the image ( checkbox box ) is placed + // to the left or right ( depending on RTL or LTR settings ) + bool mbLegacyNoTextAlign; SAL_DLLPRIVATE void ImplInitCheckBoxData(); SAL_DLLPRIVATE WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle ); SAL_DLLPRIVATE void ImplInitSettings( sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground ); @@ -481,6 +489,8 @@ public: void SetToggleHdl( const Link& rLink ) { maToggleHdl = rLink; } const Link& GetToggleHdl() const { return maToggleHdl; } + bool IsLegacyNoTextAlign() { return mbLegacyNoTextAlign; } + void SetLegacyNoTextAlign( bool bVal ) { mbLegacyNoTextAlign = bVal; } }; inline void CheckBox::Check( sal_Bool bCheck ) diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 1770bf8..37752bb 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2193,9 +2193,9 @@ void RadioButton::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, } else { - if ( nWinStyle & WB_CENTER ) + if ( mbLegacyNoTextAlign && ( nWinStyle & WB_CENTER ) ) rStateRect.Left() = rPos.X()+((rSize.Width()-rImageSize.Width())/2); - else if ( nWinStyle & WB_RIGHT ) + else if ( mbLegacyNoTextAlign && ( nWinStyle & WB_RIGHT ) ) rStateRect.Left() = rPos.X()+rSize.Width()-rImageSize.Width(); //-1; else rStateRect.Left() = rPos.X(); //+1; @@ -2421,7 +2421,7 @@ void RadioButton::ImplCallClick( sal_Bool bGrabFocus, sal_uInt16 nFocusFlags ) // ----------------------------------------------------------------------- RadioButton::RadioButton( Window* pParent, WinBits nStyle ) : - Button( WINDOW_RADIOBUTTON ) + Button( WINDOW_RADIOBUTTON ), mbLegacyNoTextAlign( false ) { ImplInitRadioButtonData(); ImplInit( pParent, nStyle ); @@ -2430,7 +2430,7 @@ RadioButton::RadioButton( Window* pParent, WinBits nStyle ) : // ----------------------------------------------------------------------- RadioButton::RadioButton( Window* pParent, const ResId& rResId ) : - Button( WINDOW_RADIOBUTTON ) + Button( WINDOW_RADIOBUTTON ), mbLegacyNoTextAlign( false ) { ImplInitRadioButtonData(); rResId.SetRT( RSC_RADIOBUTTON ); @@ -3256,9 +3256,9 @@ void CheckBox::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, } else { - if ( nWinStyle & WB_CENTER ) + if ( mbLegacyNoTextAlign && ( nWinStyle & WB_CENTER ) ) rStateRect.Left() = rPos.X()+((rSize.Width()-rImageSize.Width())/2); - else if ( nWinStyle & WB_RIGHT ) + else if ( mbLegacyNoTextAlign && ( nWinStyle & WB_RIGHT ) ) rStateRect.Left() = rPos.X()+rSize.Width()-rImageSize.Width(); else rStateRect.Left() = rPos.X(); @@ -3354,7 +3354,7 @@ void CheckBox::ImplCheck() // ----------------------------------------------------------------------- CheckBox::CheckBox( Window* pParent, WinBits nStyle ) : - Button( WINDOW_CHECKBOX ) + Button( WINDOW_CHECKBOX ), mbLegacyNoTextAlign( false ) { ImplInitCheckBoxData(); ImplInit( pParent, nStyle ); @@ -3363,7 +3363,7 @@ CheckBox::CheckBox( Window* pParent, WinBits nStyle ) : // ----------------------------------------------------------------------- CheckBox::CheckBox( Window* pParent, const ResId& rResId ) : - Button( WINDOW_CHECKBOX ) + Button( WINDOW_CHECKBOX ), mbLegacyNoTextAlign( false ) { ImplInitCheckBoxData(); rResId.SetRT( RSC_CHECKBOX ); commit d616ea80b27e65d83710f811a6f32637f3c7284a Author: Noel Power <noel.po...@novell.com> Date: Tue Jul 31 20:42:04 2012 +0100 Revert "additional fix for fdo#51336 for radiobuttons" This reverts commit 2bc2d09bba2e3f34e8ce13571de9ff7007e1c2b6. diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx index 719feaa..9c5d6a3 100644 --- a/vcl/inc/vcl/button.hxx +++ b/vcl/inc/vcl/button.hxx @@ -314,10 +314,6 @@ 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 75c28da..1770bf8 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2129,14 +2129,6 @@ 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, @@ -2201,9 +2193,12 @@ void RadioButton::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, } else { - // allow specific handling of WB_CENTER, WB_LEFT & WB_RIGHT by - // by subclasses - ImplHandleHoriAlign( rPos, rSize, rImageSize, rStateRect ); + 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; if ( nWinStyle & WB_VCENTER ) rStateRect.Top() = rPos.Y()+((rSize.Height()-rImageSize.Height())/2); else if ( nWinStyle & WB_BOTTOM ) commit 59d9a39abc6d4915fce55e55008107a7081b38d9 Author: Noel Power <noel.po...@novell.com> Date: Tue Jul 31 20:41:51 2012 +0100 Revert "fdo#51336 - change vcl checkbox no-label behaviour" This reverts commit a1345cd93a57ec7d9352f2c71ec2664332ce5e76. diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index b0ab801..1d7b025 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -253,28 +253,6 @@ namespace svt //= CheckBoxControl //================================================================== //------------------------------------------------------------------ - - class CBCntrlTriState : public TriStateBox - { - CBCntrlTriState( const CBCntrlTriState & ); - CBCntrlTriState& operator= ( const CBCntrlTriState & ); - protected: - virtual void ImplHandleHoriAlign( const Point& rPos, const Size& rSize, - const Size& rImageSize, Rectangle& rStateRect ) - { - WinBits nWinStyle = GetStyle(); - 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(); - } - public: - CBCntrlTriState( Window* pParent, WinBits nStyle = 0 ) : TriStateBox( pParent, nStyle ) {} - CBCntrlTriState( Window* pParent, const ResId& rResId ) : TriStateBox( pParent, rResId ) {} - }; - CheckBoxControl::CheckBoxControl(Window* pParent, WinBits nWinStyle) :Control(pParent, nWinStyle) { @@ -289,7 +267,7 @@ namespace svt EnableChildTransparentMode(); - pBox = new CBCntrlTriState(this,WB_CENTER|WB_VCENTER); + pBox = new TriStateBox(this,WB_CENTER|WB_VCENTER); pBox->EnableChildTransparentMode(); pBox->SetPaintTransparent( sal_True ); pBox->SetClickHdl( LINK( this, CheckBoxControl, OnClick ) ); diff --git a/vcl/inc/vcl/button.hxx b/vcl/inc/vcl/button.hxx index 0fd0bcf..719feaa 100644 --- a/vcl/inc/vcl/button.hxx +++ b/vcl/inc/vcl/button.hxx @@ -406,6 +406,7 @@ public: class VCL_DLLPUBLIC CheckBox : public Button { +private: Rectangle maStateRect; Rectangle maMouseRect; TriState meState; @@ -424,7 +425,7 @@ class VCL_DLLPUBLIC CheckBox : public Button 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 &); @@ -432,19 +433,15 @@ 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 ); - virtual void FillLayoutData() const; - virtual const Font& + SAL_DLLPRIVATE virtual void FillLayoutData() const; + SAL_DLLPRIVATE virtual const Font& GetCanonicalFont( const StyleSettings& _rStyle ) const; - virtual const Color& + SAL_DLLPRIVATE virtual const Color& GetCanonicalTextColor( const StyleSettings& _rStyle ) const; - virtual void ImplDrawCheckBoxState(); + SAL_DLLPRIVATE 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 406377b..75c28da 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -3261,9 +3261,12 @@ void CheckBox::ImplDraw( OutputDevice* pDev, sal_uLong nDrawFlags, } else { - // allow specific handling of WB_CENTER, WB_LEFT & WB_RIGHT by - // by subclasses - ImplHandleHoriAlign( rPos, rSize, rImageSize, rStateRect ); + 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(); if ( nWinStyle & WB_VCENTER ) rStateRect.Top() = rPos.Y()+((rSize.Height()-rImageSize.Height())/2); else if ( nWinStyle & WB_BOTTOM ) @@ -3305,15 +3308,6 @@ 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(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits