diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index fa7702ddbb..0936589da7 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -774,22 +774,24 @@ bool wxPGProperty::StringToValue( wxVariant& variant, const wxString& text, int const wxPGProperty* child = Item(curChild); - wxVariant variant(child->GetValueRef()); - if ( child->StringToValue( variant, token, propagatedFlags ) ) + wxVariant oldChildValue = child->GetValue(); + wxVariant variant(oldChildValue); + bool stvRes = child->StringToValue( variant, token, propagatedFlags ); + if ( stvRes || (variant != oldChildValue) ) { - variant.SetName(child->GetBaseName()); - list.Append(variant); - changed = true; + if ( stvRes ) + changed = true; } else { // Failed, becomes unspecified - wxVariant variant2; - variant2.SetName(child->GetBaseName()); - list.Append(variant2); + variant.MakeNull(); changed = true; } + variant.SetName(child->GetBaseName()); + list.Append(variant); + curChild++; if ( curChild >= iMax ) break;