don't readd items in SetImageList() after changing the control mode, they are supposed to be preserved by wxListCtrl itself (correction for #9484)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -304,22 +304,8 @@ void wxListbook::SetImageList(wxImageList *imageList)
|
|||||||
// If imageList presence has changed, we update the list control view
|
// If imageList presence has changed, we update the list control view
|
||||||
if ( (imageList != NULL) != (GetImageList() != NULL) )
|
if ( (imageList != NULL) != (GetImageList() != NULL) )
|
||||||
{
|
{
|
||||||
wxArrayString labels;
|
// Preserve the selection which is lost when changing the mode
|
||||||
labels.Alloc(GetPageCount());
|
|
||||||
|
|
||||||
wxArrayInt imageIds;
|
|
||||||
imageIds.Alloc(GetPageCount());
|
|
||||||
|
|
||||||
const int oldSel = GetSelection();
|
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
|
// Update the style to use icon view for images, report view otherwise
|
||||||
long style = wxLC_SINGLE_SEL;
|
long style = wxLC_SINGLE_SEL;
|
||||||
@@ -336,12 +322,6 @@ void wxListbook::SetImageList(wxImageList *imageList)
|
|||||||
if ( !imageList )
|
if ( !imageList )
|
||||||
list->InsertColumn(0, wxT("Pages"));
|
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
|
// Restore selection
|
||||||
if ( oldSel != wxNOT_FOUND )
|
if ( oldSel != wxNOT_FOUND )
|
||||||
SetSelection(oldSel);
|
SetSelection(oldSel);
|
||||||
|
Reference in New Issue
Block a user