Fix crash in wxListbook if image list is assigned after adding pages.
The generic wxListCtrl didn't properly support switching between report and non-report modes without invalidating the control contents, the required in non report view geometry info pointers were not allocated when the control was switched to a, say, list mode and not created in it. Fix this by updating all list control lines when the report mode changes. Closes #11698. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1650,6 +1650,15 @@ wxListMainWindow::~wxListMainWindow()
|
||||
delete m_renameTimer;
|
||||
}
|
||||
|
||||
void wxListMainWindow::SetReportView(bool inReportView)
|
||||
{
|
||||
const size_t count = m_lines.size();
|
||||
for ( size_t n = 0; n < count; n++ )
|
||||
{
|
||||
m_lines[n].SetReportView(inReportView);
|
||||
}
|
||||
}
|
||||
|
||||
void wxListMainWindow::CacheLineData(size_t line)
|
||||
{
|
||||
wxGenericListCtrl *listctrl = GetListCtrl();
|
||||
@@ -4443,12 +4452,22 @@ void wxGenericListCtrl::SetSingleStyle( long style, bool add )
|
||||
|
||||
void wxGenericListCtrl::SetWindowStyleFlag( long flag )
|
||||
{
|
||||
const bool wasInReportView = HasFlag(wxLC_REPORT);
|
||||
|
||||
// update the window style first so that the header is created or destroyed
|
||||
// corresponding to the new style
|
||||
wxWindow::SetWindowStyleFlag( flag );
|
||||
|
||||
if (m_mainWin)
|
||||
{
|
||||
const bool inReportView = (flag & wxLC_REPORT) != 0;
|
||||
if ( inReportView != wasInReportView )
|
||||
{
|
||||
// we need to notify the main window about this change as it must
|
||||
// update its data structures
|
||||
m_mainWin->SetReportView(inReportView);
|
||||
}
|
||||
|
||||
// m_mainWin->DeleteEverything(); wxMSW doesn't do that
|
||||
|
||||
CreateOrDestroyHeaderWindowAsNeeded();
|
||||
|
Reference in New Issue
Block a user