// work in progress
+@interface wxNSTableDataSource : NSObject wxOSX_10_6_AND_LATER(<NSComboBoxDataSource>)
+{
+ wxNSComboBoxControl* impl;
+}
+
+- (NSInteger)numberOfItemsInComboBox:(NSComboBox *)aComboBox;
+- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(NSInteger)index;
+
+@end
+
+
@interface wxNSComboBox : NSComboBox
{
}
}
@end
-wxNSComboBoxControl::wxNSComboBoxControl( wxWindow *wxPeer, WXWidget w ) : wxNSTextFieldControl(wxPeer, w)
+wxNSComboBoxControl::wxNSComboBoxControl( wxComboBox *wxPeer, WXWidget w )
+ : wxNSTextFieldControl(wxPeer, wxPeer, w)
{
m_comboBox = (NSComboBox*)w;
}
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);
}
int wxNSComboBoxControl::FindString(const wxString& text) const
{
- int result = [m_comboBox indexOfItemWithObjectValue:wxCFStringRef( text , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
- if (result == NSNotFound)
+ NSInteger nsresult = [m_comboBox indexOfItemWithObjectValue:wxCFStringRef( text , m_wxPeer->GetFont().GetEncoding() ).AsNSString()];
+
+ int result;
+ if (nsresult == NSNotFound)
result = wxNOT_FOUND;
+ else
+ result = (int) nsresult;
return result;
}
-wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxWindowMac* wxpeer,
+wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxComboBox* wxpeer,
wxWindowMac* WXUNUSED(parent),
wxWindowID WXUNUSED(id),
wxMenu* menu,
return wxSize( lbWidth, lbHeight );
}
-#endif // wxUSE_COMBOBOX
\ No newline at end of file
+#endif // wxUSE_COMBOBOX