BEGIN_EVENT_TABLE(wxListbook, wxBookCtrl)
EVT_SIZE(wxListbook::OnSize)
-
EVT_LIST_ITEM_SELECTED(wxID_LISTBOOKLISTVIEW, wxListbook::OnListSelected)
END_EVENT_TABLE()
void wxListbook::Init()
{
m_list = NULL;
+#if wxUSE_LINE_IN_LISTBOOK
m_line = NULL;
+#endif // wxUSE_LINE_IN_LISTBOOK
m_selection = wxNOT_FOUND;
}
#endif // __WXMAC__/!__WXMAC__
}
+ // no border for this control, it doesn't look nice together with
+ // wxListCtrl border
+ style &= ~wxBORDER_MASK;
+ style |= wxBORDER_NONE;
+
if ( !wxControl::Create(parent, id, pos, size, style,
wxDefaultValidator, name) )
return false;
wxID_LISTBOOKLISTVIEW,
wxDefaultPosition,
wxDefaultSize,
- wxBORDER_NONE | wxLC_ICON | wxLC_SINGLE_SEL |
+ wxLC_ICON | wxLC_SINGLE_SEL |
(IsVertical() ? wxLC_ALIGN_LEFT : wxLC_ALIGN_TOP)
);
+#if wxUSE_LINE_IN_LISTBOOK
m_line = new wxStaticLine
(
this,
wxDefaultSize,
IsVertical() ? wxLI_HORIZONTAL : wxLI_VERTICAL
);
-
+#endif // wxUSE_LINE_IN_LISTBOOK
+
+#ifdef __WXMSW__
+ // On XP with themes enabled the GetViewRect used in GetListSize to
+ // determine the space needed for the list view will incorrectly return
+ // (0,0,0,0) the first time. So send a pending event so OnSize wiull be
+ // called again after the window is ready to go. Technically we don't
+ // need to do this on non-XP windows, but if things are already sized
+ // correctly then nothing changes and so there is no harm.
+ wxSizeEvent evt;
+ GetEventHandler()->AddPendingEvent(evt);
+#endif
return true;
}
wxRect wxListbook::GetPageRect() const
{
- const wxSize sizeList = GetListSize();
+ const wxSize sizeList = m_list->GetSize();
wxRect rectPage(wxPoint(0, 0), GetClientSize());
switch ( GetWindowStyle() & wxLB_ALIGN_MASK )
break;
}
- m_list->SetSize(posList.x, posList.y, sizeList.x, sizeList.y);
+ m_list->Move(posList.x, posList.y);
+ m_list->SetClientSize(sizeList.x, sizeList.y);
+#if wxUSE_LINE_IN_LISTBOOK
if ( m_line )
{
wxRect rectLine(wxPoint(0, 0), sizeClient);
m_line->SetSize(rectLine);
}
+#endif // wxUSE_LINE_IN_LISTBOOK
// we should always have some selection if possible
if ( m_selection == wxNOT_FOUND && GetPageCount() )