summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrant Gayed <ggayed>2008-06-26 14:32:30 +0000
committerGrant Gayed <ggayed>2008-06-26 14:32:30 +0000
commite55182bca381bacb39a6cd75e3c4d9f135d2078f (patch)
treefa0a5f175465e3f0ad969cb562da48eb2ae0515c
parente912ba96000b91041f10af2798b8f2f8dfa90f64 (diff)
downloadeclipse.platform.swt-e55182bca381bacb39a6cd75e3c4d9f135d2078f.tar.gz
eclipse.platform.swt-e55182bca381bacb39a6cd75e3c4d9f135d2078f.tar.xz
eclipse.platform.swt-e55182bca381bacb39a6cd75e3c4d9f135d2078f.zip
236689 - KeyDown/KeyUp events have wrong character for Delete key
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java11
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java11
2 files changed, 21 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
index efdf15d504..d83094ee0d 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java
@@ -1522,7 +1522,16 @@ void handleEvent(int evt) {
keyEvent.type = SWT.KeyUp;
}
keyEvent.keyCode = translateKey(keyCode);
- keyEvent.character = (char)charCode;
+ /*
+ * Safari maps the Delete key's character to 0xf728. Detect
+ * this key and set its character to SWT.DEL so that the
+ * Browser's key events are consistent with other controls.
+ */
+ if (keyEvent.keyCode == SWT.DEL) {
+ keyEvent.character = SWT.DEL;
+ } else {
+ keyEvent.character = (char)charCode;
+ }
keyEvent.stateMask = (alt ? SWT.ALT : 0) | (ctrl ? SWT.CTRL : 0) | (shift ? SWT.SHIFT : 0) | (meta ? SWT.COMMAND : 0);
browser.notifyListeners(keyEvent.type, keyEvent);
if (browser.isDisposed()) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java
index 70f5178b1e..d410aa2b54 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java
@@ -985,6 +985,17 @@ void handleDOMEvent (OleEvent e) {
keyEvent.keyCode = lastKeyCode;
keyEvent.stateMask = mask;
keyEvent.stateMask &= ~lastKeyCode; /* remove current keydown if it's a state key */
+ /*
+ * keypress events are not received for Enter, Delete and Tab, so
+ * KeyDown events are sent for them here. Set the KeyDown event's
+ * character field and IE's lastCharCode field for these keys so
+ * that the Browser's key events are consistent with other controls.
+ */
+ switch (lastKeyCode) {
+ case SWT.CR: lastCharCode = keyEvent.character = SWT.CR; break;
+ case SWT.DEL: lastCharCode = keyEvent.character = SWT.DEL; break;
+ case SWT.TAB: lastCharCode = keyEvent.character = SWT.TAB; break;
+ }
browser.notifyListeners (keyEvent.type, keyEvent);
if (!keyEvent.doit) {
rgdispid = event.getIDsOfNames(new String[] { PROPERTY_RETURNVALUE });