- friend class wxDataViewMainWindow;
- friend class wxDataViewHeaderWindow;
- wxDataViewListModelNotifier *m_notifier;
- wxDataViewMainWindow *m_clientArea;
- wxDataViewHeaderWindow *m_headerArea;
+ virtual wxDataViewItem DoGetCurrentItem() const;
+ virtual void DoSetCurrentItem(const wxDataViewItem& item);
+
+ void InvalidateColBestWidths();
+ void InvalidateColBestWidth(int idx);
+ void UpdateColWidths();
+
+ wxDataViewColumnList m_cols;
+ // cached column best widths information, values are for
+ // respective columns from m_cols and the arrays have same size
+ struct CachedColWidthInfo
+ {
+ CachedColWidthInfo() : width(0), dirty(true) {}
+ int width; // cached width or 0 if not computed
+ bool dirty; // column was invalidated, header needs updating
+ };
+ wxVector<CachedColWidthInfo> m_colsBestWidths;
+ // This indicates that at least one entry in m_colsBestWidths has 'dirty'
+ // flag set. It's cheaper to check one flag in OnInternalIdle() than to
+ // iterate over m_colsBestWidths to check if anything needs to be done.
+ bool m_colsDirty;
+
+ wxDataViewModelNotifier *m_notifier;
+ wxDataViewMainWindow *m_clientArea;
+ wxDataViewHeaderWindow *m_headerArea;
+
+ // user defined color to draw row lines, may be invalid
+ wxColour m_alternateRowColour;
+
+ // the index of the column currently used for sorting or -1
+ int m_sortingColumnIdx;