delete m_gi;
}
+ // called by the owner when it toggles report view
+ void SetReportView(bool inReportView)
+ {
+ // we only need m_gi when we're not in report view so update as needed
+ if ( inReportView )
+ {
+ delete m_gi;
+ m_gi = NULL;
+ }
+ else
+ {
+ m_gi = new GeometryInfo;
+ }
+ }
+
// are we in report mode?
inline bool InReportView() const;
virtual ~wxListMainWindow();
+ // called by the main control when its mode changes
+ void SetReportView(bool inReportView);
+
+ // helper to simplify testing for wxLC_XXX flags
bool HasFlag(int flag) const { return m_parent->HasFlag(flag); }
// return true if this is a virtual list control
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();
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();