Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSilenio Quarti2007-05-25 16:04:26 +0000
committerSilenio Quarti2007-05-25 16:04:26 +0000
commit28da434c9ea6aeae59907bf4d5d01247ff882e9d (patch)
treef12e31197381f214e4f87968c250a185a3fff86b
parent6b82a5031b4ed40cdabe80cfe93c01a3349ec7e8 (diff)
downloadeclipse.platform.swt-28da434c9ea6aeae59907bf4d5d01247ff882e9d.tar.gz
eclipse.platform.swt-28da434c9ea6aeae59907bf4d5d01247ff882e9d.tar.xz
eclipse.platform.swt-28da434c9ea6aeae59907bf4d5d01247ff882e9d.zip
Bug 183430 - [DND] Drag and Drop between groups causes Eclipse thread to hang in COM.DoDragDrop() indefinitely.
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java9
1 files changed, 8 insertions, 1 deletions
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 b27979c232..7b6b2822fa 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 @@ public class Display extends Device {
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 @@ int foregroundIdleProc (int code, int wParam, int lParam) {
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 @@ static char mbcsToWcs (int ch, int codePage) {
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 ();

Back to the top