Buggy code:
} string . getChars ( 0 , length , buffer , 0 ) ; buffer [ ( length ++ ) ] = 0 ; if ( OS . IsUnicode ) { OS . MoveMemory ( plvfi . pszText , buffer , ( length * 2 ) ) ; } else { OS . WideCharToMultiByte ( getCodePage ( ) , 0 , buffer , length , plvfi . pszText , plvfi . cchTextMax , null , null ) ; OS . MoveMemory ( ( ( ( plvfi . pszText ) + ( plvfi . cchTextMax ) ) - 1 ) , new byte [ 1 ] , 1 ) ; } } } boolean move = false ; if ( ( ( plvfi . mask ) & ( OS . LVIF_IMAGE ) ) != 0 ) { Image image = null ; if ( ( plvfi . iSubItem ) == 0 ) { image = item . image ; } else { Image [ ] images = item . images ; if ( images != null ) image = images [ plvfi . iSubItem ] ; } if ( image != null ) { plvfi . iImage = imageIndex ( image , plvfi . iSubItem ) ; move = true ; } } if ( ( ( plvfi . mask ) & ( OS . LVIF_STATE ) ) != 0 ) { if ( ( plvfi . iSubItem ) == 0 ) { int state = 1 ; if ( item . checked ) state ++ ; if ( item . grayed ) state += 2 ; plvfi . state = state << 12 ; plvfi . stateMask = OS . LVIS_STATEIMAGEMASK ; move = true ; } } if ( ( ( plvfi . mask ) & ( OS . LVIF_INDENT ) ) != 0 ) { if ( ( plvfi . iSubItem ) == 0 ) { plvfi . iIndent = item . imageIndent ; move = true ; } } if ( move ) OS . MoveMemory ( lParam , plvfi , sizeof ) ; break ; } case OS . NM_CUSTOMDRAW : { int hwndHeader = OS . SendMessage ( handle , LVM_GETHEADER , 0 , 0 ) ; if ( ( hdr . hwndFrom ) == hwndHeader ) break ; if ( ( ! ( customDraw ) ) && ( ( findImageControl ( ) ) == null ) ) { if ( OS . IsWindowEnabled ( handle ) ) break ; } NMLVCUSTOMDRAW nmcd = new NMLVCUSTOMDRAW ( ) ; OS . MoveMemory ( nmcd , lParam , NMLVCUSTOMDRAW . sizeof ) ; switch ( nmcd . dwDrawStage ) { case OS . CDDS_PREPAINT : return CDDS_PREPAINT ( wParam , lParam ) ; case OS . CDDS_ITEMPREPAINT : return CDDS_ITEMPREPAINT ( wParam , lParam ) ; case OS . CDDS_SUBITEMPREPAINT : return CDDS_SUBITEMPREPAINT ( wParam , lParam ) ; case OS . CDDS_SUBITEMPOSTPAINT : return CDDS_SUBITEMPOSTPAINT ( wParam , lParam ) ; case OS . CDDS_POSTPAINT : return CDDS_POSTPAINT ( wParam , lParam ) ; } break ; } case OS . LVN_MARQUEEBEGIN : { if ( ( ( style ) & ( SWT . SINGLE ) ) != 0 ) return LRESULT . ONE ; if ( ( hooks ( MouseDown ) ) || ( hooks ( MouseUp ) ) ) { return LRESULT . ONE ; } break ; } case OS . LVN_BEGINDRAG : case OS . LVN_BEGINRDRAG : { dragStarted = true ; if ( ( hdr . code ) == ( OS . LVN_BEGINDRAG ) ) { int pos = OS . GetMessagePos ( ) ; POINT pt = new POINT ( ) ; pt . x = ( ( short ) ( pos & 65535 ) ) ; pt . y = ( ( short ) ( pos > > 16 ) ) ; OS . ScreenToClient ( handle , pt ) ; <START_BUG> sendDragEvent ( pt . x , pt . y ) ; <END_BUG> } break ; } case OS . LVN_COLUMNCLICK : { NMLISTVIEW pnmlv = new NMLISTVIEW ( ) ; OS . MoveMemory ( pnmlv , lParam , NMLISTVIEW . sizeof ) ; TableColumn column = columns [ pnmlv . iSubItem ] ; if ( column != null ) { column . postEvent ( Selection ) ; } break ; } case OS . LVN_ITEMACTIVATE : { if ( ignoreActivate ) break ; NMLISTVIEW pnmlv = new NMLISTVIEW ( ) ; OS . MoveMemory ( pnmlv , lParam , NMLISTVIEW . sizeof ) ; if ( ( pnmlv . iItem ) != ( - 1 ) ) { Event event = new Event ( ) ; event . item = _getItem ( pnmlv . iItem ) ; postEvent ( DefaultSelection , event ) ; } break ; } case OS . LVN_ITEMCHANGED : { if ( ! ( ignoreSelect ) ) { NMLISTVIEW pnmlv = new NMLISTVIEW ( ) ; OS . MoveMemory ( pnmlv , lParam , NMLISTVIEW . sizeof ) ; if ( ( ( pnmlv . uChanged ) & ( OS . LVIF_STATE ) ) != 0 ) { if ( ( pnmlv . iItem ) == ( - 1 ) ) { wasSelected = true ; } else { boolean oldSelected = ( ( pnmlv . uOldState ) & ( OS . LVIS_SELECTED ) ) != 0 ; boolean newSelected = ( ( pnmlv . uNewState ) & ( OS . LVIS_SELECTED ) ) != 0 ; if ( oldSelected != newSelected ) wasSelected = true ; } } } if ( ( hooks ( EraseItem ) ) || ( hooks ( PaintItem ) ) ) { int hwndHeader = OS . SendMessage ( handle , LVM_GETHEADER , 0 , 0 ) ; int count = OS . SendMessage ( hwndHeader , HDM_GETITEMCOUNT , 0 , 0 ) ;

Fix:
sendDragEvent ( 1 , pt . x , pt . y ) ;