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 ();