--- old/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2015-08-03 17:08:40.045744100 +0300 +++ new/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2015-08-03 17:08:39.465686100 +0300 @@ -321,6 +321,7 @@ ::GetKeyboardState(m_lastKeyboardState); m_waitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); + isInDoDragDropLoop = FALSE; eventNumber = 0; } @@ -2663,8 +2664,14 @@ { AwtToolkit & tk = AwtToolkit::GetInstance(); DWORD eventNumber = tk.eventNumber; - tk.PostMessage(WM_SYNC_WAIT, 0, 0); - ::WaitForSingleObject(tk.m_waitEvent, INFINITE); + if (!tk.isInDoDragDropLoop) { + tk.PostMessage(WM_SYNC_WAIT, 0, 0); + while (WAIT_TIMEOUT == ::WaitForSingleObject(tk.m_waitEvent, 2)) { + if (tk.isInDoDragDropLoop) { + break; + } + } + } DWORD newEventNumber = tk.eventNumber; return (newEventNumber - eventNumber) > 2; }