X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1621f192d95b44c5909a788b8f1fe9e9c381df72..e66a89eda9dd75fc36d63bc34c2e8067276cb3e7:/src/propgrid/propgridiface.cpp diff --git a/src/propgrid/propgridiface.cpp b/src/propgrid/propgridiface.cpp index 3b4bfe078c..f762133260 100644 --- a/src/propgrid/propgridiface.cpp +++ b/src/propgrid/propgridiface.cpp @@ -317,13 +317,42 @@ void wxPropertyGridInterface::DeleteProperty( wxPGPropArg id ) if ( grid->GetState() == state ) grid->DoSelectProperty(NULL, wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE); - state->DoDelete( p ); + state->DoDelete( p, true ); RefreshGrid(state); } // ----------------------------------------------------------------------- +wxPGProperty* wxPropertyGridInterface::RemoveProperty( wxPGPropArg id ) +{ + wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) + + wxCHECK( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE), + wxNullProperty); + + wxPropertyGridPageState* state = p->GetParentState(); + wxPropertyGrid* grid = state->GetGrid(); + + if ( grid->GetState() == state ) + { + grid->DoSelectProperty(NULL, + wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE); + } + + state->DoDelete( p, false ); + + // Mark the property as 'unattached' + p->m_parentState = NULL; + p->m_parent = NULL; + + RefreshGrid(state); + + return p; +} + +// ----------------------------------------------------------------------- + wxPGProperty* wxPropertyGridInterface::ReplaceProperty( wxPGPropArg id, wxPGProperty* property ) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty) @@ -361,11 +390,16 @@ bool wxPropertyGridInterface::ClearSelection( bool validation ) flags |= wxPG_SEL_NOVALIDATE; wxPropertyGridPageState* state = m_pState; - wxPropertyGrid* pg = state->GetGrid(); - if ( pg->GetState() == state ) - return pg->DoSelectProperty(NULL, flags); - else - state->SetSelection(NULL); + + if ( state ) + { + wxPropertyGrid* pg = state->GetGrid(); + if ( pg->GetState() == state ) + return pg->DoSelectProperty(NULL, flags); + else + state->SetSelection(NULL); + } + return true; } @@ -1003,7 +1037,7 @@ wxString wxPropertyGridInterface::SaveEditableState( int includedStates ) const if ( !p->HasFlag(wxPG_PROP_COLLAPSED) ) result += EscapeDelimiters(p->GetName()); - result += wxS(","); + result += wxS(","); }