< prev index next >
src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp
Print this page
*** 3209,3220 ****
--- 3209,3230 ----
* the IME functionality in an unexpected state.
* This function avoids reentrancy issue and must be used for sending of all IME messages
* instead of SendMessage().
*/
LRESULT AwtToolkit::InvokeInputMethodFunction(UINT msg, WPARAM wParam, LPARAM lParam) {
+ /*
+ * DND runs on the main thread. So it is necessary to use SendMessage() to call an IME
+ * function once the DND is active; otherwise a hang is possible since DND may wait for
+ * the IME completion.
+ */
+ if (isInDoDragDropLoop) {
+ return SendMessage(msg, wParam, lParam);
+ } else {
CriticalSection::Lock lock(m_inputMethodLock);
if (PostMessage(msg, wParam, lParam)) {
::WaitForSingleObject(m_inputMethodWaitEvent, INFINITE);
return m_inputMethodData;
}
return 0;
+ }
}
+
< prev index next >