diff options
author | Scott Kovatch <skovatch> | 2011-01-20 00:09:10 +0000 |
---|---|---|
committer | Scott Kovatch <skovatch> | 2011-01-20 00:09:10 +0000 |
commit | 1f174a766b5476ad0c84e8e12dd476b60439aa7a (patch) | |
tree | c77999dd1d003797f5f6747e17e66499583279f4 | |
parent | 7d75e7ceefc7de5bbd8f0f302b0814668b4f3922 (diff) | |
download | eclipse.platform.swt-1f174a766b5476ad0c84e8e12dd476b60439aa7a.tar.gz eclipse.platform.swt-1f174a766b5476ad0c84e8e12dd476b60439aa7a.tar.xz eclipse.platform.swt-1f174a766b5476ad0c84e8e12dd476b60439aa7a.zip |
334624 - don't cache dead-key state.
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java | 10 | ||||
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Widget.java | 6 |
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; |