diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-07-03 11:34:56 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2013-07-03 12:46:30 +0100 |
commit | e8f34963459c973d681055d708166d43079b7eb7 (patch) | |
tree | cefc57848137c608bb857a3bc4762ab3fe12f8af /vcl | |
parent | 477f5880039830885b12831ba2995e63953384aa (diff) |
adjust ComboBox optimal size for non-dropdown case
Change-Id: Iedcd27e1e40e4d69a9776ba23ec88981fe031710
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/control/combobox.cxx | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/vcl/source/control/combobox.cxx b/vcl/source/control/combobox.cxx index e89bc536ea26..35f2e6f0ff05 100644 --- a/vcl/source/control/combobox.cxx +++ b/vcl/source/control/combobox.cxx @@ -1069,27 +1069,30 @@ Size ComboBox::CalcMinimumSize() const if (!mpImplLB) return aSz; - if ( !IsDropDownBox() ) + if (!IsDropDownBox()) { aSz = mpImplLB->CalcSize( mpImplLB->GetEntryList()->GetEntryCount() ); aSz.Height() += mnDDHeight; + aSz.Width() = std::max(aSz.Width(), Edit::CalcMinimumSizeForText(GetText()).Width()); } else { - aSz.Height() = Edit::CalcMinimumSizeForText(GetText()).Height(); + aSz = Edit::CalcMinimumSizeForText(GetText()); + } - aSz.Width() = mpImplLB->GetMaxEntryWidth(); - if (m_nMaxWidthChars != -1) - { - long nMaxWidth = m_nMaxWidthChars * approximate_char_width(); - aSz.Width() = std::min(aSz.Width(), nMaxWidth); - } - aSz.Width() += getMaxWidthScrollBarAndDownButton(); - ComboBoxBounds aBounds(calcComboBoxDropDownComponentBounds( - Size(0xFFFF, 0xFFFF), Size(0xFFFF, 0xFFFF))); - aSz.Width() += aBounds.aSubEditPos.X()*2; + if (m_nMaxWidthChars != -1) + { + long nMaxWidth = m_nMaxWidthChars * approximate_char_width(); + aSz.Width() = std::min(aSz.Width(), nMaxWidth); } + if (IsDropDownBox()) + aSz.Width() += getMaxWidthScrollBarAndDownButton(); + + ComboBoxBounds aBounds(calcComboBoxDropDownComponentBounds( + Size(0xFFFF, 0xFFFF), Size(0xFFFF, 0xFFFF))); + aSz.Width() += aBounds.aSubEditPos.X()*2; + aSz.Width() += ImplGetExtraOffset() * 2; aSz = CalcWindowSize( aSz ); |