X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/af27647706cb7ca50cf04814ff867532919a252c..14c140606b3b70cde00c805e210d67154b60cef3:/src/propgrid/propgridpagestate.cpp diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index 18c0369c6c..9454dede82 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -448,6 +448,19 @@ wxPGProperty* wxPropertyGridPageState::BaseGetPropertyByName( const wxString& na return (wxPGProperty*) NULL; } +// ----------------------------------------------------------------------- + +void wxPropertyGridPageState::DoSetPropertyName( wxPGProperty* p, + const wxString& newName ) +{ + wxCHECK_RET( p, wxT("invalid property id") ); + + if ( p->GetBaseName().Len() ) m_dictName.erase( p->GetBaseName() ); + if ( newName.Len() ) m_dictName[newName] = (void*) p; + + p->DoSetName(newName); +} + // ----------------------------------------------------------------------- // wxPropertyGridPageState global operations // ----------------------------------------------------------------------- @@ -579,13 +592,25 @@ bool wxPropertyGridPageState::EnableCategories( bool enable ) // ----------------------------------------------------------------------- -static int wxPG_SortFunc(void **p1, void **p2) +#if wxUSE_STL +#include + +static bool wxPG_SortFunc(wxPGProperty *p1, wxPGProperty *p2) { - wxPGProperty *pp1 = *((wxPGProperty**)p1); - wxPGProperty *pp2 = *((wxPGProperty**)p2); + return p1->GetLabel() < p2->GetLabel(); +} + +#else + +static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2) +{ + wxPGProperty *pp1 = *p1; + wxPGProperty *pp2 = *p2; return pp1->GetLabel().compare( pp2->GetLabel() ); } +#endif + void wxPropertyGridPageState::SortChildren( wxPGProperty* p ) { if ( !p ) @@ -600,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(); @@ -1793,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() ) @@ -1809,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 { @@ -1841,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); } }