+ wxListBox *item = (wxListBox *) clientData;
+
+ if (item->InSetValue())
+ return;
+
+ wxEventType evtType;
+
+ if( cbs->reason == XmCR_DEFAULT_ACTION )
+ evtType = wxEVT_COMMAND_LISTBOX_DOUBLECLICKED;
+ else
+ evtType = wxEVT_COMMAND_LISTBOX_SELECTED;
+
+ int n = cbs->item_position - 1;
+ wxCommandEvent event (evtType, item->GetId());
+ if ( item->HasClientObjectData() )
+ event.SetClientObject( item->GetClientObject(n) );
+ else if ( item->HasClientUntypedData() )
+ event.SetClientData( item->GetClientData(n) );
+ event.m_commandInt = n;
+ event.m_extraLong = TRUE;
+ event.SetEventObject(item);
+ event.SetString( item->GetString( n ) );
+
+ int x = -1;
+ if( NULL != cbs->event && cbs->event->type == ButtonRelease )
+ {
+ XButtonEvent* evt = (XButtonEvent*)cbs->event;
+
+ x = evt->x;
+ }
+
+ switch (cbs->reason)
+ {
+ case XmCR_MULTIPLE_SELECT:
+ case XmCR_BROWSE_SELECT:
+#if wxUSE_CHECKLISTBOX
+ item->DoToggleItem( n, x );
+#endif
+ case XmCR_DEFAULT_ACTION:
+ item->GetEventHandler()->ProcessEvent(event);
+ break;
+ case XmCR_EXTENDED_SELECT:
+ switch (cbs->selection_type)
+ {
+ case XmINITIAL:
+ case XmADDITION:
+ case XmMODIFICATION:
+ item->DoToggleItem( n, x );
+ item->GetEventHandler()->ProcessEvent(event);
+ break;
+ }
+ break;
+ }