Fix inserting first choice item to wxEnumProperty

Situation when when first choice item is inserted (in wxPGProperty::InsertChoice) to the empty collection must be handled in a special way. In order to do so:
1. The state when there are no choice items in wxEnumProperty object and hence no item is selected must be explicitly indicated (by special index value wxNOT_FOUND).
2. This initial state must be handled in a special way when there is determined new selection index after insertion.

See #16401.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Artur Wieczorek 2014-08-01 22:12:53 +00:00
parent a49a3585fe
commit c632599855
2 changed files with 10 additions and 7 deletions

View File

@ -1896,15 +1896,18 @@ wxValidator* wxPGProperty::DoGetValidator() const
int wxPGProperty::InsertChoice( const wxString& label, int index, int value )
{
wxPropertyGrid* pg = GetGrid();
int sel = GetChoiceSelection();
int newSel = sel;
const int sel = GetChoiceSelection();
if ( index == wxNOT_FOUND )
index = m_choices.GetCount();
if ( index <= sel )
newSel++;
int newSel;
if ( sel == wxNOT_FOUND )
newSel = 0;
else if ( index <= sel )
newSel = sel + 1;
else
newSel = sel;
m_choices.Insert(label, index, value);

View File

@ -1102,7 +1102,7 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS(wxEnumProperty, wxPGProperty,
wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name, const wxChar* const* labels,
const long* values, int value ) : wxPGProperty(label,name)
{
SetIndex(0);
SetIndex(wxNOT_FOUND);
if ( labels )
{
@ -1144,7 +1144,7 @@ wxEnumProperty::wxEnumProperty( const wxString& label, const wxString& name,
const wxArrayString& labels, const wxArrayInt& values, int value )
: wxPGProperty(label,name)
{
SetIndex(0);
SetIndex(wxNOT_FOUND);
if ( &labels && labels.size() )
{