Buggy code:
void drawBackground ( int control ) { } void drawWidget ( int control , int damageRgn , int visibleRgn , int theEvent ) { } public Rectangle getBounds ( ) { } public Control getControl ( ) { } public Image getDisabledImage ( ) { } public boolean getEnabled ( ) { } int getDrawCount ( int control ) { } public Image getHotImage ( ) { } public ToolBar getParent ( ) { } public boolean getSelection ( ) { } public String getToolTipText ( ) { } public int getWidth ( ) { } int getVisibleRegion ( int control , boolean clipChildren ) { } int helpProc ( int inControl , int inGlobalMouse , int inRequest , int outContentProvided , int ioHelpContent ) { } void hookEvents ( ) { } void invalidateVisibleRegion ( int control ) { } void invalWindowRgn ( int window , int rgn ) { } public boolean isEnabled ( ) { } int kEventControlContextualMenuClick ( int nextHandler , int theEvent , int userData ) { } int kEventControlHit ( int nextHandler , int theEvent , int userData ) { } int kEventControlTrack ( int nextHandler , int theEvent , int userData ) { } int kEventMouseDown ( int nextHandler , int theEvent , int userData ) { int result = parent . kEventMouseDown ( nextHandler , theEvent , userData ) ; if ( result == ( OS . noErr ) ) return result ; if ( ( ( style ) & ( SWT . DROP_DOWN ) ) != 0 ) { int sizeof = org . eclipse . swt . internal . carbon . Point . sizeof ; org . eclipse . swt . internal . carbon . Point pt = new org . eclipse . swt . internal . carbon . Point ( ) ; OS . GetEventParameter ( theEvent , kEventParamMouseLocation , typeQDPoint , null , sizeof , null , pt ) ; Rect rect = new Rect ( ) ; int window = OS . GetControlOwner ( handle ) ; OS . GetWindowBounds ( window , ( ( short ) ( kWindowContentRgn ) ) , rect ) ; int x = ( pt . h ) - ( rect . left ) ; int y = ( pt . v ) - ( rect . top ) ; OS . GetControlBounds ( handle , rect ) ; x -= rect . left ; y -= rect . top ; int width = ( rect . right ) - ( rect . left ) ; if ( ( width - x ) < 12 ) { x = rect . left ; y = rect . bottom ; OS . GetControlBounds ( parent . handle , rect ) ; x -= rect . left ; y -= rect . top ; Event event = new Event ( ) ; event . detail = SWT . ARROW ; event . x = x ; event . y = y ; postEvent ( Selection , event ) ; } } display . grabControl = null ; display . runDeferredEvents ( ) ; tracking = false ; result = OS . CallNextEventHandler ( nextHandler , theEvent ) ; if ( tracking ) { org . eclipse . swt . internal . carbon . Point outPt = new org . eclipse . swt . internal . carbon . Point ( ) ; OS . GetGlobalMouse ( outPt ) ; Rect rect = new Rect ( ) ; int window = OS . GetControlOwner ( handle ) ; OS . GetWindowBounds ( window , ( ( short ) ( kWindowContentRgn ) ) , rect ) ; int x = ( outPt . h ) - ( rect . left ) ; int y = ( outPt . v ) - ( rect . top ) ; OS . GetControlBounds ( parent . handle , rect ) ; x -= rect . left ; y -= rect . top ; short [ ] button = new short [ 1 ] ; OS . GetEventParameter ( theEvent , kEventParamMouseButton , typeMouseButton , null , 2 , null , button ) ; int chord = OS . GetCurrentEventButtonState ( ) ; int modifiers = OS . GetCurrentEventKeyModifiers ( ) ; <START_BUG> parent . sendMouseEvent ( MouseUp , button [ 0 ] , chord , ( ( short ) ( x ) ) , ( ( short ) ( y ) ) , modifiers , false ) ; <END_BUG> } tracking = false ; return result ; } int kEventMouseDragged ( int nextHandler , int theEvent , int userData ) { } int kEventMouseMoved ( int nextHandler , int theEvent , int userData ) { } int kEventMouseUp ( int nextHandler , int theEvent , int userData ) { } void register ( ) { } void releaseChild ( ) { } void releaseHandle ( ) { } void releaseWidget ( ) { } public void removeSelectionListener ( SelectionListener listener ) { } void resetVisibleRegion ( int control ) { } void selectRadio ( ) { } void setBounds ( int x , int y , int width , int height ) { } public void setControl ( Control control ) { } public void setEnabled ( boolean enabled ) { } void setFontStyle ( Font font ) { } public void setDisabledImage ( Image image ) { } public void setHotImage ( Image image ) { } public void setImage ( Image image ) { } boolean setRadioSelection ( boolean value ) { } public void setSelection ( boolean selected ) { } void setSize ( int width , int height , boolean layout ) { } public void setText ( String string ) { } public void setToolTipText ( String string ) { } public void setWidth ( int width ) { } void setZOrder ( ) { } void updateImage ( ) { } void updateText ( ) { } }

Fix:
parent . sendMouseEvent ( MouseUp , button [ 0 ] , chord , ( ( short ) ( x ) ) , ( ( short ) ( y ) ) , modifiers , true ) ;