X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b0f0eda8ce631577cf4176d2d17785daddc9b5bc..55410bb4f67febe1ca20654f078ea4fb9a6223ae:/src/propgrid/props.cpp?ds=sidebyside diff --git a/src/propgrid/props.cpp b/src/propgrid/props.cpp index bb9d18a7a0..9014519cee 100644 --- a/src/propgrid/props.cpp +++ b/src/propgrid/props.cpp @@ -200,7 +200,7 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int int firstNonZeroPos = 0; - for ( ; i != iMax; i++ ) + for ( ; i != iMax; ++i ) { wxChar c = *i; if ( c != wxS('0') && c != wxS(' ') ) @@ -606,7 +606,7 @@ void wxPropertyGrid::DoubleToString(wxString& target, wxString::const_iterator i = target.end() - 1; size_t new_len = target.length() - 1; - for ( ; i != target.begin(); i-- ) + for ( ; i != target.begin(); --i ) { if ( *i != wxS('0') ) break; @@ -632,7 +632,7 @@ wxString wxFloatProperty::ValueToString( wxVariant& value, value, m_precision, !(argFlags & wxPG_FULL_VALUE), - (wxString*) NULL); + NULL); } return text; } @@ -963,6 +963,7 @@ wxEnumProperty::~wxEnumProperty () } int wxEnumProperty::ms_nextIndex = -2; +int wxEnumProperty::ms_prevIndex = -1; void wxEnumProperty::OnSetValue() { @@ -973,7 +974,7 @@ void wxEnumProperty::OnSetValue() else if ( variantType == wxPG_VARIANT_TYPE_STRING ) ValueFromString_( m_value, m_value.GetString(), 0 ); else - wxASSERT( false ); + wxFAIL; if ( ms_nextIndex != -2 ) { @@ -1053,7 +1054,7 @@ bool wxEnumProperty::ValueFromString_( wxVariant& value, const wxString& text, i setAsNextIndex = -1; value = text; } - else if ( m_index != useIndex ) + else if ( useIndex != GetIndex() ) { if ( useIndex != -1 ) { @@ -1094,7 +1095,7 @@ bool wxEnumProperty::ValueFromInt_( wxVariant& variant, int intVal, int argFlags } else { - if ( m_index != intVal ) + if ( intVal != GetIndex() ) { ms_nextIndex = intVal; } @@ -1113,16 +1114,29 @@ bool wxEnumProperty::ValueFromInt_( wxVariant& variant, int intVal, int argFlags return false; } +void +wxEnumProperty::OnValidationFailure( wxVariant& WXUNUSED(pendingValue) ) +{ + // Revert index + m_index = ms_prevIndex; + ResetNextIndex(); +} + void wxEnumProperty::SetIndex( int index ) { + ms_prevIndex = m_index; ms_nextIndex = -2; m_index = index; } int wxEnumProperty::GetIndex() const { + if ( m_value.IsNull() ) + return -1; + if ( ms_nextIndex != -2 ) return ms_nextIndex; + return m_index; } @@ -1252,7 +1266,7 @@ void wxFlagsProperty::Init() wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, const wxChar** labels, const long* values, long value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( labels ) { @@ -1272,7 +1286,7 @@ wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, const wxArrayString& labels, const wxArrayInt& values, int value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( &labels && labels.size() ) { @@ -1292,7 +1306,7 @@ wxFlagsProperty::wxFlagsProperty( const wxString& label, const wxString& name, wxPGChoices& choices, long value ) : wxPGProperty(label,name) { - m_oldChoicesData = (wxPGChoicesData*) NULL; + m_oldChoicesData = NULL; if ( choices.IsOk() ) { @@ -2118,7 +2132,7 @@ bool wxArrayEditorDialog::Create( wxWindow *parent, // Manipulator buttons wxBoxSizer* colsizer = new wxBoxSizer( wxVERTICAL ); - m_butCustom = (wxButton*) NULL; + m_butCustom = NULL; if ( m_custBtText ) { m_butCustom = new wxButton(this,28,::wxGetTranslation(m_custBtText)); @@ -2328,7 +2342,7 @@ wxPGArrayStringEditorDialog::wxPGArrayStringEditorDialog() void wxPGArrayStringEditorDialog::Init() { - m_pCallingClass = (wxArrayStringProperty*) NULL; + m_pCallingClass = NULL; } void wxPGArrayStringEditorDialog::OnCustomEditClick(wxCommandEvent& ) @@ -2400,16 +2414,13 @@ void wxPropertyGrid::ArrayStringToString( wxString& dst, const wxArrayString& sr unsigned int i; unsigned int itemCount = src.size(); - wxChar preas[2]; + wxChar preas[2] = { 0, 0 }; dst.Empty(); - if ( !preDelim ) - preas[0] = 0; - else if ( (flags & 1) ) + if ( flags & 1 ) { preas[0] = preDelim; - preas[1] = 0; pdr = wxS("\\"); pdr += preDelim; }