diff options
author | Felipe Heidrich <fheidric> | 2009-10-01 14:54:07 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2009-10-01 14:54:07 +0000 |
commit | 13a2c5260ef71dd3f193e16d904229bb747939ad (patch) | |
tree | 870694406437d00840ffef736998ec13964d29b5 | |
parent | 50a4e1e7fe807db84a5f96e95903cf0a5a2afde4 (diff) | |
download | eclipse.platform.swt-13a2c5260ef71dd3f193e16d904229bb747939ad.tar.gz eclipse.platform.swt-13a2c5260ef71dd3f193e16d904229bb747939ad.tar.xz eclipse.platform.swt-13a2c5260ef71dd3f193e16d904229bb747939ad.zip |
Bug 143911 - differentiate left and right modifier keys in keyPressed event
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java | 1 | ||||
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java | 37 |
2 files changed, 38 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java index 90075f94ad..87b829b092 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Control.java @@ -1214,6 +1214,7 @@ void flagsChanged (int /*long*/ id, int /*long*/ sel, int /*long*/ theEvent) { if (type == SWT.KeyDown) s.keyInputHappened = true; Event event = new Event(); event.keyCode = keyCode; + setLocationMask(event, nsEvent); setInputState (event, nsEvent, type); if (!sendKeyEvent (type, event)) return; } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java index 847f663406..7fbe75358b 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java @@ -1589,10 +1589,47 @@ boolean setKeyState (Event event, int type, NSEvent nsEvent) { if (event.keyCode == 0 && event.character == 0) { if (!isNull) return false; } + setLocationMask (event, nsEvent); setInputState (event, nsEvent, type); return true; } +void setLocationMask (Event event, NSEvent nsEvent) { + switch (nsEvent.keyCode ()) { + case 55: /* LEFT COMMAND */ + case 56: /* LEFT SHIFT */ + case 58: /* LEFT ALT */ + case 59: /* LEFT CONTROL */ + event.stateMask |= SWT.LOCATION_LEFT; + break; + case 54: /* RIGHT COMMAND */ + case 60: /* RIGHT SHIFT */ + case 61: /* RIGHT ALT */ + case 62: /* RIGHT CONTROL */ + event.stateMask |= SWT.LOCATION_RIGHT; + break; + case 67: /* KEYPAD_MULTIPLY */ + case 69: /* KEYPAD_ADD */ + case 76: /* KEYPAD_CR */ + case 78: /* KEYPAD_SUBTRACT */ + case 65: /* KEYPAD_DECIMAL */ + case 75: /* KEYPAD_DIVIDE */ + case 82: /* KEYPAD_0 */ + case 83: /* KEYPAD_1 */ + case 84: /* KEYPAD_2 */ + case 85: /* KEYPAD_3 */ + case 86: /* KEYPAD_4 */ + case 87: /* KEYPAD_5 */ + case 88: /* KEYPAD_6 */ + case 89: /* KEYPAD_7 */ + case 91: /* KEYPAD_8 */ + case 92: /* KEYPAD_9 */ + case 81: /* KEYPAD_EQUAL */ + event.stateMask |= SWT.LOCATION_KEYPAD; + break; + } +} + boolean setMarkedText_selectedRange (int /*long*/ id, int /*long*/ sel, int /*long*/ string, int /*long*/ range) { return true; } |