355 if (dlgerr == FNERR_INVALIDFILENAME) {
356 _tcscpy(fileBuffer, TEXT(""));
357 if (mode == java_awt_FileDialog_LOAD) {
358 result = AwtFileDialog::GetOpenFileName(&ofn);
359 } else {
360 result = AwtFileDialog::GetSaveFileName(&ofn);
361 }
362 }
363 }
364
365 AwtDialog::CheckUninstallModalHook();
366
367 DASSERT(env->GetLongField(peer, AwtComponent::hwndID) == 0L);
368
369 AwtDialog::ModalActivateNextWindow(NULL, target, peer);
370
371 VERIFY(::SetCurrentDirectory(currentDirectory));
372
373 // Report result to peer.
374 if (result) {
375 jint length = (jint)GetBufferLength(ofn.lpstrFile, ofn.nMaxFile);
376 jcharArray jnames = env->NewCharArray(length);
377 env->SetCharArrayRegion(jnames, 0, length, (jchar*)ofn.lpstrFile);
378
379 env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, jnames);
380 env->DeleteLocalRef(jnames);
381 } else {
382 env->CallVoidMethod(peer, AwtFileDialog::handleCancelMID);
383 }
384 DASSERT(!safe_ExceptionOccurred(env));
385 } catch (...) {
386
387 env->DeleteLocalRef(target);
388 env->DeleteLocalRef(parent);
389 env->DeleteLocalRef(title);
390 env->DeleteLocalRef(directory);
391 env->DeleteLocalRef(file);
392 env->DeleteLocalRef(fileFilter);
393 env->DeleteGlobalRef(peer);
394
395 delete[] currentDirectory;
|
355 if (dlgerr == FNERR_INVALIDFILENAME) {
356 _tcscpy(fileBuffer, TEXT(""));
357 if (mode == java_awt_FileDialog_LOAD) {
358 result = AwtFileDialog::GetOpenFileName(&ofn);
359 } else {
360 result = AwtFileDialog::GetSaveFileName(&ofn);
361 }
362 }
363 }
364
365 AwtDialog::CheckUninstallModalHook();
366
367 DASSERT(env->GetLongField(peer, AwtComponent::hwndID) == 0L);
368
369 AwtDialog::ModalActivateNextWindow(NULL, target, peer);
370
371 VERIFY(::SetCurrentDirectory(currentDirectory));
372
373 // Report result to peer.
374 if (result) {
375 jint length = multipleMode
376 ? (jint)GetBufferLength(ofn.lpstrFile, ofn.nMaxFile)
377 : (jint)_tcslen(ofn.lpstrFile);
378 jcharArray jnames = env->NewCharArray(length);
379 env->SetCharArrayRegion(jnames, 0, length, (jchar*)ofn.lpstrFile);
380
381 env->CallVoidMethod(peer, AwtFileDialog::handleSelectedMID, jnames);
382 env->DeleteLocalRef(jnames);
383 } else {
384 env->CallVoidMethod(peer, AwtFileDialog::handleCancelMID);
385 }
386 DASSERT(!safe_ExceptionOccurred(env));
387 } catch (...) {
388
389 env->DeleteLocalRef(target);
390 env->DeleteLocalRef(parent);
391 env->DeleteLocalRef(title);
392 env->DeleteLocalRef(directory);
393 env->DeleteLocalRef(file);
394 env->DeleteLocalRef(fileFilter);
395 env->DeleteGlobalRef(peer);
396
397 delete[] currentDirectory;
|