+ 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());
+
+ 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 )
+ {
+ style |= GetListCtrlIconViewFlags();
+ }
+ else // no image list
+ {
+ style |= GetListCtrlReportViewFlags();
+ }
+
+ list->SetWindowStyleFlag(style);
+ 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);
+ }