< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_FileDialog.cpp
Print this page
@@ -355,25 +355,25 @@
AwtDialog::CheckInstallModalHook();
// show the Win32 file dialog
if (mode == java_awt_FileDialog_LOAD) {
- result = AwtFileDialog::GetOpenFileName(&ofn);
+ result = ::GetOpenFileName(&ofn);
} else {
- result = AwtFileDialog::GetSaveFileName(&ofn);
+ result = ::GetSaveFileName(&ofn);
}
// Fix for 4181310: FileDialog does not show up.
// If the dialog is not shown because of invalid file name
// replace the file name by empty string.
if (!result) {
dlgerr = ::CommDlgExtendedError();
if (dlgerr == FNERR_INVALIDFILENAME) {
_tcscpy_s(fileBuffer, bufferLimit, TEXT(""));
if (mode == java_awt_FileDialog_LOAD) {
- result = AwtFileDialog::GetOpenFileName(&ofn);
+ result = ::GetOpenFileName(&ofn);
} else {
- result = AwtFileDialog::GetSaveFileName(&ofn);
+ result = ::GetSaveFileName(&ofn);
}
}
}
AwtDialog::CheckUninstallModalHook();
@@ -428,26 +428,10 @@
delete[] currentDirectory;
if (ofn.lpstrFile)
delete[] ofn.lpstrFile;
}
-BOOL
-AwtFileDialog::GetOpenFileName(LPOPENFILENAME data) {
- return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
- AwtToolkit::GetInstance().InvokeFunction((void*(*)(void*))
- ::GetOpenFileName, data)));
-
-}
-
-BOOL
-AwtFileDialog::GetSaveFileName(LPOPENFILENAME data) {
- return static_cast<BOOL>(reinterpret_cast<INT_PTR>(
- AwtToolkit::GetInstance().InvokeFunction((void *(*)(void *))
- ::GetSaveFileName, data)));
-
-}
-
BOOL AwtFileDialog::InheritsNativeMouseWheelBehavior() {return true;}
void AwtFileDialog::_DisposeOrHide(void *param)
{
JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
@@ -591,13 +575,14 @@
* Fix for 4906972.
* 'peer' reference has to be global as it's used further in another thread.
*/
jobject peerGlobal = env->NewGlobalRef(peer);
- AwtToolkit::GetInstance().InvokeFunction(AwtFileDialog::Show, peerGlobal);
-
+ if (!AwtToolkit::GetInstance().PostMessage(WM_AWT_INVOKE_METHOD,
+ (WPARAM)AwtFileDialog::Show, (LPARAM)peerGlobal)) {
env->DeleteGlobalRef(peerGlobal);
+ }
CATCH_BAD_ALLOC;
}
JNIEXPORT void JNICALL
< prev index next >