+ // 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->SetWindowStyleFlag(style |
+ (IsVertical() ? wxLC_ALIGN_LEFT
+ : wxLC_ALIGN_TOP) |
+ wxLC_ICON);
+ }
+ else // no image list
+ {
+ list->SetWindowStyleFlag(style | wxLC_REPORT | wxLC_NO_HEADER);
+ 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);
+ }
+
+ list->SetImageList(imageList, wxIMAGE_LIST_NORMAL);
+
+ wxBookCtrlBase::SetImageList(imageList);