Make multiline checkboxes wider in wxMSW to avoid word wrap.
At least for some versions of Windows (Server 2003 with classic look and feel) the native checkboxes auto wrapped the label as it wrongly considered that the width we specified for it was not big enough. Compensate for this by making the checkbox wider -- this is just a hack but still better than corrupting the checkbox display. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
a97f71fa60
commit
35f92de300
@ -147,6 +147,19 @@ wxSize wxCheckBox::DoGetBestSize() const
|
||||
dc.GetMultiLineTextExtent(GetLabelText(str), &wCheckbox, &hCheckbox);
|
||||
wCheckbox += s_checkSize + GetCharWidth();
|
||||
|
||||
if ( ::GetWindowLong(GetHwnd(), GWL_STYLE) & BS_MULTILINE )
|
||||
{
|
||||
// We need to make the checkbox even wider in this case because
|
||||
// otherwise it wraps lines automatically and not only on "\n"s as
|
||||
// we need and this makes the size computed here wrong resulting in
|
||||
// checkbox contents being truncated when it's actually displayed.
|
||||
// Without this hack simple checkbox with "Some thing\n and more"
|
||||
// label appears on 3 lines, not 2, under Windows 2003 using
|
||||
// classic look and feel (although it works fine under Windows 7,
|
||||
// with or without themes).
|
||||
wCheckbox += s_checkSize;
|
||||
}
|
||||
|
||||
if ( hCheckbox < s_checkSize )
|
||||
hCheckbox = s_checkSize;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user