Bug 183430 - [DND] Drag and Drop between groups causes Eclipse thread to hang in COM.DoDragDrop() indefinitely.
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java
index b27979c..7b6b282 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java
@@ -353,6 +353,7 @@
 	static final int SWT_DESTROY	 	= OS.WM_APP + 3;
 	static final int SWT_TRAYICONMSG	= OS.WM_APP + 4;
 	static final int SWT_NULL			= OS.WM_APP + 5;
+	static final int SWT_RUNASYNC		= OS.WM_APP + 6;
 	static int SWT_TASKBARCREATED;
 	static int SWT_RESTORECARET;
 	
@@ -1253,7 +1254,9 @@
 	if (runMessages) {
 		if (code >= 0) {
 			if (getMessageCount () != 0) {
-				if (runMessagesInIdle) runAsyncMessages (false);
+				if (runMessagesInIdle) {
+					OS.PostMessage (hwndMessage, SWT_RUNASYNC, 0, 0);
+				}
 				wakeThread ();
 			}
 		}
@@ -2763,6 +2766,10 @@
 
 int messageProc (int hwnd, int msg, int wParam, int lParam) {
 	switch (msg) {
+		case SWT_RUNASYNC: {
+			if (runMessagesInIdle) runAsyncMessages (false);
+			break;
+		}
 		case SWT_KEYMSG: {
 			boolean consumed = false;
 			MSG keyMsg = new MSG ();