X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3f00f59938d4801a95afa1cd638b8f15c481ee3..5bf3f27fc91ff3288000c0134ac4bdfdf2e7db4f:/src/generic/datavgen.cpp diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index a054a59150..535fc5433f 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -266,14 +266,14 @@ public: wxDataViewTreeNode( wxDataViewTreeNode * parent ) :leaves( wxGenericTreeModelItemCmp ), nodes(wxGenericTreeModelNodeCmp) - { 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() { @@ -300,13 +300,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() @@ -353,13 +353,14 @@ public: wxDataViewTreeLeaves lvs = leaves; nodes.Empty(); leaves.Empty(); - + int len = nds.GetCount(); if(len > 0) { - for(int i = 0; i < len; i ++) + int i; + for(i = 0; i < len; i ++) nodes.Add(nds[i]); - for(int i = 0; i < len; i ++) + for(i = 0; i < len; i ++) nodes[i]->Resort(); } @@ -555,7 +556,7 @@ public: virtual bool Cleared() { return m_mainWindow->Cleared(); } virtual void Resort() - { return m_mainWindow->Resort(); } + { m_mainWindow->Resort(); } wxDataViewMainWindow *m_mainWindow; }; @@ -1322,12 +1323,12 @@ bool wxDataViewHeaderWindowMSW::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARA { bool order = col->IsSortOrderAscending(); col->SetSortOrder(!order); - model->SetSortOrderAscending(!order); + // model->SetSortOrderAscending(!order); } else if(model) { model->SetSortingColumn(idx); - model->SetSortOrderAscending(true); + // model->SetSortOrderAscending(true); } } UpdateDisplay(); @@ -1844,7 +1845,7 @@ class ItemAddJob: public DoJob { public: ItemAddJob( const wxDataViewItem & parent, const wxDataViewItem & item, int * count ) - { this->parent = parent ; this->item = item ; m_count = count; } + { this->parent = parent ; this->item = item ; m_count = count; } virtual ~ItemAddJob(){}; virtual int operator() ( wxDataViewTreeNode * node ) @@ -1987,7 +1988,7 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, node->GetChildren().Remove( item.GetID() ); if( GetOwner()->GetModel()->IsContainer( item ) ) { - wxDataViewTreeNode * n ; + wxDataViewTreeNode * n = NULL; wxDataViewTreeNodes nodes = node->GetNodes(); int len = nodes.GetCount(); for( int i = 0 ; i < len; i ++) @@ -1998,6 +1999,10 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent, break; } } + + if (!n) + return false; + node->GetNodes().Remove( n ); sub -= n->GetSubTreeCount(); DestroyTreeHelper(n); @@ -2224,14 +2229,14 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) { // 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()); + model->GetValue( value, dataitem, col->GetModelColumn()); cell->SetValue( value ); // update the y offset @@ -2599,7 +2604,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = node->GetItem() ; return DoJob::OK; } @@ -2617,7 +2622,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = wxDataViewItem( n ) ; return DoJob::OK; } @@ -2653,7 +2658,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = node ; return DoJob::OK; } @@ -2675,7 +2680,7 @@ public: { current ++; if( current == static_cast(row)) - { + { ret = new wxDataViewTreeNode( parent ) ; ret->SetItem( wxDataViewItem( n )); ret->SetHasChildren(false); @@ -2815,7 +2820,7 @@ wxDataViewTreeNode * wxDataViewMainWindow::FindNode( const wxDataViewItem & item for( ; j < len; j ++) { if( nodes[j]->GetItem() == *(n->GetData())) - { + { node = nodes[j]; break; } @@ -3002,11 +3007,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 );