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:
@@ -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);
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user