--- old/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2015-08-04 14:43:03.466507600 +0300 +++ new/src/java.desktop/windows/native/libawt/windows/awt_Toolkit.cpp 2015-08-04 14:43:02.877448700 +0300 @@ -321,6 +321,7 @@ ::GetKeyboardState(m_lastKeyboardState); m_waitEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL); + isInDoDragDropLoop = FALSE; eventNumber = 0; } @@ -2663,8 +2664,15 @@ { 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); + for(long t = 2; t < timeout && + WAIT_TIMEOUT == ::WaitForSingleObject(tk.m_waitEvent, 2); t+=2) { + if (tk.isInDoDragDropLoop) { + break; + } + } + } DWORD newEventNumber = tk.eventNumber; return (newEventNumber - eventNumber) > 2; }