summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse
diff options
context:
space:
mode:
authorGrant Gayed <ggayed>2010-04-14 20:59:01 +0000
committerGrant Gayed <ggayed>2010-04-14 20:59:01 +0000
commit9ab14bbc386609b0008cce66eda40fcd56285bea (patch)
tree862ebfd0ae32481148f105cbc8831e87becb5ad3 /bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse
parent8fa7f7faacb842324a4b31775936f9e83dd5a81b (diff)
downloadeclipse.platform.swt-9ab14bbc386609b0008cce66eda40fcd56285bea.tar.gz
eclipse.platform.swt-9ab14bbc386609b0008cce66eda40fcd56285bea.tar.xz
eclipse.platform.swt-9ab14bbc386609b0008cce66eda40fcd56285bea.zip
fix sending of MouseEnter/MouseExit events
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java48
1 files changed, 39 insertions, 9 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
index d8eb0141fe..816b943e18 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
@@ -82,6 +82,8 @@ public class WebKit extends WebBrowser {
static final int WINDOW_OBJECT_CLEARED = 14;
static final int CONSOLE_MESSAGE = 15;
+ static final String KEY_CHECK_SUBWINDOW = "org.eclipse.swt.internal.control.checksubwindow"; //$NON-NLS-1$
+
// the following Callbacks are never freed
static Callback Proc2, Proc3, Proc4, Proc5, Proc6;
static Callback JSObjectHasPropertyProc, JSObjectGetPropertyProc, JSObjectCallAsFunctionProc;
@@ -546,6 +548,16 @@ public boolean create (Composite parent, int style) {
};
};
+ /*
+ * Bug in WebKitGTK. MouseOver/MouseLeave events are not consistently sent from
+ * the DOM when the mouse enters and exits the browser control, see
+ * https://bugs.webkit.org/show_bug.cgi?id=35246. As a workaround for sending
+ * MouseEnter/MouseExit events, swt's default mouse enter/exit mechanism is used,
+ * but in order to do this the Browser's default sub-window check behavior must
+ * be changed.
+ */
+ browser.setData (KEY_CHECK_SUBWINDOW, Boolean.FALSE);
+
return true;
}
@@ -563,10 +575,17 @@ void addEventHandlers (boolean top) {
buffer.append ("document.addEventListener('mousedown', SWTmousehandler, true);"); //$NON-NLS-1$
buffer.append ("document.addEventListener('mouseup', SWTmousehandler, true);"); //$NON-NLS-1$
buffer.append ("document.addEventListener('mousemove', SWTmousehandler, true);"); //$NON-NLS-1$
- buffer.append ("document.addEventListener('mouseover', SWTmousehandler, true);"); //$NON-NLS-1$
- buffer.append ("document.addEventListener('mouseout', SWTmousehandler, true);"); //$NON-NLS-1$
buffer.append ("document.addEventListener('mousewheel', SWTmousehandler, true);"); //$NON-NLS-1$
buffer.append ("document.addEventListener('dragstart', SWTmousehandler, true);"); //$NON-NLS-1$
+
+ /*
+ * The following two lines are intentionally commented because they cannot be used to
+ * consistently send MouseEnter/MouseExit events until https://bugs.webkit.org/show_bug.cgi?id=35246
+ * is fixed.
+ */
+ //buffer.append ("document.addEventListener('mouseover', SWTmousehandler, true);"); //$NON-NLS-1$
+ //buffer.append ("document.addEventListener('mouseout', SWTmousehandler, true);"); //$NON-NLS-1$
+
execute (buffer.toString ());
} else {
StringBuffer buffer = new StringBuffer ("for (var i = 0; i < frames.length; i++) {"); //$NON-NLS-1$
@@ -894,9 +913,14 @@ boolean handleEvent (Object[] arguments) {
* fired for mouse movements into or out of the Browser, do not fire an
* event if there is a related target element.
*/
- if (type.equals (DOMEVENT_MOUSEOVER) || type.equals (DOMEVENT_MOUSEOUT)) {
- if (((Boolean)arguments[9]).booleanValue ()) return true;
- }
+
+ /*
+ * The following is intentionally commented because MouseOver and MouseOut events
+ * are not being hooked until https://bugs.webkit.org/show_bug.cgi?id=35246 is fixed.
+ */
+ //if (type.equals (DOMEVENT_MOUSEOVER) || type.equals (DOMEVENT_MOUSEOUT)) {
+ // if (((Boolean)arguments[9]).booleanValue ()) return true;
+ //}
/*
* The position of mouse events is received in screen-relative coordinates
@@ -947,10 +971,16 @@ boolean handleEvent (Object[] arguments) {
} else if (type.equals (DOMEVENT_MOUSEWHEEL)) {
mouseEvent.type = SWT.MouseWheel;
mouseEvent.count = ((Double)arguments[3]).intValue ();
- } else if (type.equals (DOMEVENT_MOUSEOVER)) {
- mouseEvent.type = SWT.MouseEnter;
- } else if (type.equals (DOMEVENT_MOUSEOUT)) {
- mouseEvent.type = SWT.MouseExit;
+
+ /*
+ * The following is intentionally commented because MouseOver and MouseOut events
+ * are not being hooked until https://bugs.webkit.org/show_bug.cgi?id=35246 is fixed.
+ */
+ //} else if (type.equals (DOMEVENT_MOUSEOVER)) {
+ // mouseEvent.type = SWT.MouseEnter;
+ //} else if (type.equals (DOMEVENT_MOUSEOUT)) {
+ // mouseEvent.type = SWT.MouseExit;
+
} else if (type.equals (DOMEVENT_DRAGSTART)) {
mouseEvent.type = SWT.DragDetect;
mouseEvent.button = ((Double)arguments[4]).intValue () + 1;