]> git.saurik.com Git - wxWidgets.git/commitdiff
Update the icon of a parent item without children in wxDataViewCtrl.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 11 Aug 2012 23:09:33 +0000 (23:09 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 11 Aug 2012 23:09:33 +0000 (23:09 +0000)
Ensure that a parent item that doesn't have any children any more isn't left
with a "-" expander icon, it can't be collapsed any more but only expanded
again (possibly adding children under it dynamically). This results in better
behaviour in e.g. the last page of the dataview sample where the container
item remained with a "+" icon even after its both children were deleted.

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

src/generic/datavgen.cpp

index b1ce9f116294d1de52bfcf23083035c6bc06139f..7fef06b83bfdfaaa1c5eb3d1a1d4d5c8105f7d1d 100644 (file)
@@ -2339,7 +2339,17 @@ bool wxDataViewMainWindow::ItemDeleted(const wxDataViewItem& parent,
         // If this was the last child to be removed, it's possible the parent
         // node became a leaf. Let's ask the model about it.
         if ( parentNode->GetChildNodes().empty() )
-            parentNode->SetHasChildren(GetModel()->IsContainer(parent));
+        {
+            bool isContainer = GetModel()->IsContainer(parent);
+            parentNode->SetHasChildren(isContainer);
+            if ( isContainer )
+            {
+                // If it's still a container, make sure we show "+" icon for it
+                // and not "-" one as there is nothing to collapse any more.
+                if ( parentNode->IsOpen() )
+                    parentNode->ToggleOpen();
+            }
+        }
 
         // Update selection by removing 'item' and its entire children tree from the selection.
         if ( !m_selection.empty() )