Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Prigogin2014-11-13 02:10:38 +0000
committerArun Thondapu2014-11-17 11:15:12 +0000
commitb8ad17c3d19acc6d7f92ed55bd627bbaa4689df8 (patch)
tree814d1637652718077e184bdd74b41b1667896154 /bundles
parented65caa7f1247cbecd964f259a75226c151b3910 (diff)
downloadeclipse.platform.swt-b8ad17c3d19acc6d7f92ed55bd627bbaa4689df8.tar.gz
eclipse.platform.swt-b8ad17c3d19acc6d7f92ed55bd627bbaa4689df8.tar.xz
eclipse.platform.swt-b8ad17c3d19acc6d7f92ed55bd627bbaa4689df8.zip
Bug 449546 - [responsiveness] No error logged when UI froze during
opening type hierarchy on java.lang.Object on Mac My previous approach to event filtering turned out to be unreliable since the original event type is not guaranteed to be preserved after the event is processed. The new approach is to make the type of the original event available in the "detail" field of the pre and post events. Change-Id: Ia592a754d97bb4654ad71d88a9ad48714e45be7c Signed-off-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Diffstat (limited to 'bundles')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java25
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java4
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java25
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/win32/org/eclipse/swt/widgets/Display.java26
4 files changed, 41 insertions, 39 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
index 5510ab5fbb..154b773ba2 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
@@ -4183,11 +4183,12 @@ void sendEvent (EventTable table, Event event) {
sendEventCount++;
if (!filterEvent (event)) {
if (table != null) {
- sendPreEvent (event);
+ int type = event.type;
+ sendPreEvent (type);
try {
table.sendEvent (event);
} finally {
- sendPostEvent (event);
+ sendPostEvent (type);
}
}
}
@@ -4196,25 +4197,25 @@ void sendEvent (EventTable table, Event event) {
}
}
-void sendPreEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPreEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PreEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PreEvent, event);
}
}
}
-void sendPostEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPostEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PostEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PostEvent, event);
}
}
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java
index 9b66ddb1eb..493590de58 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/common/org/eclipse/swt/SWT.java
@@ -779,7 +779,7 @@ public class SWT {
* {@link #PostExternalEventDispatch} is dispatched.
* </p>
* <p>
- * The data field of the event contains a reference to the following event.
+ * The detail field of the event contains the type of the following event.
* </p>
*
* @since 3.103
@@ -794,7 +794,7 @@ public class SWT {
* {@link #PostExternalEventDispatch} is dispatched.
* </p>
* <p>
- * The data field of the event contains a reference to the prior event.
+ * The detail field of the event contains the type of the prior event.
* </p>
*
* @since 3.103
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
index 0751b112d6..112554bdcd 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Display.java
@@ -4459,33 +4459,34 @@ void sendEvent (int eventType, Event event) {
}
void sendEvent (EventTable eventTable, Event event) {
- sendPreEvent (event);
+ int type = event.type;
+ sendPreEvent (type);
try {
eventTable.sendEvent (event);
} finally {
- sendPostEvent (event);
+ sendPostEvent (type);
}
}
-void sendPreEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPreEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PreEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PreEvent, event);
}
}
}
-void sendPostEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPostEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PostEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PostEvent, event);
}
}
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 278f17b6fb..d02ea09742 100644
--- 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
@@ -4348,39 +4348,39 @@ void sendEvent (int eventType, Event event) {
}
void sendEvent (EventTable eventTable, Event event) {
- sendPreEvent (event);
+ int type = event.type;
+ sendPreEvent (type);
try {
eventTable.sendEvent (event);
} finally {
- sendPostEvent (event);
+ sendPostEvent (type);
}
}
-void sendPreEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPreEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PreEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PreEvent, event);
}
}
}
-void sendPostEvent (Event original) {
- if (original != null && original.type != SWT.PreEvent && original.type != SWT.PostEvent
- && original.type != SWT.PreExternalEventDispatch
- && original.type != SWT.PostExternalEventDispatch) {
+void sendPostEvent (int eventType) {
+ if (eventType != SWT.PreEvent && eventType != SWT.PostEvent
+ && eventType != SWT.PreExternalEventDispatch
+ && eventType != SWT.PostExternalEventDispatch) {
if (eventTable != null && eventTable.hooks (SWT.PostEvent)) {
Event event = new Event ();
- event.data = original;
+ event.detail = eventType;
sendEvent (SWT.PostEvent, event);
}
}
}
-
/**
* Sends a SWT.PreExternalEventDispatch event.
*

Back to the top