Fix wxMSW wxCheckListBox appearance when using larger than normal fonts.

Update the height of the items when changing the font to ensure that there is
enough space to show the item text when using fonts larger than normal.

Closes #3577.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@76671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-06-09 00:53:50 +00:00
parent ffd79e6858
commit 4d63d4da42
2 changed files with 15 additions and 8 deletions

View File

@@ -669,6 +669,7 @@ wxMSW:
- Fix wxRichMessageDialog return value for dialog with only "OK" button.
- Fix precision loss in wxGraphicsContext::{Draw,Stroke}Lines() (tibo_).
- Fix destroying the font from wxFont::GetFaceName() in some cases (aebailey82).
- Fix wxCheckListBox appearance when using larger fonts (Igor Korot).
wxOSX:

View File

@@ -37,7 +37,13 @@
#if wxUSE_OWNER_DRAWN
#include "wx/ownerdrw.h"
#endif
namespace
{
// space beneath/above each row in pixels
const int LISTBOX_EXTRA_SPACE = 1;
} // anonymous namespace
#endif // wxUSE_OWNER_DRAWN
// ============================================================================
// list box item declaration and implementation
@@ -642,6 +648,13 @@ bool wxListBox::SetFont(const wxFont &font)
const unsigned count = m_aItems.GetCount();
for ( unsigned i = 0; i < count; i++ )
m_aItems[i]->SetFont(font);
// Non owner drawn list boxes update the item height on their own, but
// we need to do it manually in the owner drawn case.
wxClientDC dc(this);
dc.SetFont(font);
SendMessage(GetHwnd(), LB_SETITEMHEIGHT, 0,
dc.GetCharHeight() + 2 * LISTBOX_EXTRA_SPACE);
}
wxListBoxBase::SetFont(font);
@@ -684,13 +697,6 @@ bool wxListBox::RefreshItem(size_t n)
// drawing
// -------
namespace
{
// space beneath/above each row in pixels
static const int LISTBOX_EXTRA_SPACE = 1;
} // anonymous namespace
// the height is the same for all items
// TODO should be changed for LBS_OWNERDRAWVARIABLE style listboxes