]> git.saurik.com Git - wxWidgets.git/blobdiff - src/propgrid/propgridpagestate.cpp
Cast needed to fix compilation on 10.4 --This line, and those below,
[wxWidgets.git] / src / propgrid / propgridpagestate.cpp
index 51959e336204a5af8f01cb476621b29db26a5e97..0e34d126fbb573f37f711d89da9237ea07dadce0 100644 (file)
@@ -231,7 +231,7 @@ void wxPropertyGridPageState::InitNonCatMode()
 {
     if ( !m_abcArray )
     {
-        m_abcArray = new wxPGRootProperty();
+        m_abcArray = new wxPGRootProperty(wxS("<Root_NonCat>"));
         m_abcArray->SetParentState(this);
         m_abcArray->SetFlag(wxPG_PROP_CHILDREN_ARE_COPIES);
     }
@@ -268,6 +268,15 @@ void wxPropertyGridPageState::InitNonCatMode()
 
 void wxPropertyGridPageState::DoClear()
 {
+    if ( m_pPropGrid && m_pPropGrid->GetState() == this  )
+    {
+        m_pPropGrid->ClearSelection(false);
+    }
+    else
+    {
+        m_selected = NULL;
+    }
+
     m_regularArray.Empty();
     if ( m_abcArray )
         m_abcArray->Empty();
@@ -280,8 +289,6 @@ void wxPropertyGridPageState::DoClear()
 
     m_virtualHeight = 0;
     m_vhCalcPending = 0;
-
-    m_selected = NULL;
 }
 
 // -----------------------------------------------------------------------
@@ -683,17 +690,9 @@ void wxPropertyGridPageState::DoSort( int flags )
 {
     DoSortChildren( m_properties, flags | wxPG_RECURSE );
 
-    // Sort categories as well (but we need not do it recursively)
-    if ( IsInNonCatMode() )
-    {
-        size_t i;
-        for ( i=0;i<m_regularArray.GetChildCount();i++)
-        {
-            wxPGProperty* p = m_regularArray.Item(i);
-            if ( p->IsCategory() )
-                DoSortChildren( p, 0 );
-        }
-    }
+    // We used to sort categories as well here also if in non-categorized
+    // mode, but doing would naturally cause child indices to become
+    // corrupted.
 }
 
 // -----------------------------------------------------------------------
@@ -871,7 +870,7 @@ void wxPropertyGridPageState::SetSplitterLeft( bool subProps )
 {
     wxPropertyGrid* pg = GetGrid();
     wxClientDC dc(pg);
-    dc.SetFont(pg->m_font);
+    dc.SetFont(pg->GetFont());
 
     int maxW = GetColumnFitWidth(dc, m_properties, 0, subProps);
 
@@ -888,7 +887,7 @@ wxSize wxPropertyGridPageState::DoFitColumns( bool WXUNUSED(allowGridResize) )
 {
     wxPropertyGrid* pg = GetGrid();
     wxClientDC dc(pg);
-    dc.SetFont(pg->m_font);
+    dc.SetFont(pg->GetFont());
 
     int marginWidth = pg->m_marginWidth;
     int accWid = marginWidth;
@@ -1644,6 +1643,9 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index
     if ( !res )
         return m_currentCategory;
 
+    bool parentIsRoot = parent->IsRoot();
+    bool parentIsCategory = parent->IsCategory();
+
     // Note that item must be added into current mode later.
 
     // If parent is wxParentProperty, just stick it in...
@@ -1656,42 +1658,34 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index
     //   1) Add to given category in given index.
     //   2) Add as last item in m_abcArray.
 
-    if ( !parent->IsCategory() && !parent->IsRoot() )
-    {
-        // Parent is wxParentingProperty: Just stick it in...
-        parent->AddChild2( property, index );
-    }
-    else
+    if ( m_properties == &m_regularArray )
     {
-        // Parent is Category or Root.
+        // We are currently in Categorized mode
 
-        if ( m_properties == &m_regularArray )
+        // Only add non-categories to m_abcArray.
+        if ( m_abcArray && !property->IsCategory() &&
+             (parentIsCategory || parentIsRoot) )
         {
-            // Categorized mode
-
-            // Only add non-categories to m_abcArray.
-            if ( m_abcArray && !property->IsCategory() )
-                m_abcArray->AddChild2( property, -1, false );
-
-            // Add to current mode.
-            parent->AddChild2( property, index );
-
+            m_abcArray->AddChild2( property, -1, false );
         }
-        else
-        {
-            // Non-categorized mode.
-
-            if ( parent != m_properties )
-                // Parent is category.
-                parent->AddChild2( property, index, false );
-            else
-                // Parent is root.
-                m_regularArray.AddChild2( property, -1, false );
 
-            // Add to current mode (no categories).
-            if ( !property->IsCategory() )
-                m_abcArray->AddChild2( property, index );
-        }
+        // Add to current mode.
+        parent->AddChild2( property, index, true );
+    }
+    else
+    {
+        // We are currently in Non-categorized/Alphabetic mode
+
+        if ( parentIsCategory )
+            // Parent is category.
+            parent->AddChild2( property, index, false );
+        else if ( parentIsRoot )
+            // Parent is root.
+            m_regularArray.AddChild2( property, -1, false );
+
+        // Add to current mode
+        if ( !property->IsCategory() )
+            m_abcArray->AddChild2( property, index, true );
     }
 
     // category stuff
@@ -1705,7 +1699,7 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index
 
     // Only add name to hashmap if parent is root or category
     if ( property->m_name.length() &&
-        (parent->IsCategory() || parent->IsRoot()) )
+        (parentIsCategory || parentIsRoot) )
         m_dictName[property->m_name] = (void*) property;
 
     VirtualHeightChanged();