Buggy code:
OS . DiffRgn ( region . handle , rgn , region . handle ) ; } } if ( gridWidth != 0 ) { if ( ( columnCount ) == 0 ) { if ( ( OS . GetDataBrowserItemPartBounds ( handle , id , Table . COLUMN_ID , kDataBrowserPropertyEnclosingPart , rect ) ) == ( OS . noErr ) ) { OS . SetRectRgn ( rgn , ( ( short ) ( rect . right ) ) , ( ( short ) ( clientArea . y ) ) , ( ( short ) ( ( rect . right ) + gridWidth ) ) , ( ( short ) ( ( clientArea . y ) + ( clientArea . height ) ) ) ) ; OS . DiffRgn ( region . handle , rgn , region . handle ) ; } } else { for ( int i = 0 ; i < ( columnCount ) ; i ++ ) { if ( ( OS . GetDataBrowserItemPartBounds ( handle , id , columns [ i ] . id , kDataBrowserPropertyEnclosingPart , rect ) ) == ( OS . noErr ) ) { OS . SetRectRgn ( rgn , ( ( short ) ( rect . right ) ) , ( ( short ) ( clientArea . y ) ) , ( ( short ) ( ( rect . right ) + gridWidth ) ) , ( ( short ) ( ( clientArea . y ) + ( clientArea . height ) ) ) ) ; OS . DiffRgn ( region . handle , rgn , region . handle ) ; } } } } OS . DisposeRgn ( rgn ) ; } if ( region != null ) gc . setClipping ( region ) ; fillBackground ( handle , gc . handle , null ) ; if ( region != null ) { gc . setClipping ( ( ( Rectangle ) ( null ) ) ) ; region . dispose ( ) ; } } OS . CGContextSaveGState ( gc . handle ) ; int itemRgn = OS . NewRgn ( ) ; OS . SetRectRgn ( itemRgn , ( ( short ) ( itemX ) ) , ( ( short ) ( itemY ) ) , ( ( short ) ( itemX + itemWidth ) ) , ( ( short ) ( itemY + itemHeight ) ) ) ; int clip = OS . NewRgn ( ) ; OS . GetClip ( clip ) ; if ( ! ( OS . HIVIEW ) ) OS . OffsetRgn ( clip , ( ( short ) ( - offsetX ) ) , ( ( short ) ( - offsetY ) ) ) ; OS . SectRgn ( clip , itemRgn , itemRgn ) ; OS . DisposeRgn ( clip ) ; Region region = Region . carbon_new ( display , itemRgn ) ; Font font = item . getFont ( columnIndex ) ; Color background = item . getBackground ( columnIndex ) ; Color foreground = item . getForeground ( columnIndex ) ; Image image = item . getImage ( columnIndex ) ; String text = item . getText ( columnIndex ) ; gc . setClipping ( region ) ; gc . setFont ( font ) ; Point extent = gc . stringExtent ( text ) ; int contentWidth = extent . x ; Rectangle imageBounds = null ; int gap = 0 ; if ( image != null ) { gap = getGap ( ) ; imageBounds = image . getBounds ( ) ; contentWidth += ( this . imageBounds . width ) + gap ; } int paintWidth = contentWidth ; if ( hooks ( MeasureItem ) ) { Event event = new Event ( ) ; event . item = item ; event . index = columnIndex ; event . gc = gc ; event . width = contentWidth ; event . height = itemHeight ; sendEvent ( MeasureItem , event ) ; <START_BUG> if ( ( this . itemHeight ) == ( - 1 ) ) { <END_BUG> this . itemHeight = event . height ; OS . SetDataBrowserTableViewRowHeight ( handle , ( ( short ) ( event . height ) ) ) ; } if ( setScrollWidth ( item ) ) { redrawWidget ( handle , false ) ; } contentWidth = event . width ; itemHeight = event . height ; gc . setClipping ( region ) ; gc . setFont ( font ) ; } int drawState = SWT . FOREGROUND ; if ( ( ( item . background ) != null ) || ( ( ( item . cellBackground ) != null ) && ( ( item . cellBackground [ columnIndex ] ) != null ) ) ) drawState |= SWT . BACKGROUND ; if ( ( itemState & ( ( OS . kDataBrowserItemIsSelected ) | ( OS . kDataBrowserItemIsDragTarget ) ) ) != 0 ) drawState |= SWT . SELECTED ; boolean wasSelected = ( drawState & ( SWT . SELECTED ) ) != 0 ; if ( ( ( drawState & ( SWT . SELECTED ) ) != 0 ) && ( ( ( ( style ) & ( SWT . FULL_SELECTION ) ) != 0 ) || ( columnIndex == 0 ) ) ) { gc . setBackground ( display . getSystemColor ( COLOR_LIST_SELECTION ) ) ; gc . setForeground ( display . getSystemColor ( COLOR_LIST_SELECTION_TEXT ) ) ; } else { gc . setBackground ( background ) ; gc . setForeground ( foreground ) ; } if ( hooks ( EraseItem ) ) { Event event = new Event ( ) ; event . item = item ; event . index = columnIndex ; event . gc = gc ; event . x = itemX ; event . y = itemY ; event . width = itemWidth ; event . height = itemHeight ;

Fix:
if ( ( this . itemHeight ) < ( event . height ) ) {