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