summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelipe Heidrich <fheidric>2009-09-30 19:39:31 +0000
committerFelipe Heidrich <fheidric>2009-09-30 19:39:31 +0000
commitdc152e64e56e6b5c4aff8256b1da103c72fdac41 (patch)
tree79efb5b1e9f1dcedad5f88c58323fc31025e3ccd
parent6c52f374b4721324d231a5034cdade0b431944bd (diff)
downloadeclipse.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.java46
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 () {
}