X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4bdc891f548dce13863001de51327c7f9abaea0d..4dca3e02a667ce25c420543001fc34dde94dfa1a:/include/wx/generic/dataview.h diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index c2cf345a4c..9115dcb3ca 100644 --- a/include/wx/generic/dataview.h +++ b/include/wx/generic/dataview.h @@ -199,6 +199,8 @@ public: protected: virtual void EnsureVisible( int row, int column ); + // Notice that row here may be invalid (i.e. >= GetRowCount()), this is not + // an error and this function simply returns an invalid item in this case. virtual wxDataViewItem GetItemByRow( unsigned int row ) const; virtual int GetRowByItem( const wxDataViewItem & item ) const; @@ -240,10 +242,18 @@ private: void UpdateColWidths(); wxDataViewColumnList m_cols; - // cached column best widths or 0 if not computed, values are for + // cached column best widths information, values are for // respective columns from m_cols and the arrays have same size - wxVector m_colsBestWidths; - // m_colsBestWidths partially invalid, needs recomputing + 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 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;