IMPLEMENT_DYNAMIC_CLASS(wxListbook, wxBookCtrlBase)
-wxDEFINE_EVENT( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, wxBookCtrlEvent )
-wxDEFINE_EVENT( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, wxBookCtrlEvent )
+wxDEFINE_EVENT( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGING, wxBookCtrlEvent );
+wxDEFINE_EVENT( wxEVT_COMMAND_LISTBOOK_PAGE_CHANGED, wxBookCtrlEvent );
BEGIN_EVENT_TABLE(wxListbook, wxBookCtrlBase)
EVT_SIZE(wxListbook::OnSize)
void wxListbook::SetImageList(wxImageList *imageList)
{
+#ifdef CAN_USE_REPORT_VIEW
wxListView * const list = GetListView();
-#ifdef CAN_USE_REPORT_VIEW
// If imageList presence has changed, we update the list control view
if ( (imageList != NULL) != (GetImageList() != NULL) )
{
- wxArrayString labels;
- labels.Alloc(GetPageCount());
-
- wxArrayInt imageIds;
- imageIds.Alloc(GetPageCount());
-
+ // Preserve the selection which is lost when changing the mode
const int oldSel = GetSelection();
- size_t i;
-
- // Grab snapshot of all list control items before changing the window
- // style (which deletes the items)
- for ( i = 0; i < GetPageCount(); i++ )
- {
- labels.Add(GetPageText(i));
- imageIds.Add(GetPageImage(i));
- }
// Update the style to use icon view for images, report view otherwise
long style = wxLC_SINGLE_SEL;
if ( !imageList )
list->InsertColumn(0, wxT("Pages"));
- // Add back the list control items
- for ( i = 0; i < GetPageCount(); i++ )
- {
- list->InsertItem(i, labels[i], imageIds[i]);
- }
-
// Restore selection
if ( oldSel != wxNOT_FOUND )
SetSelection(oldSel);