diff --git a/include/wx/generic/dataview.h b/include/wx/generic/dataview.h index c2cf345a4c..89b0461623 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; diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 21c53c66da..716d4b9bf9 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -2970,15 +2970,20 @@ wxDataViewTreeNode * wxDataViewMainWindow::GetTreeNodeByRow(unsigned int row) co wxDataViewItem wxDataViewMainWindow::GetItemByRow(unsigned int row) const { + wxDataViewItem item; if (IsVirtualList()) { - return wxDataViewItem( wxUIntToPtr(row+1) ); + if ( row < GetRowCount() ) + item = wxDataViewItem(wxUIntToPtr(row+1)); } else { wxDataViewTreeNode *node = GetTreeNodeByRow(row); - return node ? node->GetItem() : wxDataViewItem(); + if ( node ) + item = node->GetItem(); } + + return item; } bool