Fix querying the value of wxEnumProperty in wxPropertyGridEditor.

Doing this changed the internal state of the control and resulted in the
choice not being updated.

Fix this by using wxPG_PROPERTY_SPECIFIC.

Closes #15449.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2014-05-17 12:29:26 +00:00
parent 268b33d8a3
commit d94e807cfc
2 changed files with 11 additions and 6 deletions

View File

@ -1168,7 +1168,7 @@ bool wxPGChoiceEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* pr
property->IsValueUnspecified()
)
{
return property->IntToValue( variant, index, 0 );
return property->IntToValue(variant, index, wxPG_PROPERTY_SPECIFIC);
}
return false;
}
@ -1691,7 +1691,7 @@ bool wxPGCheckBoxEditor::GetValueFromControl( wxVariant& variant, wxPGProperty*
property->IsValueUnspecified()
)
{
return property->IntToValue(variant, index, 0);
return property->IntToValue(variant, index, wxPG_PROPERTY_SPECIFIC);
}
return false;
}

View File

@ -1305,22 +1305,27 @@ bool wxEnumProperty::ValueFromInt_( wxVariant& variant, int intVal, int argFlags
{
// If wxPG_FULL_VALUE is *not* in argFlags, then intVal is index from combo box.
//
ms_nextIndex = -2;
int setAsNextIndex = -2;
if ( argFlags & wxPG_FULL_VALUE )
{
ms_nextIndex = GetIndexForValue( intVal );
setAsNextIndex = GetIndexForValue( intVal );
}
else
{
if ( intVal != GetIndex() )
{
ms_nextIndex = intVal;
setAsNextIndex = intVal;
}
}
if ( ms_nextIndex != -2 )
if ( setAsNextIndex != -2 )
{
// If wxPG_PROPERTY_SPECIFIC is set, then this is done for
// validation or fetching a data purposes only, and index must not be changed.
if ( !(argFlags & wxPG_PROPERTY_SPECIFIC) )
ms_nextIndex = setAsNextIndex;
if ( !(argFlags & wxPG_FULL_VALUE) )
intVal = m_choices.GetValue(intVal);