void wxDataViewVirtualListModel::RowInserted( unsigned int before )
{
m_lastIndex++;
- wxDataViewItem item( wxUIntToPtr(before) );
+ wxDataViewItem item( wxUIntToPtr(before+1) );
ItemAdded( wxDataViewItem(0), item );
}
void wxDataViewVirtualListModel::RowAppended()
{
m_lastIndex++;
- wxDataViewItem item( wxUIntToPtr(m_lastIndex) );
+ wxDataViewItem item( wxUIntToPtr(m_lastIndex+1) );
ItemAdded( wxDataViewItem(0), item );
}
void wxDataViewVirtualListModel::RowDeleted( unsigned int row )
{
- wxDataViewItem item( wxUIntToPtr(row) );
+ wxDataViewItem item( wxUIntToPtr(row+1) );
wxDataViewModel::ItemDeleted( wxDataViewItem(0), item );
m_lastIndex++;
}
unsigned int i;
for (i = 0; i < sorted.GetCount(); i++)
{
- wxDataViewItem item( wxUIntToPtr(sorted[i]) );
+ wxDataViewItem item( wxUIntToPtr(sorted[i]+1) );
array.Add( item );
}
wxDataViewModel::ItemsDeleted( wxDataViewItem(0), array );
unsigned int wxDataViewVirtualListModel::GetRow( const wxDataViewItem &item ) const
{
- return wxPtrToUInt( item.GetID() );
+ return wxPtrToUInt( item.GetID() ) -1;
}
wxDataViewItem wxDataViewVirtualListModel::GetItem( unsigned int row ) const
{
- return wxDataViewItem( wxUIntToPtr(row) );
+ return wxDataViewItem( wxUIntToPtr(row+1) );
}
bool wxDataViewVirtualListModel::HasDefaultCompare() const
unsigned int WXUNUSED(column),
bool ascending) const
{
- unsigned int pos1 = wxPtrToUInt(item1.GetID());
- unsigned int pos2 = wxPtrToUInt(item2.GetID());
+ unsigned int pos1 = wxPtrToUInt(item1.GetID())-1;
+ unsigned int pos2 = wxPtrToUInt(item2.GetID())-1;
if (ascending)
return pos1 - pos2;
}
else
{
- dataitem = wxDataViewItem( wxUIntToPtr(item) );
+ dataitem = wxDataViewItem( wxUIntToPtr(item+1) );
}
model->GetValue( value, dataitem, col->GetModelColumn());
bool wxDataViewMainWindow::ItemAdded(const wxDataViewItem & parent, const wxDataViewItem & item)
{
- if (!m_root)
+ if (IsVirtualList())
{
m_count++;
UpdateDisplay();
static void DestroyTreeHelper( wxDataViewTreeNode * node);
bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent,
- const wxDataViewItem& item)
+ const wxDataViewItem& item)
{
- if (!m_root)
+ if (IsVirtualList())
{
m_count--;
if( m_currentRow > GetRowCount() )
m_currentRow = m_count - 1;
+ // TODO: why empty the entire selection?
m_selection.Empty();
UpdateDisplay();
wxDataViewItem wxDataViewMainWindow::GetItemByRow(unsigned int row) const
{
- if (!m_root)
+ if (IsVirtualList())
{
- return wxDataViewItem( wxUIntToPtr(row) );
+ return wxDataViewItem( wxUIntToPtr(row+1) );
}
else
{
RowToItemJob job( row, -2 );
Walker( m_root , job );
- return job.GetResult();
+ wxDataViewItem res = job.GetResult();
+// wxPrintf( "row %d, item %d\n", row, (int) res.GetID() );
+ return res;
}
}
int wxDataViewMainWindow::RecalculateCount()
{
- if (!m_root)
+ if (IsVirtualList())
{
wxDataViewIndexListModel *list_model =
(wxDataViewIndexListModel*) GetOwner()->GetModel();
if( model == NULL )
return -1;
- if (!m_root)
+ if (IsVirtualList())
{
- return wxPtrToUInt( item.GetID() );
+ return wxPtrToUInt( item.GetID() ) -1;
}
else
{