adium 4051:b50f41bb00bc: Use the layout, and not possible the la...
commits at adium.im
commits at adium.im
Wed Jul 13 12:20:59 UTC 2011
details: http://hg.adium.im/adium/rev/b50f41bb00bc
revision: 4051:b50f41bb00bc
branch: (none)
author: Thijs Alkemade <thijsalkemade at gmail.com>
date: Wed Jul 13 14:20:41 2011 +0200
Use the layout, and not possible the layout's group to translate keycodes. Also add a check to prevent crahsing and log debug information for if UCHR data is missing.
Fixes #14947
diffs (38 lines):
diff -r 324eaebc242a -r b50f41bb00bc Source/SGKeyCodeTranslator.m
--- a/Source/SGKeyCodeTranslator.m Wed Jul 13 11:35:45 2011 +0200
+++ b/Source/SGKeyCodeTranslator.m Wed Jul 13 14:20:41 2011 +0200
@@ -15,7 +15,7 @@
+ (id)currentTranslator {
static SGKeyCodeTranslator *currentTranslator = nil;
- TISInputSourceRef currentKeyboardLayout = TISCopyCurrentKeyboardInputSource();
+ TISInputSourceRef currentKeyboardLayout = TISCopyCurrentKeyboardLayoutInputSource();
if (currentTranslator == nil) {
currentTranslator = [[SGKeyCodeTranslator alloc] initWithKeyboardLayout:currentKeyboardLayout];
@@ -28,13 +28,18 @@
}
- (id)initWithKeyboardLayout:(TISInputSourceRef)theLayout {
- if ((self = [super init]) != nil) {
- keyboardLayout = theLayout;
- CFDataRef uchr = TISGetInputSourceProperty(keyboardLayout, kTISPropertyUnicodeKeyLayoutData);
- keyboardLayoutData = (const UCKeyboardLayout *)CFDataGetBytePtr(uchr);
- }
-
- return self;
+ if ((self = [super init]) != nil) {
+ keyboardLayout = theLayout;
+ CFDataRef uchr = TISGetInputSourceProperty(keyboardLayout, kTISPropertyUnicodeKeyLayoutData);
+
+ if (!uchr) {
+ AILogWithSignature(@"Selected keyboard layout %@ has no UCHR data!", TISGetInputSourceProperty(keyboardLayout, kTISPropertyInputSourceID));
+ } else {
+ keyboardLayoutData = (const UCKeyboardLayout *)CFDataGetBytePtr(uchr);
+ }
+ }
+
+ return self;
}
More information about the commits
mailing list