Buggy code:
if ( ( ! ( OS . IsWinCE ) ) && ( ( OS . WIN32_VERSION ) >= ( OS . VERSION ( 4 , 10 ) ) ) ) { int dialogOrientation = ( style ) & ( ( SWT . LEFT_TO_RIGHT ) | ( SWT . RIGHT_TO_LEFT ) ) ; int parentOrientation = ( parent . style ) & ( ( SWT . LEFT_TO_RIGHT ) | ( SWT . RIGHT_TO_LEFT ) ) ; if ( dialogOrientation != parentOrientation ) { int exStyle = OS . WS_EX_NOINHERITLAYOUT ; if ( dialogOrientation == ( SWT . RIGHT_TO_LEFT ) ) exStyle |= OS . WS_EX_LAYOUTRTL ; hwndOwner = OS . CreateWindowEx ( exStyle , DialogClass , null , 0 , CW_USEDEFAULT , 0 , CW_USEDEFAULT , 0 , hwndParent , 0 , OS . GetModuleHandle ( null ) , null ) ; enabled = OS . IsWindowEnabled ( hwndParent ) ; if ( enabled ) OS . EnableWindow ( hwndParent , false ) ; } } if ( ( title ) == null ) title = "" ; TCHAR buffer3 = new TCHAR ( 0 , title , true ) ; int byteCount3 = ( buffer3 . length ( ) ) * ( TCHAR . sizeof ) ; int lpstrTitle = OS . HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , byteCount3 ) ; OS . MoveMemory ( lpstrTitle , buffer3 , byteCount3 ) ; String strFilter = "" ; if ( ( filterNames ) == null ) filterNames = new String [ 0 ] ; if ( ( filterExtensions ) == null ) filterExtensions = new String [ 0 ] ; for ( int i = 0 ; i < ( filterExtensions . length ) ; i ++ ) { String filterName = filterExtensions [ i ] ; if ( i < ( filterNames . length ) ) filterName = filterNames [ i ] ; strFilter = ( ( ( strFilter + filterName ) + '' ) + ( filterExtensions [ i ] ) ) + '' ; } if ( ( filterExtensions . length ) == 0 ) { strFilter = ( ( ( strFilter + ( FileDialog . FILTER ) ) + '' ) + ( FileDialog . FILTER ) ) + '' ; } TCHAR buffer4 = new TCHAR ( 0 , strFilter , true ) ; int byteCount4 = ( buffer4 . length ( ) ) * ( TCHAR . sizeof ) ; int lpstrFilter = OS . HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , byteCount4 ) ; OS . MoveMemory ( lpstrFilter , buffer4 , byteCount4 ) ; if ( ( fileName ) == null ) fileName = "" ; TCHAR name = new TCHAR ( 0 , fileName , true ) ; int nMaxFile = OS . MAX_PATH ; if ( ( ( style ) & ( SWT . MULTI ) ) != 0 ) nMaxFile = Math . max ( nMaxFile , FileDialog . BUFFER_SIZE ) ; int byteCount = nMaxFile * ( TCHAR . sizeof ) ; int lpstrFile = OS . HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , byteCount ) ; int byteCountFile = Math . min ( ( ( name . length ( ) ) * ( TCHAR . sizeof ) ) , ( byteCount - ( TCHAR . sizeof ) ) ) ; OS . MoveMemory ( lpstrFile , name , byteCountFile ) ; if ( ( filterPath ) == null ) filterPath = "" ; TCHAR path = new TCHAR ( 0 , filterPath . replace ( '//' , '\\' ) , true ) ; int byteCount5 = ( OS . MAX_PATH ) * ( TCHAR . sizeof ) ; int lpstrInitialDir = OS . HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , byteCount5 ) ; int byteCountDir = Math . min ( ( ( path . length ( ) ) * ( TCHAR . sizeof ) ) , ( byteCount5 - ( TCHAR . sizeof ) ) ) ; OS . MoveMemory ( lpstrInitialDir , path , byteCountDir ) ; OPENFILENAME struct = new OPENFILENAME ( ) ; struct . lStructSize = OPENFILENAME . sizeof ; struct . Flags = ( OS . OFN_HIDEREADONLY ) | ( OS . OFN_NOCHANGEDIR ) ; boolean save = ( ( style ) & ( SWT . SAVE ) ) != 0 ; if ( save && ( overwrite ) ) struct . Flags |= OS . OFN_OVERWRITEPROMPT ; Callback callback = null ; if ( ( ( style ) & ( SWT . MULTI ) ) != 0 ) { <START_BUG> struct . Flags |= ( OS . OFN_ALLOWMULTISELECT ) | ( OS . OFN_EXPLORER ) ; <END_BUG> if ( ( ! ( OS . IsWinCE ) ) && ( FileDialog . USE_HOOK ) ) { callback = new Callback ( this , "OFNHookProc" , 4 ) ; int lpfnHook = callback . getAddress ( ) ; if ( lpfnHook == 0 ) SWT . error ( ERROR_NO_MORE_CALLBACKS ) ; struct . lpfnHook = lpfnHook ; struct . Flags |= OS . OFN_ENABLEHOOK ; } } struct . hwndOwner = hwndOwner ; struct . lpstrTitle = lpstrTitle ; struct . lpstrFile = lpstrFile ; struct . nMaxFile = nMaxFile ; struct . lpstrInitialDir = lpstrInitialDir ; struct . lpstrFilter = lpstrFilter ; struct . nFilterIndex = ( ( filterIndex ) == 0 ) ? filterIndex : ( filterIndex ) + 1 ; int lpstrDefExt = 0 ; if ( save ) { lpstrDefExt = OS . HeapAlloc ( hHeap , HEAP_ZERO_MEMORY , sizeof ) ; struct . lpstrDefExt = lpstrDefExt ; } Dialog oldModal = null ; Display display = parent . getDisplay ( ) ; if ( ( ( style ) & ( ( SWT . APPLICATION_MODAL ) | ( SWT . SYSTEM_MODAL ) ) ) != 0 ) { oldModal = display . getModalDialog ( ) ; display . setModalDialog ( this ) ; } boolean oldRunMessagesInIdle = display . runMessagesInIdle ; display . runMessagesInIdle = ! ( OS . IsWin95 ) ;

Fix:
struct . Flags |= ( ( OS . OFN_ALLOWMULTISELECT ) | ( OS . OFN_EXPLORER ) ) | ( OS . OFN_ENABLESIZING ) ;