X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/020b004113a8ab9b9c42a9a56716f3a27b0a8621..357d2b88cb15fa0ad97b1676fdbc88c2abc85451:/src/propgrid/propgridpagestate.cpp diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index 693d339217..4fff40666a 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -4,7 +4,7 @@ // Author: Jaakko Salli // Modified by: // Created: 2008-08-24 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -38,9 +38,9 @@ // This define is necessary to prevent macro clearing #define __wxPG_SOURCE_FILE__ -#include -#include -#include +#include "wx/propgrid/propgridpagestate.h" +#include "wx/propgrid/propgrid.h" +#include "wx/propgrid/editors.h" #define wxPG_DEFAULT_SPLITTERX 110 @@ -592,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) +{ + return p1->GetLabel() < p2->GetLabel(); +} + +#else + +static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2) { - wxPGProperty *pp1 = *((wxPGProperty**)p1); - wxPGProperty *pp2 = *((wxPGProperty**)p2); + wxPGProperty *pp1 = *p1; + wxPGProperty *pp2 = *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); } }