summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java10
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java6
2 files changed, 5 insertions, 11 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
index 8df7a59e40..bfd1aefc0a 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java
@@ -117,10 +117,6 @@ public class Display extends Device {
NSMutableArray currentTouches;
TouchSource[] touchSources;
- /* Key event management */
- int [] deadKeyState = new int[1];
- int currentKeyboardUCHRdata;
-
/* Sync/Async Widget Communication */
Synchronizer synchronizer;
Thread thread;
@@ -3052,7 +3048,7 @@ public boolean post(Event event) {
int /*long*/ eventSource = OS.CGEventSourceCreate(OS.kCGEventSourceStateHIDSystemState);
if (eventSource == 0) return false;
boolean returnValue = false;
-
+ int deadKeyState[] = new int[1];
int type = event.type;
switch (type) {
case SWT.KeyDown:
@@ -3072,6 +3068,7 @@ public boolean post(Event event) {
char [] output = new char [maxStringLength];
int [] actualStringLength = new int [1];
for (short i = 0 ; i <= 0x7F ; i++) {
+ deadKeyState[0] = 0;
OS.UCKeyTranslate (uchrPtr, i, (short)(type == SWT.KeyDown ? OS.kUCKeyActionDown : OS.kUCKeyActionUp), 0, OS.LMGetKbdType(), 0, deadKeyState, maxStringLength, actualStringLength, output);
if (output[0] == event.character) {
vKey = i;
@@ -3080,6 +3077,7 @@ public boolean post(Event event) {
}
if (vKey == -1) {
for (short i = 0 ; i <= 0x7F ; i++) {
+ deadKeyState[0] = 0;
OS.UCKeyTranslate (uchrPtr, i, (short)(type == SWT.KeyDown ? OS.kUCKeyActionDown : OS.kUCKeyActionUp), OS.shiftKey, OS.LMGetKbdType(), 0, deadKeyState, maxStringLength, actualStringLength, output);
if (output[0] == event.character) {
vKey = i;
@@ -3699,8 +3697,6 @@ void releaseDisplay () {
if (cursorSetCallback != null) cursorSetCallback.dispose();
cursorSetCallback = null;
- deadKeyState = null;
-
if (settingsDelegate != null) {
NSNotificationCenter.defaultCenter().removeObserver(settingsDelegate);
settingsDelegate.release();
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 32fdb97187..dfa2660905 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
@@ -1699,7 +1699,6 @@ boolean setInputState (Event event, NSEvent nsEvent, int type) {
if (event.keyCode == SWT.COMMAND) event.stateMask &= ~SWT.COMMAND;
break;
case SWT.KeyUp:
- case SWT.Gesture:
if (event.keyCode == SWT.ALT) event.stateMask |= SWT.ALT;
if (event.keyCode == SWT.SHIFT) event.stateMask |= SWT.SHIFT;
if (event.keyCode == SWT.CONTROL) event.stateMask |= SWT.CONTROL;
@@ -1741,8 +1740,6 @@ boolean setKeyState (Event event, int type, NSEvent nsEvent) {
int /*long*/ uchrCFData = OS.TISGetInputSourceProperty(currentKbd, OS.kTISPropertyUnicodeKeyLayoutData());
if (uchrCFData != 0) {
- // If the keyboard changed since the last keystroke clear the dead key state.
- if (uchrCFData != display.currentKeyboardUCHRdata) display.deadKeyState[0] = 0;
uchrPtr = OS.CFDataGetBytePtr(uchrCFData);
if (uchrPtr != 0 && OS.CFDataGetLength(uchrCFData) > 0) {
@@ -1752,7 +1749,8 @@ boolean setKeyState (Event event, int type, NSEvent nsEvent) {
int maxStringLength = 256;
char [] output = new char [maxStringLength];
int [] actualStringLength = new int [1];
- OS.UCKeyTranslate (uchrPtr, (short)keyCode, (short)OS.kUCKeyActionDown, 0, (int)keyboardType, 0, display.deadKeyState, maxStringLength, actualStringLength, output);
+ int [] deadKeyState = new int[1];
+ OS.UCKeyTranslate (uchrPtr, (short)keyCode, (short)(event.type == SWT.KeyDown ? OS.kUCKeyActionDown : OS.kUCKeyActionUp), 0, (int)keyboardType, 0, deadKeyState, maxStringLength, actualStringLength, output);
if (actualStringLength[0] < 1) {
// part of a multi-key key
event.keyCode = 0;