diff options
-rw-r--r-- | include/vcl/button.hxx | 2 | ||||
-rw-r--r-- | toolkit/source/awt/vclxwindows.cxx | 21 | ||||
-rw-r--r-- | vcl/source/control/button.cxx | 4 |
3 files changed, 16 insertions, 11 deletions
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx index b0b2884c9ad0..f37b714faf9f 100644 --- a/include/vcl/button.hxx +++ b/include/vcl/button.hxx @@ -350,7 +350,7 @@ public: static Image GetRadioImage( const AllSettings& rSettings, DrawButtonFlags nFlags ); - Size CalcMinimumSize() const; + Size CalcMinimumSize( long nMaxWidth = 0 ) const; virtual Size GetOptimalSize() const override; void SetToggleHdl( const Link<RadioButton&,void>& rLink ) { maToggleHdl = rLink; } diff --git a/toolkit/source/awt/vclxwindows.cxx b/toolkit/source/awt/vclxwindows.cxx index 5645bf099288..c356aba16ee1 100644 --- a/toolkit/source/awt/vclxwindows.cxx +++ b/toolkit/source/awt/vclxwindows.cxx @@ -941,7 +941,7 @@ css::awt::Size VCLXCheckBox::calcAdjustedSize( const css::awt::Size& rNewSize ) VclPtr< CheckBox > pCheckBox = GetAs< CheckBox >(); if ( pCheckBox ) { - Size aMinSz = pCheckBox->CalcMinimumSize(); + Size aMinSz = pCheckBox->CalcMinimumSize(rNewSize.Width); if ( ( aSz.Width() > aMinSz.Width() ) && ( aSz.Height() < aMinSz.Height() ) ) aSz.setHeight( aMinSz.Height() ); else @@ -1290,7 +1290,7 @@ css::awt::Size VCLXRadioButton::calcAdjustedSize( const css::awt::Size& rNewSize VclPtr< RadioButton > pRadioButton = GetAs< RadioButton >(); if ( pRadioButton ) { - Size aMinSz = pRadioButton->CalcMinimumSize(); + Size aMinSz = pRadioButton->CalcMinimumSize(rNewSize.Width); if ( ( aSz.Width() > aMinSz.Width() ) && ( aSz.Height() < aMinSz.Height() ) ) aSz.setHeight( aMinSz.Height() ); else @@ -3023,13 +3023,18 @@ css::awt::Size VCLXFixedHyperlink::getPreferredSize( ) css::awt::Size VCLXFixedHyperlink::calcAdjustedSize( const css::awt::Size& rNewSize ) { SolarMutexGuard aGuard; + Size aSz( VCLUnoHelper::ConvertToVCLSize( rNewSize )); + VclPtr< FixedText > pFixedText = GetAs< FixedText >(); + if (pFixedText) + { + Size aMinSz = pFixedText->CalcMinimumSize(rNewSize.Width); + if ( ( aSz.Width() > aMinSz.Width() ) && ( aSz.Height() < aMinSz.Height() ) ) + aSz.setHeight( aMinSz.Height() ); + else + aSz = aMinSz; + } - css::awt::Size aSz = rNewSize; - css::awt::Size aMinSz = getMinimumSize(); - if ( aSz.Height != aMinSz.Height ) - aSz.Height = aMinSz.Height; - - return aSz; + return VCLUnoHelper::ConvertToAWTSize(aSz); } void VCLXFixedHyperlink::setProperty( const OUString& PropertyName, const css::uno::Any& Value) diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index f3fedd972a68..a4ae36cffe15 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2814,7 +2814,7 @@ void RadioButton::ImplSetMinimumNWFSize() Pop(); } -Size RadioButton::CalcMinimumSize() const +Size RadioButton::CalcMinimumSize(long nMaxWidth) const { Size aSize; if ( !maImage ) @@ -2838,7 +2838,7 @@ Size RadioButton::CalcMinimumSize() const { bool bTopImage = (GetStyle() & WB_TOP) != 0; - Size aTextSize = GetTextRect( tools::Rectangle( Point(), Size( 0x7fffffff, 0x7fffffff ) ), + Size aTextSize = GetTextRect( tools::Rectangle( Point(), Size( nMaxWidth > 0 ? nMaxWidth : 0x7fffffff, 0x7fffffff ) ), aText, FixedText::ImplGetTextStyle( GetStyle() ) ).GetSize(); aSize.AdjustWidth(2 ); // for focus rect |