// Purpose: wxDataViewCtrl generic implementation header
// Author: Robert Roebling
// Modified By: Bo Yang
-// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
virtual bool IsSortKey() const { return m_sort; }
- virtual void UnsetAsSortKey() { m_sort = false; UpdateDisplay(); }
+ virtual void UnsetAsSortKey();
virtual void SetSortOrder(bool ascending);
virtual void SetFocus();
+ virtual bool SetFont(const wxFont & font);
+
#if wxUSE_DRAG_AND_DROP
virtual bool EnableDragSource( const wxDataFormat &format );
virtual bool EnableDropTarget( const wxDataFormat &format );
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;
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<int> 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<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;