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
void PrepareSubProperties();
// Removes child property with given pointer. Does not delete it.
void RemoveChild( wxPGProperty* p );
void SetParentalType( int flag )
{
m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS);

View File

@@ -1581,6 +1581,20 @@ void wxPGProperty::AddChild( wxPGProperty* prop )
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
{

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