summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-07-03 11:34:56 +0100
committerCaolán McNamara <caolanm@redhat.com>2013-07-03 12:46:30 +0100
commite8f34963459c973d681055d708166d43079b7eb7 (patch)
treecefc57848137c608bb857a3bc4762ab3fe12f8af /vcl
parent477f5880039830885b12831ba2995e63953384aa (diff)
adjust ComboBox optimal size for non-dropdown case
Change-Id: Iedcd27e1e40e4d69a9776ba23ec88981fe031710
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/control/combobox.cxx27
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 );