diff options
author | Felipe Heidrich <fheidric> | 2009-09-30 19:39:31 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2009-09-30 19:39:31 +0000 |
commit | dc152e64e56e6b5c4aff8256b1da103c72fdac41 (patch) | |
tree | 79efb5b1e9f1dcedad5f88c58323fc31025e3ccd | |
parent | 6c52f374b4721324d231a5034cdade0b431944bd (diff) | |
download | eclipse.platform.swt-dc152e64e56e6b5c4aff8256b1da103c72fdac41.tar.gz eclipse.platform.swt-dc152e64e56e6b5c4aff8256b1da103c72fdac41.tar.xz eclipse.platform.swt-dc152e64e56e6b5c4aff8256b1da103c72fdac41.zip |
Bug 143911 - differentiate left and right modifier keys in keyPressed event
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java index c3ab5a3cba..d881b1a643 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java @@ -1466,12 +1466,58 @@ boolean setKeyState (Event event, GdkEventKey keyEvent) { } } } + setLocationState(event, keyEvent); if (event.keyCode == 0 && event.character == 0) { if (!isNull) return false; } return setInputState (event, keyEvent.state); } +void setLocationState (Event event, GdkEventKey keyEvent) { + switch (keyEvent.keyval) { + case OS.GDK_Alt_L: + case OS.GDK_Shift_L: + case OS.GDK_Control_L: + event.stateMask |= SWT.LOCATION_LEFT; + break; + case OS.GDK_Alt_R: + case OS.GDK_Shift_R: + case OS.GDK_Control_R: + event.stateMask |= SWT.LOCATION_RIGHT; + break; + case OS.GDK_KP_0: + case OS.GDK_KP_1: + case OS.GDK_KP_2: + case OS.GDK_KP_3: + case OS.GDK_KP_4: + case OS.GDK_KP_5: + case OS.GDK_KP_6: + case OS.GDK_KP_7: + case OS.GDK_KP_8: + case OS.GDK_KP_9: + case OS.GDK_KP_Add: + case OS.GDK_KP_Decimal: + case OS.GDK_KP_Delete: + case OS.GDK_KP_Divide: + case OS.GDK_KP_Down: + case OS.GDK_KP_End: + case OS.GDK_KP_Enter: + case OS.GDK_KP_Equal: + case OS.GDK_KP_Home: + case OS.GDK_KP_Insert: + case OS.GDK_KP_Left: + case OS.GDK_KP_Multiply: + case OS.GDK_KP_Page_Down: + case OS.GDK_KP_Page_Up: + case OS.GDK_KP_Right: + case OS.GDK_KP_Subtract: + case OS.GDK_KP_Up: + case OS.GDK_Num_Lock: + event.stateMask |= SWT.LOCATION_KEYPAD; + break; + } +} + void setOrientation () { } |