diff options
author | Grant Gayed <ggayed> | 2008-06-26 14:32:30 +0000 |
---|---|---|
committer | Grant Gayed <ggayed> | 2008-06-26 14:32:30 +0000 |
commit | e55182bca381bacb39a6cd75e3c4d9f135d2078f (patch) | |
tree | fa0a5f175465e3f0ad969cb562da48eb2ae0515c | |
parent | e912ba96000b91041f10af2798b8f2f8dfa90f64 (diff) | |
download | eclipse.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-x | bundles/org.eclipse.swt/Eclipse SWT Browser/carbon/org/eclipse/swt/browser/Safari.java | 11 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Browser/win32/org/eclipse/swt/browser/IE.java | 11 |
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 }); |