X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eb7df491e1781dea9001c6c5052d36566ba9ba90..e7aa703d4bdce1614d019b46867bac2a266b9cfe:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 6806d4e1de..716d4b9bf9 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -637,7 +637,7 @@ public: // the displaying number of the tree are changing along with the // expanding/collapsing of the tree nodes unsigned int GetLastVisibleRow(); - unsigned int GetRowCount(); + unsigned int GetRowCount() const; const wxDataViewSelection& GetSelections() const { return m_selection; } void SetSelections( const wxDataViewSelection & sel ) @@ -706,7 +706,7 @@ public: void StartEditing(const wxDataViewItem& item, const wxDataViewColumn* col); private: - int RecalculateCount(); + int RecalculateCount() const; // Return false only if the event was vetoed by its handler. bool SendExpanderEvent(wxEventType type, const wxDataViewItem& item); @@ -2576,12 +2576,14 @@ unsigned int wxDataViewMainWindow::GetLastVisibleRow() return wxMin( GetRowCount()-1, row ); } -unsigned int wxDataViewMainWindow::GetRowCount() +unsigned int wxDataViewMainWindow::GetRowCount() const { if ( m_count == -1 ) { - m_count = RecalculateCount(); - UpdateDisplay(); + wxDataViewMainWindow* const + self = const_cast(this); + self->m_count = RecalculateCount(); + self->UpdateDisplay(); } return m_count; } @@ -2968,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 @@ -3297,7 +3304,7 @@ wxRect wxDataViewMainWindow::GetItemRect( const wxDataViewItem & item, return itemRect; } -int wxDataViewMainWindow::RecalculateCount() +int wxDataViewMainWindow::RecalculateCount() const { if (IsVirtualList()) {