Invalidate best size of wxOSX wxChoice after its number of items changes.

This fixes the calculation of the initial best size as previously the default
value was not updated even if longer strings were added later.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72847 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2012-11-01 17:15:25 +00:00
parent c94c3a77b8
commit c236dbaed2
2 changed files with 14 additions and 3 deletions

View File

@ -93,6 +93,10 @@ protected:
wxArrayString m_strings;
wxChoiceDataArray m_datas ;
wxMenu* m_popUpMenu ;
private:
// This should be called when the number of items in the control changes.
void DoAfterItemCountChange();
};
#endif

View File

@ -100,6 +100,13 @@ bool wxChoice::Create(wxWindow *parent,
// adding/deleting items to/from the list
// ----------------------------------------------------------------------------
void wxChoice::DoAfterItemCountChange()
{
InvalidateBestSize();
GetPeer()->SetMaximum( GetCount() );
}
int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items,
unsigned int pos,
void **clientData, wxClientDataType type)
@ -132,7 +139,7 @@ int wxChoice::DoInsertItems(const wxArrayStringsAdapter & items,
AssignNewItemClientData(idx, clientData, i, type);
}
GetPeer()->SetMaximum( GetCount() );
DoAfterItemCountChange();
return pos - 1;
}
@ -148,8 +155,8 @@ void wxChoice::DoDeleteOneItem(unsigned int n)
m_strings.RemoveAt( n ) ;
m_datas.RemoveAt( n ) ;
GetPeer()->SetMaximum( GetCount() ) ;
DoAfterItemCountChange();
}
void wxChoice::DoClear()
@ -162,7 +169,7 @@ void wxChoice::DoClear()
m_strings.Empty() ;
m_datas.Empty() ;
GetPeer()->SetMaximum( 0 ) ;
DoAfterItemCountChange();
}
// ----------------------------------------------------------------------------