databrowser notification trigger events now

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2004-03-30 16:57:49 +00:00
parent 2d73b710e1
commit 83ce56341b

View File

@@ -62,6 +62,58 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
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)
@@ -178,6 +230,12 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID id,
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) ;
@@ -310,11 +368,6 @@ void wxListBox::DoSetItems(const wxArrayString& choices, void** clientData)
#endif // wxUSE_OWNER_DRAWN
}
bool wxListBox::HasMultipleSelection() const
{
return (m_windowStyle & wxLB_MULTIPLE) || (m_windowStyle & wxLB_EXTENDED);
}
int wxListBox::FindString(const wxString& s) const
{
@@ -587,7 +640,7 @@ void wxListBox::MacAppend( const wxString& text)
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 )
@@ -651,6 +704,7 @@ void wxListBox::OnSize( wxSizeEvent &event)
void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart , bool WXUNUSED(mouseStillDown))
{
/*
Boolean wasDoubleClick = false ;
long result ;
@@ -663,6 +717,7 @@ void wxListBox::MacHandleControlClick( WXWidget control , wxInt16 controlpart ,
{
MacDoDoubleClick() ;
}
*/
}
void wxListBox::MacSetRedraw( bool doDraw )
@@ -671,7 +726,7 @@ void wxListBox::MacSetRedraw( bool doDraw )
}
void wxListBox::MacDoClick()
{
{/*
wxArrayInt aSelections;
int n ;
size_t count = GetSelections(aSelections);
@@ -715,13 +770,16 @@ void wxListBox::MacDoClick()
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)