// Author: Stefan Csomor
// Modified by:
// Created: 1998-01-01
-// RCS-ID: $Id: combobox.mm 54129 2008-06-11 19:30:52Z SC $
+// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_COMBOBOX
#include "wx/combobox.h"
+#include "wx/evtloop.h"
#ifndef WX_PRECOMP
#include "wx/menu.h"
// 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
{
}
wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self );
if ( impl && impl->ShouldSendEvents())
{
- wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
+ wxComboBox* wxpeer = static_cast<wxComboBox*>(impl->GetWXPeer());
if ( wxpeer ) {
+ const int sel = wxpeer->GetSelection();
+
wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, wxpeer->GetId());
event.SetEventObject( wxpeer );
- event.SetInt( static_cast<wxComboBox*>(wxpeer)->GetSelection() );
+ event.SetInt( sel );
+ event.SetString( wxpeer->GetString(sel) );
// For some reason, wxComboBox::GetValue will not return the newly selected item
// while we're inside this callback, so use AddPendingEvent to make sure
// GetValue() returns the right value.
+ wxEventLoop* const loop = (wxEventLoop*) wxEventLoopBase::GetActive();
+ if ( loop )
+ loop->OSXUseLowLevelWakeup(true);
+
wxpeer->GetEventHandler()->AddPendingEvent( event );
+
+ if ( loop )
+ loop->OSXUseLowLevelWakeup(false);
}
}
}
return result;
}
+void wxNSComboBoxControl::Popup()
+{
+ id ax = NSAccessibilityUnignoredDescendant(m_comboBox);
+ [ax accessibilitySetValue: [NSNumber numberWithBool: YES] forAttribute: NSAccessibilityExpandedAttribute];
+}
+
+void wxNSComboBoxControl::Dismiss()
+{
+ id ax = NSAccessibilityUnignoredDescendant(m_comboBox);
+ [ax accessibilitySetValue: [NSNumber numberWithBool: NO] forAttribute: NSAccessibilityExpandedAttribute];
+}
+
wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxComboBox* wxpeer,
wxWindowMac* WXUNUSED(parent),
wxWindowID WXUNUSED(id),
- wxMenu* menu,
+ wxMenu* WXUNUSED(menu),
const wxPoint& pos,
const wxSize& size,
long style,