]> git.saurik.com Git - wxWidgets.git/commitdiff
fix MSVC warnings about conversions between pointers and longs
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 23 May 2008 12:18:27 +0000 (12:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 23 May 2008 12:18:27 +0000 (12:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/datavcmn.cpp
src/generic/datavgen.cpp

index 8204cf9391cbfd6724188858386826dedefd5d8c..5edb1147bd3d748e180d94ca9321d9ca4669632b 100644 (file)
@@ -260,38 +260,41 @@ int wxDataViewModel::Compare( const wxDataViewItem &item1, const wxDataViewItem
         wxString str1 = value1.GetString();
         wxString str2 = value2.GetString();
         int res = str1.Cmp( str2 );
-        if (res) return res;
-    } else
-    if (value1.GetType() == wxT("long"))
+        if (res)
+            return res;
+    }
+    else if (value1.GetType() == wxT("long"))
     {
         long l1 = value1.GetLong();
         long l2 = value2.GetLong();
         long res = l1-l2;
-        if (res) return res;
-    } else
-    if (value1.GetType() == wxT("double"))
+        if (res)
+            return res;
+    }
+    else if (value1.GetType() == wxT("double"))
     {
         double d1 = value1.GetDouble();
         double d2 = value2.GetDouble();
-        if (d1 < d2) return 1;
-        if (d1 > d2) return -1;
-    } else
-    if (value1.GetType() == wxT("datetime"))
+        if (d1 < d2)
+            return 1;
+        if (d1 > d2)
+            return -1;
+    }
+    else if (value1.GetType() == wxT("datetime"))
     {
         wxDateTime dt1 = value1.GetDateTime();
         wxDateTime dt2 = value2.GetDateTime();
-        if (dt1.IsEarlierThan(dt2)) return 1;
-        if (dt2.IsEarlierThan(dt1)) return -11;
+        if (dt1.IsEarlierThan(dt2))
+            return 1;
+        if (dt2.IsEarlierThan(dt1))
+            return -11;
     }
 
     // items must be different
-    unsigned long litem1 = (unsigned long) item1.GetID();
-    unsigned long litem2 = (unsigned long) item2.GetID();
+    wxUIntPtr id1 = wxPtrToUInt(item1.GetID()),
+              id2 = wxPtrToUInt(item2.GetID());
 
-    if (!ascending)
-        return litem2-litem2;
-
-    return litem1-litem2;
+    return ascending ? id1 - id2 : id2 - id1;
 }
 
 // ---------------------------------------------------------
@@ -308,11 +311,11 @@ wxDataViewIndexListModel::wxDataViewIndexListModel( unsigned int initial_size )
 {
     // IDs are ordered until an item gets deleted or inserted
     m_ordered = true;
-    
+
     // build initial index
     unsigned int i;
     for (i = 1; i < initial_size+1; i++)
-            m_hash.Add( (void*) i );
+            m_hash.Add( wxUIntToPtr(i) );
     m_lastIndex = initial_size + 1;
 }
 
@@ -323,51 +326,51 @@ wxDataViewIndexListModel::~wxDataViewIndexListModel()
 void wxDataViewIndexListModel::Reset( unsigned int new_size )
 {
     m_hash.Clear();
-    
+
     // IDs are ordered until an item gets deleted or inserted
     m_ordered = true;
-        
+
     // build initial index
     unsigned int i;
     for (i = 1; i < new_size+1; i++)
-            m_hash.Add( (void*) i );
+            m_hash.Add( wxUIntToPtr(i) );
     m_lastIndex = new_size + 1;
-    
+
     wxDataViewModel::Cleared();
 }
 
 void wxDataViewIndexListModel::RowPrepended()
 {
     m_ordered = false;
-    
+
     unsigned int id = m_lastIndex++;
-    m_hash.Insert( (void*) id, 0 );
-    wxDataViewItem item( (void*) id );
+    m_hash.Insert( wxUIntToPtr(id), 0 );
+    wxDataViewItem item( wxUIntToPtr(id) );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewIndexListModel::RowInserted( unsigned int before )
 {
     m_ordered = false;
-    
+
     unsigned int id = m_lastIndex++;
-    m_hash.Insert( (void*) id, before );
-    wxDataViewItem item( (void*) id );
+    m_hash.Insert( wxUIntToPtr(id), before );
+    wxDataViewItem item( wxUIntToPtr(id) );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewIndexListModel::RowAppended()
 {
     unsigned int id = m_lastIndex++;
-    m_hash.Add( (void*) id );
-    wxDataViewItem item( (void*) id );
+    m_hash.Add( wxUIntToPtr(id) );
+    wxDataViewItem item( wxUIntToPtr(id) );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewIndexListModel::RowDeleted( unsigned int row )
 {
     m_ordered = false;
-        
+
     wxDataViewItem item( m_hash[row] );
     wxDataViewModel::ItemDeleted( wxDataViewItem(0), item );
     m_hash.RemoveAt( row );
@@ -377,9 +380,9 @@ void wxDataViewIndexListModel::RowsDeleted( const wxArrayInt &rows )
 {
     wxArrayInt sorted = rows;
     sorted.Sort( my_sort );
-    
+
     m_ordered = false;
-        
+
     wxDataViewItemArray array;
     unsigned int i;
     for (i = 0; i < rows.GetCount(); i++)
@@ -388,7 +391,7 @@ void wxDataViewIndexListModel::RowsDeleted( const wxArrayInt &rows )
             array.Add( item );
     }
     wxDataViewModel::ItemsDeleted( wxDataViewItem(0), array );
-        
+
     for (i = 0; i < sorted.GetCount(); i++)
            m_hash.RemoveAt( sorted[i] );
 }
@@ -410,7 +413,7 @@ unsigned int wxDataViewIndexListModel::GetRow( const wxDataViewItem &item ) cons
             unsigned int pos = wxPtrToUInt( item.GetID() );
             return pos-1;
     }
-    
+
     // assert for not found
     return (unsigned int) m_hash.Index( item.GetID() );
 }
@@ -422,7 +425,7 @@ wxDataViewItem wxDataViewIndexListModel::GetItem( unsigned int row ) const
 }
 
 bool wxDataViewIndexListModel::HasDefaultCompare() const
-{ 
+{
     return !m_ordered;
 }
 
@@ -435,13 +438,13 @@ int wxDataViewIndexListModel::Compare(const wxDataViewItem& item1,
     {
         unsigned int pos1 = wxPtrToUInt(item1.GetID());
         unsigned int pos2 = wxPtrToUInt(item2.GetID());
-        
+
         if (ascending)
             return pos1 - pos2;
-        else 
+        else
             return pos2 - pos1;
     }
-    
+
     if (ascending)
         return GetRow(item1) - GetRow(item2);
 
@@ -485,7 +488,7 @@ unsigned int wxDataViewIndexListModel::GetChildren( const wxDataViewItem &item,
         return 0;
 
     children = m_hash;
-    
+
     return m_hash.GetCount();
 }
 
@@ -507,34 +510,34 @@ wxDataViewVirtualListModel::~wxDataViewVirtualListModel()
 void wxDataViewVirtualListModel::Reset( unsigned int new_size )
 {
     m_lastIndex = new_size-1;
-    
+
     wxDataViewModel::Cleared();
 }
 
 void wxDataViewVirtualListModel::RowPrepended()
 {
     m_lastIndex++;
-    wxDataViewItem item( (void*) 0 );
+    wxDataViewItem item( NULL );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewVirtualListModel::RowInserted( unsigned int before )
 {
     m_lastIndex++;
-    wxDataViewItem item( (void*) before );
+    wxDataViewItem item( wxUIntToPtr(before) );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewVirtualListModel::RowAppended()
 {
     m_lastIndex++;
-    wxDataViewItem item( (void*) m_lastIndex );
+    wxDataViewItem item( wxUIntToPtr(m_lastIndex) );
     ItemAdded( wxDataViewItem(0), item );
 }
 
 void wxDataViewVirtualListModel::RowDeleted( unsigned int row )
 {
-    wxDataViewItem item( (void*) row );
+    wxDataViewItem item( wxUIntToPtr(row) );
     wxDataViewModel::ItemDeleted( wxDataViewItem(0), item );
     m_lastIndex++;
 }
@@ -543,16 +546,16 @@ void wxDataViewVirtualListModel::RowsDeleted( const wxArrayInt &rows )
 {
     wxArrayInt sorted = rows;
     sorted.Sort( my_sort );
-    
+
     wxDataViewItemArray array;
     unsigned int i;
     for (i = 0; i < sorted.GetCount(); i++)
     {
-            wxDataViewItem item( (void*) sorted[i] );
+            wxDataViewItem item( wxUIntToPtr(sorted[i]) );
             array.Add( item );
     }
     wxDataViewModel::ItemsDeleted( wxDataViewItem(0), array );
-    
+
     m_lastIndex -= rows.GetCount();
 }
 
@@ -573,11 +576,11 @@ unsigned int wxDataViewVirtualListModel::GetRow( const wxDataViewItem &item ) co
 
 wxDataViewItem wxDataViewVirtualListModel::GetItem( unsigned int row ) const
 {
-    return wxDataViewItem( (void*) row  );
+    return wxDataViewItem( wxUIntToPtr(row)  );
 }
 
 bool wxDataViewVirtualListModel::HasDefaultCompare() const
-{ 
+{
     return true;
 }
 
@@ -588,10 +591,10 @@ int wxDataViewVirtualListModel::Compare(const wxDataViewItem& item1,
 {
     unsigned int pos1 = wxPtrToUInt(item1.GetID());
     unsigned int pos2 = wxPtrToUInt(item2.GetID());
-        
+
     if (ascending)
        return pos1 - pos2;
-    else 
+    else
        return pos2 - pos1;
 }
 
@@ -672,8 +675,8 @@ const wxDataViewCtrl* wxDataViewRendererBase::GetView() const
 }
 
 class wxKillRef: public wxWindowRef
-{       
-public: 
+{
+public:
    wxKillRef( wxWindow *win ) : wxWindowRef( win ) { }
    virtual void OnObjectDestroy()
    {
@@ -718,7 +721,7 @@ bool wxDataViewRendererBase::StartEditing( const wxDataViewItem &item, wxRect la
 void wxDataViewRendererBase::CancelEditing()
 {
     GetOwner()->GetOwner()->GetMainWindow()->SetFocus();
-    
+
     m_editorCtrl->Hide();
     wxPendingDelete.Append( m_editorCtrl );
 }
@@ -732,7 +735,7 @@ bool wxDataViewRendererBase::FinishEditing()
 
     m_editorCtrl->Hide();
     wxPendingDelete.Append( m_editorCtrl );
-    
+
     if (!Validate(value))
         return false;
 
@@ -1264,7 +1267,7 @@ wxControl* wxDataViewSpinRenderer::CreateEditorCtrl( wxWindow *parent, wxRect la
     wxPoint pt = sc->GetPosition();
     sc->SetSize( pt.x - 4, pt.y - 4, size.x, size.y );
 #endif
-    
+
     return sc;
 }
 
@@ -1599,7 +1602,7 @@ wxDataViewTreeStore::GetValue(wxVariant &variant,
         if (container->IsExpanded() && container->GetExpandedIcon().IsOk())
            icon = container->GetExpandedIcon();
     }
-    
+
     wxDataViewIconText data( node->GetText(), icon );
 
     variant << data;
@@ -1730,15 +1733,15 @@ wxDataViewTreeCtrl::wxDataViewTreeCtrl()
 }
 
 wxDataViewTreeCtrl::wxDataViewTreeCtrl( wxWindow *parent, wxWindowID id,
-           const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator ) 
+           const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator )
 {
     m_imageList = NULL;
     Create( parent, id, pos, size, style, validator );
-    
+
     wxDataViewTreeStore *store = new wxDataViewTreeStore;
     AssociateModel( store );
     store->DecRef();
-    
+
     AppendIconTextColumn(wxString(),0,wxDATAVIEW_CELL_INERT,-1);
 }
 
@@ -1759,16 +1762,16 @@ void wxDataViewTreeCtrl::SetImageList( wxImageList *imagelist )
     if (m_imageList)
         delete m_imageList;
 
-    m_imageList = imagelist;   
+    m_imageList = imagelist;
 }
-    
+
 wxDataViewItem wxDataViewTreeCtrl::AppendItem( const wxDataViewItem& parent,
         const wxString &text, int iconIndex, wxClientData *data )
 {
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     return GetStore()->AppendItem( parent, text, icon, data );
 }
 
@@ -1778,7 +1781,7 @@ wxDataViewItem wxDataViewTreeCtrl::PrependItem( const wxDataViewItem& parent,
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     return GetStore()->PrependItem( parent, text, icon, data );
 }
 
@@ -1788,7 +1791,7 @@ wxDataViewItem wxDataViewTreeCtrl::InsertItem( const wxDataViewItem& parent, con
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     return GetStore()->InsertItem( parent, previous, text, icon, data );
 }
 
@@ -1798,11 +1801,11 @@ wxDataViewItem wxDataViewTreeCtrl::PrependContainer( const wxDataViewItem& paren
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     wxIcon expanded = wxNullIcon;
     if (m_imageList && (expandedIndex != -1))
         expanded = m_imageList->GetIcon( expandedIndex );
-        
+
     return GetStore()->PrependContainer( parent, text, icon, expanded, data );
 }
 
@@ -1812,11 +1815,11 @@ wxDataViewItem wxDataViewTreeCtrl::AppendContainer( const wxDataViewItem& parent
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     wxIcon expanded = wxNullIcon;
     if (m_imageList && (expandedIndex != -1))
         expanded = m_imageList->GetIcon( expandedIndex );
-        
+
     return GetStore()->AppendContainer( parent, text, icon, expanded, data );
 }
 
@@ -1826,21 +1829,21 @@ wxDataViewItem wxDataViewTreeCtrl::InsertContainer( const wxDataViewItem& parent
     wxIcon icon = wxNullIcon;
     if (m_imageList && (iconIndex != -1))
         icon = m_imageList->GetIcon( iconIndex );
-        
+
     wxIcon expanded = wxNullIcon;
     if (m_imageList && (expandedIndex != -1))
         expanded = m_imageList->GetIcon( expandedIndex );
-        
+
     return GetStore()->InsertContainer( parent, previous, text, icon, expanded, data );
 }
 
 void wxDataViewTreeCtrl::OnExpanded( wxDataViewEvent &event )
 {
     if (m_imageList) return;
-    
+
     wxDataViewTreeStoreContainerNode* container = GetStore()->FindContainerNode( event.GetItem() );
     if (!container) return;
-    
+
     container->SetExpanded( true );
     GetStore()->ItemChanged( event.GetItem() );
 }
@@ -1848,10 +1851,10 @@ void wxDataViewTreeCtrl::OnExpanded( wxDataViewEvent &event )
 void wxDataViewTreeCtrl::OnCollapsed( wxDataViewEvent &event )
 {
     if (m_imageList) return;
-    
+
     wxDataViewTreeStoreContainerNode* container = GetStore()->FindContainerNode( event.GetItem() );
     if (!container) return;
-    
+
     container->SetExpanded( false );
     GetStore()->ItemChanged( event.GetItem() );
 }
@@ -1861,7 +1864,7 @@ void wxDataViewTreeCtrl::OnSize( wxSizeEvent &event )
 #if defined(wxUSE_GENERICDATAVIEWCTRL)
     wxSize size = GetClientSize();
     wxDataViewColumn *col = GetColumn( 0 );
-    if (col) 
+    if (col)
        col->SetWidth( size.x );
 #endif
     event.Skip( true );
index da84f17b1ad83a69ef70a9d962ec0a3cd5663ac2..0d226bf96504ad232861b6037340b4c406816e2b 100644 (file)
@@ -432,7 +432,7 @@ public:
                             const wxSize &size = wxDefaultSize,
                             const wxString &name = wxT("wxdataviewctrlmainwindow") );
     virtual ~wxDataViewMainWindow();
-    
+
     bool IsVirtualList() const { return m_root == NULL; }
 
     // notifications from wxDataViewModel
@@ -524,7 +524,7 @@ public:
     }
 
     wxRect GetLineRect( unsigned int row ) const;
-    
+
     int GetLineStart( unsigned int row ) const;  // row * 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
@@ -532,7 +532,7 @@ public:
     //Some useful functions for row and item mapping
     wxDataViewItem GetItemByRow( unsigned int row ) const;
     int GetRowByItem( const wxDataViewItem & item ) const;
-    
+
     //Methods for building the mapping tree
     void BuildTree( wxDataViewModel  * model );
     void DestroyTree();
@@ -657,7 +657,7 @@ wxDC *wxDataViewRenderer::GetDC()
 }
 
 void wxDataViewRenderer::SetAlignment( int align )
-{ 
+{
     m_align=align;
 }
 
@@ -667,15 +667,15 @@ int wxDataViewRenderer::GetAlignment() const
 }
 
 int wxDataViewRenderer::CalculateAlignment() const
-{ 
+{
     if (m_align == wxDVR_DEFAULT_ALIGNMENT)
     {
         if (GetOwner() == NULL)
            return wxALIGN_LEFT | wxALIGN_CENTRE_VERTICAL;
-           
+
         return GetOwner()->GetAlignment() | wxALIGN_CENTRE_VERTICAL;
     }
-    
+
     return m_align;
 }
 
@@ -1400,7 +1400,7 @@ void wxDataViewHeaderWindowMSW::UpdateDisplay()
     // remove old columns
     for (int j=0, max=Header_GetItemCount((HWND)m_hWnd); j < max; j++)
         Header_DeleteItem((HWND)m_hWnd, 0);
-        
+
     m_imageList->RemoveAll();
 
     // add the updated array of columns to the header control
@@ -1427,7 +1427,7 @@ void wxDataViewHeaderWindowMSW::UpdateDisplay()
         hdi.fmt = HDF_LEFT | HDF_STRING;
         if (col->GetBitmap().IsOk())
             hdi.fmt |= HDF_IMAGE;
-        
+
         //hdi.fmt &= ~(HDF_SORTDOWN|HDF_SORTUP);
 
         if (col->IsSortable() && GetOwner()->GetSortingColumn() == col)
@@ -2175,7 +2175,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
     cell_rect.x = x_start;
     for (unsigned int i = col_start; i < col_last; i++)
     {
-       
+
         wxDataViewColumn *col = GetOwner()->GetColumn( i );
         wxDataViewRenderer *cell = col->GetRenderer();
         cell_rect.width = col->GetWidth();
@@ -2203,7 +2203,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
             }
             else
             {
-                dataitem = wxDataViewItem( (void*) item );
+                dataitem = wxDataViewItem( wxUIntToPtr(item) );
             }
 
             model->GetValue( value, dataitem, col->GetModelColumn());
@@ -2334,9 +2334,9 @@ void wxDataViewMainWindow::OnRenameTimer()
             break;
         xpos += c->GetWidth();
     }
-    wxRect labelRect( xpos, 
+    wxRect labelRect( xpos,
                       GetLineStart( m_currentRow ),
-                      m_currentCol->GetWidth(), 
+                      m_currentCol->GetWidth(),
                       GetLineHeight( m_currentRow ) );
 
     GetOwner()->CalcScrolledPosition( labelRect.x, labelRect.y,
@@ -2867,7 +2867,7 @@ void wxDataViewMainWindow::RefreshRowsAfter( unsigned int firstRow )
     if (start > client_size.y) return;
 
     wxRect rect( 0, start, client_size.x, client_size.y - start );
-    
+
     Refresh( true, &rect );
 }
 
@@ -2937,28 +2937,28 @@ wxRect wxDataViewMainWindow::GetLineRect( unsigned int row ) const
 int wxDataViewMainWindow::GetLineStart( unsigned int row ) const
 {
     const wxDataViewModel *model = GetOwner()->GetModel();
-    
+
     if (GetOwner()->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT)
     {
         // TODO make more efficient
-        
+
         int start = 0;
-        
+
         unsigned int r;
         for (r = 0; r < row; r++)
         {
             const wxDataViewTreeNode* node = GetTreeNodeByRow(r);
             if (!node) return start;
-           
+
             wxDataViewItem item = node->GetItem();
-           
+
             if (node && !node->HasChildren())
             {
                 // Yes, if the node does not have any child, it must be a leaf which
                 // mean that it is a temporarily created by GetTreeNodeByRow
                 wxDELETE(node)
             }
-            
+
             unsigned int cols = GetOwner()->GetColumnCount();
             unsigned int col;
             int height = m_lineHeight;
@@ -2967,10 +2967,10 @@ int wxDataViewMainWindow::GetLineStart( unsigned int row ) const
                 const wxDataViewColumn *column = GetOwner()->GetColumn(col);
                 if (column->IsHidden())
                     continue;      // skip it!
-            
+
                 if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item))
                     continue;      // skip it!
-            
+
                 const wxDataViewRenderer *renderer = column->GetRenderer();
                 wxVariant value;
                 model->GetValue( value, item, column->GetModelColumn() );
@@ -2978,11 +2978,11 @@ int wxDataViewMainWindow::GetLineStart( unsigned int row ) const
                 renderer2->SetValue( value );
                 height = wxMax( height, renderer->GetSize().y );
             }
-           
-           
+
+
             start += height;
         }
-        
+
         return start;
     }
     else
@@ -2995,88 +2995,82 @@ int wxDataViewMainWindow::GetLineAt( unsigned int y ) const
 {
     const wxDataViewModel *model = GetOwner()->GetModel();
 
-    if (GetOwner()->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT)
+    // check for the easy case first
+    if ( !GetOwner()->HasFlag(wxDV_VARIABLE_LINE_HEIGHT) )
+        return y / m_lineHeight;
+
+    // TODO make more efficient
+    unsigned int row = 0;
+    unsigned int yy = 0;
+    for (;;)
     {
-        // TODO make more efficient
-        
-        unsigned int row = 0;
-        unsigned int yy = 0;
-        for (;;)
+       const wxDataViewTreeNode* node = GetTreeNodeByRow(row);
+       if (!node)
+       {
+           // not really correct...
+           return row + ((y-yy) / m_lineHeight);
+       }
+
+       wxDataViewItem item = node->GetItem();
+
+        if (node && !node->HasChildren())
         {
-           const wxDataViewTreeNode* node = GetTreeNodeByRow(row);
-           if (!node)
-           {
-               // not really correct...
-               return row + ((y-yy) / m_lineHeight);
-           }
-           
-           wxDataViewItem item = node->GetItem();
-           
-            if (node && !node->HasChildren())
-            {
-                // Yes, if the node does not have any child, it must be a leaf which
-                // mean that it is a temporarily created by GetTreeNodeByRow
-                wxDELETE(node)
-            }
-            
-           unsigned int cols = GetOwner()->GetColumnCount();
-           unsigned int col;
-           int height = m_lineHeight;
-           for (col = 0; col < cols; col++)
-           {
-                const wxDataViewColumn *column = GetOwner()->GetColumn(col);
-                if (column->IsHidden())
-                    continue;      // skip it!
-                
-                if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item))
-                    continue;      // skip it!
-            
-                const wxDataViewRenderer *renderer = column->GetRenderer();
-                wxVariant value;
-                model->GetValue( value, item, column->GetModelColumn() );
-                wxDataViewRenderer *renderer2 = const_cast<wxDataViewRenderer*>(renderer);
-                renderer2->SetValue( value );
-                height = wxMax( height, renderer->GetSize().y );
-           }
-           
-           yy += height;
-           if (y < yy)
-               return row;
-               
-           row++;
+            // Yes, if the node does not have any child, it must be a leaf which
+            // mean that it is a temporarily created by GetTreeNodeByRow
+            wxDELETE(node)
         }
-        
-        return -1;
-    }
-    else
-    {
-        return y / m_lineHeight;
+
+       unsigned int cols = GetOwner()->GetColumnCount();
+       unsigned int col;
+       int height = m_lineHeight;
+       for (col = 0; col < cols; col++)
+       {
+            const wxDataViewColumn *column = GetOwner()->GetColumn(col);
+            if (column->IsHidden())
+                continue;      // skip it!
+
+            if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item))
+                continue;      // skip it!
+
+            const wxDataViewRenderer *renderer = column->GetRenderer();
+            wxVariant value;
+            model->GetValue( value, item, column->GetModelColumn() );
+            wxDataViewRenderer *renderer2 = const_cast<wxDataViewRenderer*>(renderer);
+            renderer2->SetValue( value );
+            height = wxMax( height, renderer->GetSize().y );
+       }
+
+       yy += height;
+       if (y < yy)
+           return row;
+
+       row++;
     }
 }
 
 int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const
 {
     const wxDataViewModel *model = GetOwner()->GetModel();
-    
+
     if (GetOwner()->GetWindowStyle() & wxDV_VARIABLE_LINE_HEIGHT)
     {
         wxASSERT( !IsVirtualList() );
-        
+
         const wxDataViewTreeNode* node = GetTreeNodeByRow(row);
         // wxASSERT( node );
         if (!node) return m_lineHeight;
 
         wxDataViewItem item = node->GetItem();
-        
+
         if (node && !node->HasChildren())
         {
                 // Yes, if the node does not have any child, it must be a leaf which
                 // mean that it is a temporarily created by GetTreeNodeByRow
              wxDELETE(node)
         }
-            
+
         int height = m_lineHeight;
-        
+
         unsigned int cols = GetOwner()->GetColumnCount();
         unsigned int col;
         for (col = 0; col < cols; col++)
@@ -3087,7 +3081,7 @@ int wxDataViewMainWindow::GetLineHeight( unsigned int row ) const
 
             if ((col != 0) && model->IsContainer(item) && !model->HasContainerColumns(item))
                 continue;      // skip it!
-            
+
             const wxDataViewRenderer *renderer = column->GetRenderer();
             wxVariant value;
             model->GetValue( value, item, column->GetModelColumn() );
@@ -3159,7 +3153,7 @@ wxDataViewItem wxDataViewMainWindow::GetItemByRow(unsigned int row) const
 {
     if (!m_root)
     {
-        return wxDataViewItem( (void*) row );
+        return wxDataViewItem( wxUIntToPtr(row) );
     }
     else
     {
@@ -3240,7 +3234,7 @@ private:
 wxDataViewTreeNode * wxDataViewMainWindow::GetTreeNodeByRow(unsigned int row) const
 {
     wxASSERT( !IsVirtualList() );
-    
+
     RowToTreeNodeJob job( row , -2, m_root );
     Walker( m_root , job );
     return job.GetResult();
@@ -3368,14 +3362,14 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item
             wxDataViewTreeNodes nodes = node->GetNodes();
             unsigned int i;
             bool found = false;
-            
+
             for (i = 0; i < nodes.GetCount(); i ++)
             {
                 if (nodes[i]->GetItem() == (**iter))
                 {
                     if (nodes[i]->GetItem() == item)
                        return nodes[i];
-                       
+
                     node = nodes[i];
                     found = true;
                     break;
@@ -3742,7 +3736,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
         {
             int indent = node->GetIndentLevel();
             indent = GetOwner()->GetIndent()*indent;
-            wxRect rect( xpos + indent + EXPANDER_MARGIN, 
+            wxRect rect( xpos + indent + EXPANDER_MARGIN,
                          GetLineStart( current ) + EXPANDER_MARGIN + (GetLineHeight(current)/2) - (m_lineHeight/2) - EXPANDER_OFFSET,
                          m_lineHeight-2*EXPANDER_MARGIN,
                          m_lineHeight-2*EXPANDER_MARGIN + EXPANDER_OFFSET);
@@ -3870,11 +3864,11 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
             {
                 int indent = node->GetIndentLevel();
                 indent = GetOwner()->GetIndent()*indent;
-                wxRect rect( xpos + indent + EXPANDER_MARGIN, 
+                wxRect rect( xpos + indent + EXPANDER_MARGIN,
                          GetLineStart( current ) + EXPANDER_MARGIN + (GetLineHeight(current)/2) - (m_lineHeight/2) - EXPANDER_OFFSET,
                          m_lineHeight-2*EXPANDER_MARGIN,
                          m_lineHeight-2*EXPANDER_MARGIN + EXPANDER_OFFSET);
-                
+
                 if( rect.Contains( x, y) )
                 {
                     expander = true;
@@ -3993,7 +3987,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
                 wxFAIL_MSG( _T("how did we get here?") );
             }
         }
-        
+
         if (m_currentRow != oldCurrentRow)
             RefreshRow( oldCurrentRow );
 
@@ -4081,7 +4075,7 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id,
 {
     if ( (style & wxBORDER_MASK) == 0)
         style |= wxBORDER_SUNKEN;
-    
+
     if (!wxControl::Create( parent, id, pos, size,
                             style | wxScrolledWindowStyle, validator))
         return false;