If there is a sizer then use it's calculated minimum in wxStaticBox::DoGetBestSize

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2012-06-05 21:26:53 +00:00
parent 5eeccdd52c
commit d18eb918f4

View File

@@ -118,6 +118,9 @@ WXDWORD wxStaticBox::MSWGetStyle(long style, WXDWORD *exstyle) const
wxSize wxStaticBox::DoGetBestSize() const
{
wxSize best;
// Calculate the size needed by the label
int cx, cy;
wxGetCharSize(GetHWND(), &cx, &cy, GetFont());
@@ -127,8 +130,19 @@ wxSize wxStaticBox::DoGetBestSize() const
wBox += 3*cx;
int hBox = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
wxSize best(wBox, hBox);
CacheBestSize(best);
// If there is a sizer then the base best size is the sizer's minimum
if (GetSizer() != NULL)
{
wxSize cm(GetSizer()->CalcMin());
best = ClientToWindowSize(cm);
// adjust for a long label if needed
best.x = wxMax(best.x, wBox);
}
// otherwise the best size falls back to the label size
else
{
best = wxSize(wBox, hBox);
}
return best;
}