Use m_children as it were std::vector

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2008-10-01 15:13:00 +00:00
parent cfceb4a8e0
commit d8c74d044b
3 changed files with 41 additions and 8 deletions

View File

@@ -1984,6 +1984,9 @@ protected:
// Call for after sub-properties added with AddChild // Call for after sub-properties added with AddChild
void PrepareSubProperties(); void PrepareSubProperties();
// Removes child property with given pointer. Does not delete it.
void RemoveChild( wxPGProperty* p );
void SetParentalType( int flag ) void SetParentalType( int flag )
{ {
m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS); m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS);

View File

@@ -1581,6 +1581,20 @@ void wxPGProperty::AddChild( wxPGProperty* prop )
prop->m_parent = this; prop->m_parent = this;
} }
void wxPGProperty::RemoveChild( wxPGProperty* p )
{
wxArrayPGProperty::iterator it;
wxArrayPGProperty& children = m_children;
for ( it=children.begin(); it != children.end(); it++ )
{
if ( *it == p )
{
m_children.erase(it);
break;
}
}
}
void wxPGProperty::AdaptListToValue( wxVariant& list, wxVariant* value ) const void wxPGProperty::AdaptListToValue( wxVariant& list, wxVariant* value ) const
{ {

View File

@@ -592,6 +592,16 @@ bool wxPropertyGridPageState::EnableCategories( bool enable )
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
#if wxUSE_STL
#include <algorithm>
static bool wxPG_SortFunc(wxPGProperty *p1, wxPGProperty *p2)
{
return p1->GetLabel() < p2->GetLabel();
}
#else
static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2) static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2)
{ {
wxPGProperty *pp1 = *p1; wxPGProperty *pp1 = *p1;
@@ -599,6 +609,8 @@ static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2)
return pp1->GetLabel().compare( pp2->GetLabel() ); return pp1->GetLabel().compare( pp2->GetLabel() );
} }
#endif
void wxPropertyGridPageState::SortChildren( wxPGProperty* p ) void wxPropertyGridPageState::SortChildren( wxPGProperty* p )
{ {
if ( !p ) if ( !p )
@@ -613,7 +625,11 @@ void wxPropertyGridPageState::SortChildren( wxPGProperty* p )
if ( pwc->GetChildCount() < 1 ) if ( pwc->GetChildCount() < 1 )
return; return;
#if wxUSE_STL
std::sort(pwc->m_children.begin(), pwc->m_children.end(), wxPG_SortFunc);
#else
pwc->m_children.Sort( wxPG_SortFunc ); pwc->m_children.Sort( wxPG_SortFunc );
#endif
// Fix indexes // Fix indexes
pwc->FixIndexesOfChildren(); pwc->FixIndexesOfChildren();
@@ -1806,7 +1822,7 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item )
wxPGProperty * p = pwc->Item( i ); wxPGProperty * p = pwc->Item( i );
wxASSERT( p != NULL ); wxASSERT( p != NULL );
if ( !p->IsCategory() ) if ( !p->IsCategory() )
m_abcArray->m_children.Remove( p ); m_abcArray->RemoveChild(p);
} }
if ( IsInNonCatMode() ) if ( IsInNonCatMode() )
@@ -1822,14 +1838,13 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item )
if ( !item->IsCategory() && item->GetParent()->IsCategory() ) if ( !item->IsCategory() && item->GetParent()->IsCategory() )
{ {
if ( m_abcArray ) if ( m_abcArray )
{ m_abcArray->RemoveChild(item);
m_abcArray->m_children.Remove( item );
}
} }
// categorized mode - categorized array // categorized mode - categorized array
item->m_parent->m_children.RemoveAt(indinparent); wxArrayPGProperty& parentsChildren = item->m_parent->m_children;
item->m_parent->FixIndexesOfChildren(/*indinparent*/); parentsChildren.erase( parentsChildren.begin() + indinparent );
item->m_parent->FixIndexesOfChildren();
} }
else else
{ {
@@ -1854,13 +1869,14 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item )
} }
} }
} }
cat_parent->m_children.RemoveAt(cat_index); cat_parent->m_children.erase(cat_parent->m_children.begin()+cat_index);
// non-categorized mode - non-categorized array // non-categorized mode - non-categorized array
if ( !item->IsCategory() ) if ( !item->IsCategory() )
{ {
wxASSERT( item->m_parent == m_abcArray ); wxASSERT( item->m_parent == m_abcArray );
item->m_parent->m_children.RemoveAt(indinparent); wxArrayPGProperty& parentsChildren = item->m_parent->m_children;
parentsChildren.erase(parentsChildren.begin() + indinparent);
item->m_parent->FixIndexesOfChildren(indinparent); item->m_parent->FixIndexesOfChildren(indinparent);
} }
} }