Don't crash in wxComboBox::GetString() if it's passed an invalid index.
Don't call GetString() with invalid index from GetStringSelection() if there
is no selection.
Do accept wxNOT_FOUND in SetSelectedItem() as it means, according to the docs,
that the existing selection should be reset.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65384
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
void wxNSComboBoxControl::SetSelectedItem(int item)
{
- wxASSERT_MSG(item >= 0 && item < [m_comboBox numberOfItems], "Inavlid item index.");
SendEvents(false);
- [m_comboBox selectItemAtIndex: item];
+
+ if ( item != wxNOT_FOUND )
+ {
+ wxASSERT_MSG( item >= 0 && item < [m_comboBox numberOfItems],
+ "Inavlid item index." );
+ [m_comboBox selectItemAtIndex: item];
+ }
+ else // remove current selection (if we have any)
+ {
+ const int sel = GetSelectedItem();
+ if ( sel != wxNOT_FOUND )
+ [m_comboBox deselectItemAtIndex:sel];
+ }
+
SendEvents(true);
}
wxString wxComboBox::GetString(unsigned int n) const
{
+ wxCHECK_MSG( n < GetCount(), wxString(), "Invalid combobox index" );
+
return GetComboPeer()->GetStringAtIndex(n);
}
wxString wxComboBox::GetStringSelection() const
{
- return GetString(GetSelection());
+ const int sel = GetSelection();
+ return sel == wxNOT_FOUND ? wxString() : GetString(sel);
}
void wxComboBox::SetString(unsigned int n, const wxString& s)