]> git.saurik.com Git - wxWidgets.git/commitdiff
Clean up wxDataViewMainWindow::ItemDeleted() a bit.
authorVáclav Slavík <vslavik@fastmail.fm>
Sun, 7 Aug 2011 17:29:47 +0000 (17:29 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sun, 7 Aug 2011 17:29:47 +0000 (17:29 +0000)
Reuse shared code instead of duplicating it. No real changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/generic/datavgen.cpp

index 94268b33f5e6d44e7ecb45c7376ca7be52db7ddf..a355dd152742bee96d7cc7f0119ce318f92aa288 100644 (file)
@@ -2006,66 +2006,61 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent,
             (wxDataViewVirtualListModel*) GetOwner()->GetModel();
         m_count = list_model->GetCount();
 
-        if( m_currentRow > GetRowCount() )
-            m_currentRow = m_count - 1;
-
         // TODO: why empty the entire selection?
         m_selection.Empty();
-
-        UpdateDisplay();
-
-        return true;
     }
+    else // general case
+    {
+        wxDataViewTreeNode * node = FindNode(parent);
 
-    wxDataViewTreeNode * node = FindNode(parent);
-
-    // Notice that it is possible that the item being deleted is not in the
-    // tree at all, for example we could be deleting a never shown (because
-    // collapsed) item in a tree model. So it's not an error if we don't know
-    // about this item, just return without doing anything then.
-    if ( !node || node->GetChildren().Index(item.GetID()) == wxNOT_FOUND )
-        return false;
+        // Notice that it is possible that the item being deleted is not in the
+        // tree at all, for example we could be deleting a never shown (because
+        // collapsed) item in a tree model. So it's not an error if we don't know
+        // about this item, just return without doing anything then.
+        if ( !node || node->GetChildren().Index(item.GetID()) == wxNOT_FOUND )
+            return false;
 
-    int sub = -1;
-    node->GetChildren().Remove( item.GetID() );
-    // Manipolate selection
-    if( m_selection.GetCount() > 1 )
-    {
-        m_selection.Empty();
-    }
-    bool isContainer = false;
-    wxDataViewTreeNodes nds = node->GetNodes();
-    for (size_t i = 0; i < nds.GetCount(); i ++)
-    {
-        if (nds[i]->GetItem() == item)
+        int sub = -1;
+        node->GetChildren().Remove( item.GetID() );
+        // Manipolate selection
+        if( m_selection.GetCount() > 1 )
         {
-            isContainer = true;
-            break;
+            m_selection.Empty();
         }
-    }
-    if( isContainer )
-    {
-        wxDataViewTreeNode * n = NULL;
-        wxDataViewTreeNodes nodes = node->GetNodes();
-        int len = nodes.GetCount();
-        for( int i = 0; i < len; i ++)
+        bool isContainer = false;
+        wxDataViewTreeNodes nds = node->GetNodes();
+        for (size_t i = 0; i < nds.GetCount(); i ++)
         {
-            if( nodes[i]->GetItem() == item )
+            if (nds[i]->GetItem() == item)
             {
-                n = nodes[i];
+                isContainer = true;
                 break;
             }
         }
+        if( isContainer )
+        {
+            wxDataViewTreeNode * n = NULL;
+            wxDataViewTreeNodes nodes = node->GetNodes();
+            int len = nodes.GetCount();
+            for( int i = 0; i < len; i ++)
+            {
+                if( nodes[i]->GetItem() == item )
+                {
+                    n = nodes[i];
+                    break;
+                }
+            }
 
-        wxCHECK_MSG( n != NULL, false, "item not found" );
+            wxCHECK_MSG( n != NULL, false, "item not found" );
 
-        node->GetNodes().Remove( n );
-        sub -= n->GetSubTreeCount();
-        ::DestroyTreeHelper(n);
+            node->GetNodes().Remove( n );
+            sub -= n->GetSubTreeCount();
+            ::DestroyTreeHelper(n);
+        }
+        // Make the row number invalid and get a new valid one when user call GetRowCount
+        m_count = -1;
+        node->ChangeSubTreeCount(sub);
     }
-    // Make the row number invalid and get a new valid one when user call GetRowCount
-    m_count = -1;
-    node->ChangeSubTreeCount(sub);
 
     // Change the current row to the last row if the current exceed the max row number
     if( m_currentRow > GetRowCount() )