X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/24c4a50f438ef7122e6b2c97d66c6b5589ef56a5..883ea3bf80503de1f2aa797ce91acda654d88d74:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 99cca5e66a..0f5094e310 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -270,14 +270,14 @@ class wxDataViewTreeNode { public: wxDataViewTreeNode( wxDataViewTreeNode * parent = NULL ) - { this->parent = parent; + { this->parent = parent; if( parent == NULL ) open = true; - else - open = false; + else + open = false; hasChildren = false; subTreeCount = 0; - } + } //I don't know what I need to do in the destructure ~wxDataViewTreeNode() { @@ -298,11 +298,11 @@ public: if (g_column >= -1) nodes.Sort( &wxGenericTreeModelNodeCmp ); } - void AddLeaf( void * leaf ) - { - leaves.Add( leaf ); + void AddLeaf( void * leaf ) + { + leaves.Add( leaf ); if (g_column >= -1) - leaves.Sort( &wxGenericTreeModelItemCmp ); + leaves.Sort( &wxGenericTreeModelItemCmp ); } wxDataViewItem & GetItem() { return item; } @@ -313,13 +313,13 @@ public: int GetIndentLevel() { int ret = 0 ; - wxDataViewTreeNode * node = this; - while( node->GetParent()->GetParent() != NULL ) - { - node = node->GetParent(); - ret ++; - } - return ret; + wxDataViewTreeNode * node = this; + while( node->GetParent()->GetParent() != NULL ) + { + node = node->GetParent(); + ret ++; + } + return ret; } bool IsOpen() @@ -364,7 +364,7 @@ public: { if (g_column >= -1) { - nodes.Sort( &wxGenericTreeModelNodeCmp ); + nodes.Sort( &wxGenericTreeModelNodeCmp ); int len = nodes.GetCount(); for (int i = 0; i < len; i ++) { @@ -416,22 +416,21 @@ public: virtual ~wxDataViewMainWindow(); // notifications from wxDataViewModel - void SendModelEvent( wxEventType type, const wxDataViewItem & item); bool ItemAdded( const wxDataViewItem &parent, const wxDataViewItem &item ); bool ItemDeleted( const wxDataViewItem &parent, const wxDataViewItem &item ); bool ItemChanged( const wxDataViewItem &item ); bool ValueChanged( const wxDataViewItem &item, unsigned int col ); bool Cleared(); void Resort() - { + { SortPrepare(); - m_root->Resort(); - UpdateDisplay(); + m_root->Resort(); + UpdateDisplay(); } void SortPrepare() { - g_model = GetOwner()->GetModel(); + g_model = GetOwner()->GetModel(); wxDataViewColumn* col = GetOwner()->GetSortingColumn(); if( !col ) { @@ -444,9 +443,9 @@ public: return; } g_column = col->GetModelColumn(); - g_asending = col->IsSortOrderAscending(); + g_asending = col->IsSortOrderAscending(); } - + void SetOwner( wxDataViewCtrl* owner ) { m_owner = owner; } wxDataViewCtrl *GetOwner() { return m_owner; } const wxDataViewCtrl *GetOwner() const { return m_owner; } @@ -489,6 +488,7 @@ public: void SelectRows( unsigned int from, unsigned int to, bool on ); void ReverseRowSelection( unsigned int row ); bool IsRowSelected( unsigned int row ); + void SendSelectionChangedEvent( const wxDataViewItem& item); void RefreshRow( unsigned int row ); void RefreshRows( unsigned int from, unsigned int to ); @@ -587,7 +587,7 @@ public: virtual bool Cleared() { return m_mainWindow->Cleared(); } virtual void Resort() - { m_mainWindow->Resort(); } + { m_mainWindow->Resort(); } wxDataViewMainWindow *m_mainWindow; }; @@ -992,13 +992,13 @@ bool wxDataViewDateRenderer::Activate( wxRect WXUNUSED(cell), wxDataViewModel *m return true; } -// --------------------------------------------------------- +// --------------------------------------------------------- // wxDataViewIconTextRenderer -// --------------------------------------------------------- +// --------------------------------------------------------- IMPLEMENT_CLASS(wxDataViewIconTextRenderer, wxDataViewCustomRenderer) -wxDataViewIconTextRenderer::wxDataViewIconTextRenderer( +wxDataViewIconTextRenderer::wxDataViewIconTextRenderer( const wxString &varianttype, wxDataViewCellMode mode, int align ) : wxDataViewCustomRenderer( varianttype, mode, align ) { @@ -1009,7 +1009,7 @@ wxDataViewIconTextRenderer::wxDataViewIconTextRenderer( wxDataViewIconTextRenderer::~wxDataViewIconTextRenderer() { } - + bool wxDataViewIconTextRenderer::SetValue( const wxVariant &value ) { m_value << value; @@ -1020,18 +1020,18 @@ bool wxDataViewIconTextRenderer::GetValue( wxVariant &value ) const { return false; } - + bool wxDataViewIconTextRenderer::Render( wxRect cell, wxDC *dc, int state ) { dc->SetFont( GetOwner()->GetOwner()->GetFont() ); - + const wxIcon &icon = m_value.GetIcon(); if (icon.IsOk()) { dc->DrawIcon( icon, cell.x, cell.y ); // TODO centre cell.x += icon.GetWidth()+4; } - + dc->DrawText( m_value.GetText(), cell.x, cell.y ); return true; @@ -1662,10 +1662,6 @@ void wxGenericDataViewHeaderWindow::OnMouse( wxMouseEvent &event ) m_owner->CalcUnscrolledPosition(w, 0, &w, NULL); w -= 6; - // erase the line if it was drawn - if (m_currentX < w) - DrawCurrent(); - if (event.ButtonUp()) { m_isDragging = false; @@ -1673,19 +1669,15 @@ void wxGenericDataViewHeaderWindow::OnMouse( wxMouseEvent &event ) ReleaseMouse(); m_dirty = true; + } + m_currentX = wxMax(m_minX + 7, x); + if (m_currentX < w) + { GetColumn(m_column)->SetWidth(m_currentX - m_minX); - Refresh(); GetOwner()->Refresh(); } - else - { - m_currentX = wxMax(m_minX + 7, x); - - // draw in the new location - if (m_currentX < w) DrawCurrent(); - } } else // not dragging @@ -1740,7 +1732,6 @@ void wxGenericDataViewHeaderWindow::OnMouse( wxMouseEvent &event ) m_isDragging = true; CaptureMouse(); m_currentX = x; - DrawCurrent(); } else // click on a column { @@ -1787,8 +1778,12 @@ void wxGenericDataViewHeaderWindow::OnMouse( wxMouseEvent &event ) } } +//I must say that this function is deprecated, but I think it is useful to keep it for a time void wxGenericDataViewHeaderWindow::DrawCurrent() { +#if 1 + GetColumn(m_column)->SetWidth(m_currentX - m_minX); +#else int x1 = m_currentX; int y1 = 0; ClientToScreen (&x1, &y1); @@ -1806,7 +1801,8 @@ void wxGenericDataViewHeaderWindow::DrawCurrent() dc.SetPen(m_penCurrent); dc.SetBrush(*wxTRANSPARENT_BRUSH); AdjustDC(dc); - dc.DrawLine(x1, y1, x2, y2); + dc.DrawLine(x1, y1, x2, y2 ); +#endif } void wxGenericDataViewHeaderWindow::AdjustDC(wxDC& dc) @@ -2016,25 +2012,12 @@ bool Walker( wxDataViewTreeNode * node, DoJob & func ) return false; } -void wxDataViewMainWindow::SendModelEvent( wxEventType type, const wxDataViewItem & item ) -{ - wxWindow *parent = GetParent(); - wxDataViewEvent le(type, parent->GetId()); - - le.SetEventObject(parent); - le.SetModel(GetOwner()->GetModel()); - le.SetItem( item ); - - parent->GetEventHandler()->ProcessEvent(le); -} - bool wxDataViewMainWindow::ItemAdded(const wxDataViewItem & parent, const wxDataViewItem & item) { SortPrepare(); wxDataViewTreeNode * node; node = FindNode(parent); - SendModelEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_ADDED, item ); if( node == NULL ) return false; @@ -2065,7 +2048,7 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, const wxDataViewItem& item) { wxDataViewTreeNode * node = FindNode(parent); - + wxCHECK_MSG( node != NULL, false, "item not found" ); wxCHECK_MSG( node->GetChildren().Index( item.GetID() ) != wxNOT_FOUND, false, "item not found" ); @@ -2078,8 +2061,8 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, } bool isContainer = false; wxDataViewTreeNodes nds = node->GetNodes(); - for (int i = 0; i < nds.GetCount(); i ++) - { + for (size_t i = 0; i < nds.GetCount(); i ++) + { if (nds[i]->GetItem() == item) { isContainer = true; @@ -2120,8 +2103,6 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, m_currentRow = m_count - 1; UpdateDisplay(); - - SendModelEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_DELETED, item); return true; } @@ -2131,8 +2112,14 @@ bool wxDataViewMainWindow::ItemChanged(const wxDataViewItem & item) SortPrepare(); g_model->Resort(); - SendModelEvent(wxEVT_COMMAND_DATAVIEW_MODEL_ITEM_CHANGED,item); - + //Send event + wxWindow *parent = GetParent(); + wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, parent->GetId()); + le.SetEventObject(parent); + le.SetModel(GetOwner()->GetModel()); + le.SetItem(item); + parent->GetEventHandler()->ProcessEvent(le); + return true; } @@ -2152,7 +2139,7 @@ bool wxDataViewMainWindow::ValueChanged( const wxDataViewItem & item, unsigned i //Send event wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_MODEL_VALUE_CHANGED, parent->GetId()); + wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_ITEM_VALUE_CHANGED, parent->GetId()); le.SetEventObject(parent); le.SetModel(GetOwner()->GetModel()); le.SetItem(item); @@ -2170,12 +2157,6 @@ bool wxDataViewMainWindow::Cleared() DestroyTree(); UpdateDisplay(); - wxWindow *parent = GetParent(); - wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_MODEL_CLEARED, parent->GetId()); - le.SetEventObject(parent); - le.SetModel(GetOwner()->GetModel()); - parent->GetEventHandler()->ProcessEvent(le); - return true; } @@ -2252,7 +2233,7 @@ void wxDataViewMainWindow::ScrollTo( int rows, int column ) } if( x_start < xx ) { - sx = x_start/x; + sx = x_start/x; } } m_owner->Scroll( sx, sy ); @@ -2377,7 +2358,7 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) expander = GetOwner()->GetColumn( 0 ); GetOwner()->SetExpanderColumn(expander); } - + // redraw all cells for all rows which must be repainted and for all columns wxRect cell_rect; cell_rect.x = x_start; @@ -2391,16 +2372,16 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) if (col->IsHidden()) continue; // skipt it! - + for (unsigned int item = item_start; item < item_last; item++) { // get the cell value and set it into the renderer wxVariant value; - wxDataViewTreeNode * node = GetTreeNodeByRow(item); - if( node == NULL ) - { - continue; - } + wxDataViewTreeNode * node = GetTreeNodeByRow(item); + if( node == NULL ) + { + continue; + } wxDataViewItem dataitem = node->GetItem(); model->GetValue( value, dataitem, col->GetModelColumn()); @@ -2537,11 +2518,11 @@ unsigned int wxDataViewMainWindow::GetLastVisibleRow() m_owner->CalcUnscrolledPosition( client_size.x, client_size.y, &client_size.x, &client_size.y ); - //we should deal with the pixel here + //we should deal with the pixel here unsigned int row = (client_size.y)/m_lineHeight; if( client_size.y % m_lineHeight < m_lineHeight/2 ) row -= 1; - + return wxMin( GetRowCount()-1, row ); } @@ -2664,6 +2645,18 @@ bool wxDataViewMainWindow::IsRowSelected( unsigned int row ) return (m_selection.Index( row ) != wxNOT_FOUND); } +void wxDataViewMainWindow::SendSelectionChangedEvent( const wxDataViewItem& item) +{ + wxWindow *parent = GetParent(); + wxDataViewEvent le(wxEVT_COMMAND_DATAVIEW_SELECTION_CHANGED, parent->GetId()); + + le.SetEventObject(parent); + le.SetModel(GetOwner()->GetModel()); + le.SetItem( item ); + + parent->GetEventHandler()->ProcessEvent(le); +} + void wxDataViewMainWindow::RefreshRow( unsigned int row ) { wxRect rect( 0, row*m_lineHeight, GetEndOfLastCol(), m_lineHeight ); @@ -2738,6 +2731,8 @@ void wxDataViewMainWindow::OnArrowChar(unsigned int newCurrent, const wxKeyEvent } SelectRows( oldCurrent, newCurrent, true ); + if (oldCurrent!=newCurrent) + SendSelectionChangedEvent(GetItemByRow(m_selection[0])); } else // !shift { @@ -2750,7 +2745,10 @@ void wxDataViewMainWindow::OnArrowChar(unsigned int newCurrent, const wxKeyEvent ChangeCurrentRow( newCurrent ); if ( !event.ControlDown() ) + { SelectRow( m_currentRow, true ); + SendSelectionChangedEvent(GetItemByRow(m_currentRow)); + } else RefreshRow( m_currentRow ); } @@ -2779,7 +2777,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = node->GetItem() ; return DoJob::OK; } @@ -2807,7 +2805,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = wxDataViewItem( n ) ; return DoJob::OK; } @@ -2843,7 +2841,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = node ; return DoJob::OK; } @@ -2877,7 +2875,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = new wxDataViewTreeNode( parent ) ; ret->SetItem( wxDataViewItem( n )); ret->SetHasChildren(false); @@ -2928,7 +2926,7 @@ void wxDataViewMainWindow::OnExpanding( unsigned int row ) //Check if the user prevent expanding if( e.GetSkipped() ) return; - + node->ToggleOpen(); //Here I build the children of current node if( node->GetChildrenNumber() == 0 ) @@ -2946,6 +2944,7 @@ void wxDataViewMainWindow::OnExpanding( unsigned int row ) SelectRow( row, false ); SelectRow( row + 1, true ); ChangeCurrentRow( row + 1 ); + SendSelectionChangedEvent( GetItemByRow(row+1)); } } else @@ -2981,6 +2980,7 @@ void wxDataViewMainWindow::OnCollapsing(unsigned int row) SelectRow( row, false); SelectRow(parent , true ); ChangeCurrentRow( parent ); + SendSelectionChangedEvent( node->GetItem() ); } } } @@ -3009,7 +3009,7 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item //Find the item along the parent-chain. //This algorithm is designed to speed up the node-finding method wxDataViewTreeNode * node = m_root; - for( ItemList::Node * n = list.GetFirst(); n; n = n->GetNext() ) + for( ItemList::const_iterator iter = list.begin(); iter !=list.end() ; iter++ ) { if( node->HasChildren() ) { @@ -3023,8 +3023,8 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item int i = 0; for (; i < nodes.GetCount(); i ++) { - if (nodes[i]->GetItem() == *(n->GetData())) - { + if (nodes[i]->GetItem() == (**iter)) + { node = nodes[i]; break; } @@ -3090,8 +3090,8 @@ int wxDataViewMainWindow::RecalculateCount() class ItemToRowJob : public DoJob { public: - ItemToRowJob(const wxDataViewItem & item, ItemList::Node * node ) - { this->item = item ; ret = -1 ; nd = node ; } + ItemToRowJob(const wxDataViewItem & item, ItemList::const_iterator iter ) + { this->item = item ; ret = -1 ; m_iter = iter ; } virtual ~ItemToRowJob(){}; //Maybe binary search will help to speed up this process @@ -3103,9 +3103,9 @@ public: return DoJob::OK; } - if( nd && node->GetItem() == *(nd->GetData())) + if( node->GetItem() == **m_iter ) { - nd = nd->GetNext(); + m_iter++ ; return DoJob::CONT; } else @@ -3126,7 +3126,7 @@ public: //the row number is begin from zero int GetResult(){ return ret -1 ; } private: - ItemList::Node * nd; + ItemList::const_iterator m_iter; wxDataViewItem item; int ret; @@ -3155,7 +3155,7 @@ int wxDataViewMainWindow::GetRowByItem(const wxDataViewItem & item) pItem = new wxDataViewItem( ); list.Insert( pItem ); - ItemToRowJob job( item, list.GetFirst() ); + ItemToRowJob job( item, list.begin() ); Walker(m_root , job ); return job.GetResult(); } @@ -3165,23 +3165,23 @@ void BuildTreeHelper( wxDataViewModel * model, wxDataViewItem & item, wxDataVie if( !model->IsContainer( item ) ) return ; - wxDataViewItem i = model->GetFirstChild( item ); - int num = 0; - while( i.IsOk() ) + wxDataViewItemArray children; + unsigned int num = model->GetChildren( item, children); + int index = 0; + while( index < num ) { - num ++; - if( model->IsContainer( i ) ) + if( model->IsContainer( children[index] ) ) { wxDataViewTreeNode * n = new wxDataViewTreeNode( node ); - n->SetItem(i); + n->SetItem(children[index]); n->SetHasChildren( true ) ; node->AddNode( n ); } else { - node->AddLeaf( i.GetID() ); + node->AddLeaf( children[index].GetID() ); } - i = model->GetNextSibling( i ); + index ++; } node->SetSubTreeCount( num ); wxDataViewTreeNode * n = node->GetParent(); @@ -3258,11 +3258,11 @@ void wxDataViewMainWindow::OnChar( wxKeyEvent &event ) break; //Add the process for tree expanding/collapsing case WXK_LEFT: - OnCollapsing(m_currentRow); - break; - case WXK_RIGHT: - OnExpanding( m_currentRow); - break; + OnCollapsing(m_currentRow); + break; + case WXK_RIGHT: + OnExpanding( m_currentRow); + break; case WXK_END: if (!IsEmpty()) OnArrowChar( GetRowCount() - 1, event ); @@ -3314,7 +3314,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) int y = event.GetY(); m_owner->CalcUnscrolledPosition( x, y, &x, &y ); wxDataViewColumn *col = NULL; - + int xpos = 0; unsigned int cols = GetOwner()->GetColumnCount(); unsigned int i; @@ -3369,14 +3369,14 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) m_underMouse = node; } } - if (node!=NULL && !node->HasChildren()) + if (node!=NULL && !node->HasChildren()) delete node; } if (!hover) { if (m_underMouse != NULL) { - wxLogMessage("Undo the row: %d", GetRowByItem(m_underMouse->GetItem())); + //wxLogMessage("Undo the row: %d", GetRowByItem(m_underMouse->GetItem())); Refresh(GetRowByItem(m_underMouse->GetItem())); m_underMouse = NULL; } @@ -3463,22 +3463,24 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) //Process the event of user clicking the expander bool expander = false; - wxDataViewTreeNode * node = GetTreeNodeByRow(current); - if( node!=NULL && node->HasChildren() ) + if (GetOwner()->GetExpanderColumn() == col) { - int indent = node->GetIndentLevel(); - indent = GetOwner()->GetIndent()*indent; - wxRect rect( xpos + indent + EXPANDER_MARGIN, current * m_lineHeight + EXPANDER_MARGIN, m_lineHeight-2*EXPANDER_MARGIN,m_lineHeight-2*EXPANDER_MARGIN); - if( rect.Contains( x, y) ) + wxDataViewTreeNode * node = GetTreeNodeByRow(current); + if( node!=NULL && node->HasChildren() ) { - expander = true; - if( node->IsOpen() ) - OnCollapsing(current); - else - OnExpanding( current ); + int indent = node->GetIndentLevel(); + indent = GetOwner()->GetIndent()*indent; + wxRect rect( xpos + indent + EXPANDER_MARGIN, current * m_lineHeight + EXPANDER_MARGIN, m_lineHeight-2*EXPANDER_MARGIN,m_lineHeight-2*EXPANDER_MARGIN); + if( rect.Contains( x, y) ) + { + expander = true; + if( node->IsOpen() ) + OnCollapsing(current); + else + OnExpanding( current ); + } } } - //If the user click the expander, we do not do editing even if the column with expander are editable if (m_lastOnSame && !expander ) { @@ -3513,6 +3515,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) SelectAllRows(false); ChangeCurrentRow(current); SelectRow(m_currentRow,true); + SendSelectionChangedEvent(GetItemByRow( m_currentRow ) ); } // notify cell about right click @@ -3542,10 +3545,9 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) if ( IsSingleSel() || !IsRowSelected(current) ) { SelectAllRows( false ); - ChangeCurrentRow(current); - SelectRow(m_currentRow,true); + SendSelectionChangedEvent(GetItemByRow( m_currentRow ) ); } else // multi sel & current is highlighted & no mod keys { @@ -3558,8 +3560,8 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) if (cmdModifierDown) { ChangeCurrentRow(current); - ReverseRowSelection(m_currentRow); + SendSelectionChangedEvent(GetItemByRow(m_selection[0]) ); } else if (event.ShiftDown()) { @@ -3575,6 +3577,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event ) } SelectRows(lineFrom, lineTo, true); + SendSelectionChangedEvent(GetItemByRow(m_selection[0]) ); } else // !ctrl, !shift { @@ -3778,11 +3781,11 @@ wxDataViewColumn* wxDataViewCtrl::GetColumn( unsigned int pos ) const bool wxDataViewCtrl::DeleteColumn( wxDataViewColumn *column ) { - wxDataViewColumnList::Node * ret = m_cols.Find( column ); + wxDataViewColumnList::compatibility_iterator ret = m_cols.Find( column ); if (ret == NULL) return false; - m_cols.Erase(ret); + m_cols.Erase(ret); delete column; OnColumnChange(); @@ -3796,6 +3799,30 @@ bool wxDataViewCtrl::ClearColumns() return true; } +int wxDataViewCtrl::GetColumnPosition( const wxDataViewColumn *column ) const +{ + int ret = 0, dead = 0; + int len = GetColumnCount(); + for (int i=0; iIsHidden()) + continue; + ret += col->GetWidth(); + if (column==col) + { + CalcScrolledPosition( ret, dead, &ret, &dead ); + break; + } + } + return ret; +} + +wxDataViewColumn *wxDataViewCtrl::GetSortingColumn() const +{ + return NULL; +} + //Selection code with wxDataViewItem as parameters wxDataViewItem wxDataViewCtrl::GetSelection() const { @@ -3909,7 +3936,7 @@ bool wxDataViewCtrl::IsSelected( int row ) const void wxDataViewCtrl::SelectRange( int from, int to ) { - wxArrayInt sel; + wxArrayInt sel; for( int i = from; i < to; i ++ ) sel.Add( i ); m_clientArea->Select(sel); @@ -3957,9 +3984,9 @@ void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataVie if( row >= 0 ) { if( column == NULL ) - return EnsureVisible(row, -1); + EnsureVisible(row, -1); else - { + { int col = 0; int len = GetColumnCount(); for( int i = 0; i < len; i ++ ) @@ -3971,7 +3998,7 @@ void wxDataViewCtrl::EnsureVisible( const wxDataViewItem & item, const wxDataVie EnsureVisible( row, col ); } } - + } void wxDataViewCtrl::HitTest( const wxPoint & point, wxDataViewItem & item, wxDataViewColumn* &column ) const @@ -4005,7 +4032,7 @@ void wxDataViewCtrl::Collapse( const wxDataViewItem & item ) { int row = m_clientArea->GetRowByItem( item ); if (row != -1) - m_clientArea->Collapse(row); + m_clientArea->Collapse(row); } #endif