style, validator, name);
}
+#if TARGET_API_MAC_OSX
+static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID,
+ DataBrowserItemNotification message, DataBrowserItemDataRef itemData)
+#else
+static pascal void DataBrowserItemNotificationProc(ControlRef browser, DataBrowserItemID itemID,
+ DataBrowserItemNotification message)
+#endif
+{
+ long ref = GetControlReference( browser ) ;
+ if ( ref )
+ {
+ wxListBox* list = wxDynamicCast( ref , wxListBox ) ;
+ for ( size_t i = 0 ; i < list->m_idArray.GetCount() ; ++i )
+ if ( list->m_idArray[i] == (long) itemID )
+ {
+ bool trigger = false ;
+ wxCommandEvent event(
+ wxEVT_COMMAND_LISTBOX_SELECTED, list->GetId() );
+ switch( message )
+ {
+ case kDataBrowserItemDeselected :
+ if ( list->HasMultipleSelection() )
+ trigger = true ;
+ break ;
+ case kDataBrowserItemSelected :
+ trigger = true ;
+ break ;
+ case kDataBrowserItemDoubleClicked :
+ event.SetEventType(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED) ;
+ trigger = true ;
+ break ;
+ default :
+ break ;
+ }
+ if ( trigger )
+ {
+ event.SetEventObject( list );
+ if ( list->HasClientObjectData() )
+ event.SetClientObject( list->GetClientObject(i) );
+ else if ( list->HasClientUntypedData() )
+ event.SetClientData( list->GetClientData(i) );
+ event.SetString( list->GetString(i) );
+ event.SetInt(i) ;
+ event.SetExtraLong( list->HasMultipleSelection() ? message == kDataBrowserItemSelected : TRUE );
+ list->GetEventHandler()->ProcessEvent(event) ;
+ }
+ break ;
+ }
+ }
+}
+
+
static pascal OSStatus ListBoxGetSetItemData(ControlRef browser,
DataBrowserItemID itemID, DataBrowserPropertyID property,
DataBrowserItemDataRef itemData, Boolean changeValue)
callbacks.u.v1.itemDataCallback =
NewDataBrowserItemDataUPP(ListBoxGetSetItemData);
+ callbacks.u.v1.itemNotificationCallback =
+#if TARGET_API_MAC_OSX
+ (DataBrowserItemNotificationUPP) NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationProc) ;
+#else
+ NewDataBrowserItemNotificationUPP(DataBrowserItemNotificationProc) ;
+#endif
SetDataBrowserCallbacks(browser, &callbacks);
MacPostControlCreate(pos,size) ;
#endif // wxUSE_OWNER_DRAWN
}
-bool wxListBox::HasMultipleSelection() const
-{
- return (m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED);
-}
-
int wxListBox::FindString(const wxString& s) const
{
void wxListBox::MacClear()
{
verify_noerr(::RemoveDataBrowserItems((ControlRef) m_macControl , kDataBrowserNoItem , 0 , NULL , kDataBrowserItemNoProperty ) ) ;
- m_dataArray.Empty() ;
+ m_idArray.Empty() ;
}
void wxListBox::MacSetSelection( int n , bool select )
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
{
+ /*
Boolean wasDoubleClick = false ;
long result ;
{
MacDoDoubleClick() ;
}
+ */
}
void wxListBox::MacSetRedraw( bool doDraw )
}
void wxListBox::MacDoClick()
-{
+{/*
wxArrayInt aSelections;
int n ;
size_t count = GetSelections(aSelections);
event.m_commandInt = n;
GetEventHandler()->ProcessEvent(event);
+*/
}
void wxListBox::MacDoDoubleClick()
{
+/*
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, m_windowId);
event.SetEventObject( this );
GetEventHandler()->ProcessEvent(event) ;
+*/
}
void wxListBox::OnChar(wxKeyEvent& event)