Buggy code:
protected void checkSubclass ( ) { } void clear ( TreeItem parentItem , int index , boolean all ) { } void clearAll ( TreeItem parentItem , boolean all ) { } public void clear ( int index , boolean all ) { } public void clearAll ( boolean all ) { } void clearCustomWidths ( TreeItem item ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } void createColumn ( TreeItem item , int index ) { } void createHandle ( ) { } void createItem ( TreeColumn column , int index ) { } void createItem ( TreeItem item , TreeItem parentItem , int index ) { } void createWidget ( ) { } Color defaultBackground ( ) { } Color defaultForeground ( ) { } public void deselectAll ( ) { } void deregister ( ) { } public void deselect ( TreeItem item ) { } void destroyItem ( TreeColumn column ) { } void destroyItem ( TreeItem item ) { } void drawInteriorWithFrame_inView ( int id , int sel , int cellFrame , int view ) { NSRect rect = new NSRect ( ) ; OS . memmove ( rect , cellFrame , sizeof ) ; NSOutlineView outlineView = ( ( NSOutlineView ) ( this . view ) ) ; NSBrowserCell cell = new NSBrowserCell ( id ) ; NSRange rowsRange = outlineView . rowsInRect ( rect ) ; int rowIndex = ( ( int ) ( rowsRange . location ) ) ; TreeItem item = ( ( TreeItem ) ( display . getWidget ( outlineView . itemAtRow ( rowIndex ) . id ) ) ) ; int columnIndex = 0 ; id nsColumn = null ; int nsColumnIndex = 0 ; if ( ( columnCount ) != 0 ) { NSIndexSet columnsSet = outlineView . columnIndexesInRect ( rect ) ; nsColumnIndex = ( ( int ) ( columnsSet . firstIndex ( ) ) ) ; NSArray nsColumns = outlineView . tableColumns ( ) ; nsColumn = nsColumns . objectAtIndex ( nsColumnIndex ) ; for ( int i = 0 ; i < ( columnCount ) ; i ++ ) { if ( ( columns [ i ] . nsColumn . id ) == ( nsColumn . id ) ) { columnIndex = indexOf ( columns [ i ] ) ; break ; } } } Color background = ( ( item . cellBackground ) != null ) ? item . cellBackground [ columnIndex ] : null ; if ( background == null ) background = item . background ; boolean drawBackground = background != null ; boolean drawForeground = true ; boolean isSelected = outlineView . isRowSelected ( rowIndex ) ; boolean drawSelection = isSelected ; NSColor nsSelectionBackground = null ; NSColor nsSelectionForeground = null ; if ( isSelected ) { if ( isFocusControl ( ) ) { nsSelectionForeground = NSColor . alternateSelectedControlTextColor ( ) ; } else { nsSelectionForeground = NSColor . selectedControlTextColor ( ) ; } nsSelectionForeground = nsSelectionForeground . colorUsingColorSpace ( NSColorSpace . deviceRGBColorSpace ( ) ) ; nsSelectionBackground = cell . highlightColorInView ( outlineView ) ; nsSelectionBackground = nsSelectionBackground . colorUsingColorSpace ( NSColorSpace . deviceRGBColorSpace ( ) ) ; } NSRect fullRect = new NSRect ( ) ; fullRect . y = rect . y ; fullRect . height = rect . height ; if ( ( columnCount ) == 0 ) { fullRect . x = rect . x ; if ( ( item . customWidth ) != ( - 1 ) ) { fullRect . width = item . customWidth ; } else { NSSize contentSize = cell . cellSizeForBounds ( rect ) ; <START_BUG> fullRect . width = ( ( int ) ( Math . ceil ( contentSize . width ) ) ) ; <END_BUG> } } else { NSSize spacing = outlineView . intercellSpacing ( ) ; if ( ( nsColumn . id ) == ( outlineView . outlineTableColumn ( ) . id ) ) { NSRect columnRect = outlineView . rectOfColumn ( nsColumnIndex ) ; fullRect . x = columnRect . x ; fullRect . width = ( columnRect . width ) + ( ( int ) ( spacing . width ) ) ; } else { fullRect . x = rect . x ; fullRect . width = ( rect . width ) + ( ( int ) ( spacing . width ) ) ; } } if ( hooks ( EraseItem ) ) { NSRect eraseItemRect = null ; if ( ( ( columnIndex == 0 ) && ( ( ( style ) & ( SWT . CHECK ) ) != 0 ) ) && ( ( ( columnCount ) == 0 ) || ( ( outlineView . columnWithIdentifier ( columns [ 0 ] . nsColumn ) ) == 1 ) ) ) { eraseItemRect = new NSRect ( ) ; eraseItemRect . y = fullRect . y ; eraseItemRect . width = ( fullRect . x ) + ( fullRect . width ) ; eraseItemRect . height = fullRect . height ; } else { eraseItemRect = fullRect ; } GCData data = new GCData ( ) ; data . paintRect = eraseItemRect ; GC gc = GC . cocoa_new ( this , data ) ; gc . setFont ( item . getFont ( columnIndex ) ) ; if ( isSelected ) { float [ ] components = new float [ ( ( int ) ( nsSelectionForeground . numberOfComponents ( ) ) ) ] ; nsSelectionForeground . getComponents ( components ) ; Color selectionForeground = Color . cocoa_new ( display , components ) ; gc . setForeground ( selectionForeground ) ; components = new float [ ( ( int ) ( nsSelectionBackground . numberOfComponents ( ) ) ) ] ; nsSelectionBackground . getComponents ( components ) ; Color selectionBackground = Color . cocoa_new ( display , components ) ; gc . setBackground ( selectionBackground ) ; }

Fix:
fullRect . width = contentSize . width ;