X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c5c6707dee3546e8ffb9af764863203489f3604..079f4130b861d094c79e0952966caad8b85dab67:/src/propgrid/propgridiface.cpp diff --git a/src/propgrid/propgridiface.cpp b/src/propgrid/propgridiface.cpp index 13b09fc78d..603fc34ec0 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) @@ -494,6 +523,9 @@ void wxPropertyGridInterface::ClearModifiedStatus() pageIndex++; } + + // Update active editor control, if any + GetPropertyGrid()->RefreshEditor(); } // -----------------------------------------------------------------------