Add wxDataViewCtrl::SetRowHeight() and provide its generic implementation.

Allow changing the (fixed) row height without using wxDV_VARIABLE_LINE_HEIGHT
which may slow down the control display too much.

The new method is not implemented for the native GTK and OS X implementations
yet but should be simple to implement there.

See #12749.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-06-07 22:49:56 +00:00
parent 208f99c3e3
commit bbfd454841
4 changed files with 33 additions and 1 deletions

View File

@@ -700,7 +700,9 @@ public:
const wxDataViewColumn *column = NULL ) = 0; const wxDataViewColumn *column = NULL ) = 0;
virtual void HitTest( const wxPoint & point, wxDataViewItem &item, wxDataViewColumn* &column ) const = 0; virtual void HitTest( const wxPoint & point, wxDataViewItem &item, wxDataViewColumn* &column ) const = 0;
virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const = 0; virtual wxRect GetItemRect( const wxDataViewItem & item, const wxDataViewColumn *column = NULL ) const = 0;
virtual bool SetRowHeight( int WXUNUSED(rowHeight) ) { return false; }
virtual void StartEditor( const wxDataViewItem & WXUNUSED(item), virtual void StartEditor( const wxDataViewItem & WXUNUSED(item),
unsigned int WXUNUSED(column) ) unsigned int WXUNUSED(column) )
{ } { }

View File

@@ -172,6 +172,8 @@ public:
virtual wxRect GetItemRect( const wxDataViewItem & item, virtual wxRect GetItemRect( const wxDataViewItem & item,
const wxDataViewColumn *column = NULL ) const; const wxDataViewColumn *column = NULL ) const;
virtual bool SetRowHeight( int rowHeight );
virtual void Expand( const wxDataViewItem & item ); virtual void Expand( const wxDataViewItem & item );
virtual void Collapse( const wxDataViewItem & item ); virtual void Collapse( const wxDataViewItem & item );
virtual bool IsExpanded( const wxDataViewItem & item ) const; virtual bool IsExpanded( const wxDataViewItem & item ) const;

View File

@@ -1113,6 +1113,22 @@ public:
This method only has effect if multiple selections are allowed. This method only has effect if multiple selections are allowed.
*/ */
virtual void UnselectAll(); virtual void UnselectAll();
/**
Sets the row height.
This function can only be used when all rows have the same height, i.e.
when wxDV_VARIABLE_LINE_HEIGHT flag is not used.
Currently this is implemented in the generic version only and nothing
is done (and @false returned) when using the native GTK or OS X
versions.
@return @true if the line height was changed or @false otherwise.
@since 2.9.2
*/
virtual bool SetRowHeight(int rowHeight);
}; };

View File

@@ -532,6 +532,8 @@ public:
int GetLineHeight( unsigned int row ) const; // m_lineHeight in fixed mode int GetLineHeight( unsigned int row ) const; // m_lineHeight in fixed mode
int GetLineAt( unsigned int y ) const; // y / m_lineHeight in fixed mode int GetLineAt( unsigned int y ) const; // y / m_lineHeight in fixed mode
void SetRowHeight( int lineHeight ) { m_lineHeight = lineHeight; }
// Some useful functions for row and item mapping // Some useful functions for row and item mapping
wxDataViewItem GetItemByRow( unsigned int row ) const; wxDataViewItem GetItemByRow( unsigned int row ) const;
int GetRowByItem( const wxDataViewItem & item ) const; int GetRowByItem( const wxDataViewItem & item ) const;
@@ -4124,6 +4126,16 @@ unsigned int wxDataViewCtrl::GetColumnCount() const
return m_cols.GetCount(); return m_cols.GetCount();
} }
bool wxDataViewCtrl::SetRowHeight( int lineHeight )
{
if ( !m_clientArea )
return false;
m_clientArea->SetRowHeight(lineHeight);
return true;
}
wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int idx ) const wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int idx ) const
{ {
return m_cols[idx]; return m_cols[idx];