1.1 --- a/Source/OWSpellingPerContactPlugin.m Wed Apr 22 17:18:01 2009 -0700
1.2 +++ b/Source/OWSpellingPerContactPlugin.m Thu Oct 29 12:43:40 2009 -0400
1.3 @@ -18,6 +18,9 @@
1.4 #import <Adium/AIChat.h>
1.5 #import <Adium/AIListContact.h>
1.6
1.7 +#import <AIUtilities/AIApplicationAdditions.h>
1.8 +#import <AIUtilities/AILeopardCompatibility.h>
1.9 +
1.10 #define GROUP_LAST_USED_SPELLING @"Last Used Spelling"
1.11 #define KEY_LAST_USED_SPELLING @"Last Used Spelling Languge"
1.12
1.13 @@ -49,13 +52,15 @@
1.14 languageDict = [[NSMutableDictionary alloc] init];
1.15
1.16 //Find the first language the user prefers which the spellchecker knows about, then keep it around for future reference
1.17 - NSEnumerator *enumerator = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectEnumerator];
1.18 - NSString *language;
1.19 - while ((language = [enumerator nextObject])) {
1.20 - if ([[NSSpellChecker sharedSpellChecker] setLanguage:language]) {
1.21 - preferredLanguage = [language retain];
1.22 - break;
1.23 - }
1.24 + NSArray *preferredLanguages = nil;
1.25 + if ([NSApp isOnSnowLeopardOrBetter]) {
1.26 + preferredLanguages = [[NSSpellChecker sharedSpellChecker] userPreferredLanguages];
1.27 + } else {
1.28 + preferredLanguages = [[NSSpellChecker sharedSpellChecker] availableLanguages];
1.29 + }
1.30 +
1.31 + if (preferredLanguages.count) {
1.32 + preferredLanguage = [preferredLanguages objectAtIndex:0];
1.33 }
1.34 }
1.35
1.36 @@ -135,8 +140,9 @@
1.37 NSString *chatID = chat.uniqueChatID;
1.38 NSString *chatLanguage = [languageDict objectForKey:chatID];
1.39
1.40 - //If we didn't cache a language for this chat, we might just never have made it inactive; use the spell checker's current language
1.41 - if (!chatLanguage) chatLanguage = [[NSSpellChecker sharedSpellChecker] language];
1.42 + //If we didn't cache a language for this chat, or the chat is currently the active chat, use the spell checker's value.
1.43 + if (!chatLanguage || adium.interfaceController.activeChat == chat)
1.44 + chatLanguage = [[NSSpellChecker sharedSpellChecker] language];
1.45
1.46 //Now, if we end up at the user's default language, we don't want to store anything
1.47 if ([preferredLanguage isEqualToString:chatLanguage])
1.48 @@ -147,14 +153,7 @@
1.49 (!previousLanguage && chatLanguage)) {
1.50 [listObject setPreference:chatLanguage
1.51 forKey:KEY_LAST_USED_SPELLING
1.52 - group:GROUP_LAST_USED_SPELLING];
1.53 -
1.54 - /* Set this as a global preference such that it will be the default choice for future new chats.
1.55 - * If a listObject doesn't have its own preference set, this will be inherited.
1.56 - */
1.57 - [[adium preferenceController] setPreference:chatLanguage
1.58 - forKey:KEY_LAST_USED_SPELLING
1.59 - group:GROUP_LAST_USED_SPELLING];
1.60 + group:GROUP_LAST_USED_SPELLING];
1.61 }
1.62
1.63 [languageDict removeObjectForKey:chatID];