use newly added GetViewRect() instead of trying to guess the list ctrl size ourselves
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -103,7 +103,8 @@ wxListbook::Create(wxWindow *parent,
|
|||||||
wxID_LISTBOOKLISTVIEW,
|
wxID_LISTBOOKLISTVIEW,
|
||||||
wxDefaultPosition,
|
wxDefaultPosition,
|
||||||
wxDefaultSize,
|
wxDefaultSize,
|
||||||
wxLC_ICON | wxLC_SINGLE_SEL
|
wxBORDER_NONE | wxLC_ICON | wxLC_SINGLE_SEL |
|
||||||
|
(IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP)
|
||||||
);
|
);
|
||||||
|
|
||||||
m_line = new wxStaticLine
|
m_line = new wxStaticLine
|
||||||
@@ -124,53 +125,19 @@ wxListbook::Create(wxWindow *parent,
|
|||||||
|
|
||||||
wxSize wxListbook::GetListSize() const
|
wxSize wxListbook::GetListSize() const
|
||||||
{
|
{
|
||||||
const wxSize sizeClient = GetClientSize();
|
const wxSize sizeClient = GetClientSize(),
|
||||||
|
sizeList = m_list->GetViewRect().GetSize();
|
||||||
// we need to find the longest/tallest label
|
|
||||||
wxCoord widthMax = 0,
|
|
||||||
heightMax = 0;
|
|
||||||
const int count = m_list->GetItemCount();
|
|
||||||
if ( count )
|
|
||||||
{
|
|
||||||
for ( int i = 0; i < count; i++ )
|
|
||||||
{
|
|
||||||
wxRect r;
|
|
||||||
m_list->GetItemRect(i, r);
|
|
||||||
|
|
||||||
wxCoord w = r.width,
|
|
||||||
h = r.height;
|
|
||||||
|
|
||||||
if ( w > widthMax )
|
|
||||||
widthMax = w;
|
|
||||||
if ( h > heightMax )
|
|
||||||
heightMax = h;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wxSize size;
|
wxSize size;
|
||||||
if ( IsVertical() )
|
if ( IsVertical() )
|
||||||
{
|
{
|
||||||
size.x = sizeClient.x;
|
size.x = sizeClient.x;
|
||||||
size.y = heightMax;
|
size.y = sizeList.y;
|
||||||
|
|
||||||
if ( widthMax >= sizeClient.x )
|
|
||||||
{
|
|
||||||
// account for the scrollbar
|
|
||||||
size.y += wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else // left/right aligned
|
else // left/right aligned
|
||||||
{
|
{
|
||||||
// +20 is due to an apparent bug in wxListCtrl::GetItemRect() but I
|
size.x = sizeList.x;
|
||||||
// can't fix it there right now so just add a fudge here...
|
|
||||||
size.x = widthMax + 20;
|
|
||||||
size.y = sizeClient.y;
|
size.y = sizeClient.y;
|
||||||
|
|
||||||
if ( heightMax >= sizeClient.y )
|
|
||||||
{
|
|
||||||
// account for the scrollbar
|
|
||||||
size.x += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return size;
|
return size;
|
||||||
|
Reference in New Issue
Block a user