# HG changeset patch # User William Bowling # Date 1257142272 -39600 # Node ID 5dabca4159b5c86430a8ddc65855893a4835d609 # Parent 6a41be7632e5e0ee9c3481bb7a7e3af36d04f1e8 Backed out changeset 6a41be7632e5 diff -r 6a41be7632e5e0ee9c3481bb7a7e3af36d04f1e8 -r 5dabca4159b5c86430a8ddc65855893a4835d609 Frameworks/AIUtilities Framework/Source/AILeopardCompatibility.h --- a/Frameworks/AIUtilities Framework/Source/AILeopardCompatibility.h Thu Oct 29 12:43:40 2009 -0400 +++ b/Frameworks/AIUtilities Framework/Source/AILeopardCompatibility.h Mon Nov 02 17:11:12 2009 +1100 @@ -36,10 +36,6 @@ - (BOOL)isAutomaticSpellingCorrectionEnabled; - (void)toggleAutomaticSpellingCorrection:(id)sender; @end - -@interface NSSpellChecker(NSSpellCheckerLeopardMethods) -- (NSArray *)userPreferredLanguages; -@end #endif #else //Not compiling for 10.6 diff -r 6a41be7632e5e0ee9c3481bb7a7e3af36d04f1e8 -r 5dabca4159b5c86430a8ddc65855893a4835d609 Source/OWSpellingPerContactPlugin.m --- a/Source/OWSpellingPerContactPlugin.m Thu Oct 29 12:43:40 2009 -0400 +++ b/Source/OWSpellingPerContactPlugin.m Mon Nov 02 17:11:12 2009 +1100 @@ -18,9 +18,6 @@ #import #import -#import -#import - #define GROUP_LAST_USED_SPELLING @"Last Used Spelling" #define KEY_LAST_USED_SPELLING @"Last Used Spelling Languge" @@ -52,15 +49,13 @@ languageDict = [[NSMutableDictionary alloc] init]; //Find the first language the user prefers which the spellchecker knows about, then keep it around for future reference - NSArray *preferredLanguages = nil; - if ([NSApp isOnSnowLeopardOrBetter]) { - preferredLanguages = [[NSSpellChecker sharedSpellChecker] userPreferredLanguages]; - } else { - preferredLanguages = [[NSSpellChecker sharedSpellChecker] availableLanguages]; - } - - if (preferredLanguages.count) { - preferredLanguage = [preferredLanguages objectAtIndex:0]; + NSEnumerator *enumerator = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectEnumerator]; + NSString *language; + while ((language = [enumerator nextObject])) { + if ([[NSSpellChecker sharedSpellChecker] setLanguage:language]) { + preferredLanguage = [language retain]; + break; + } } } @@ -140,9 +135,8 @@ NSString *chatID = chat.uniqueChatID; NSString *chatLanguage = [languageDict objectForKey:chatID]; - //If we didn't cache a language for this chat, or the chat is currently the active chat, use the spell checker's value. - if (!chatLanguage || adium.interfaceController.activeChat == chat) - chatLanguage = [[NSSpellChecker sharedSpellChecker] language]; + //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 + if (!chatLanguage) chatLanguage = [[NSSpellChecker sharedSpellChecker] language]; //Now, if we end up at the user's default language, we don't want to store anything if ([preferredLanguage isEqualToString:chatLanguage]) @@ -153,7 +147,14 @@ (!previousLanguage && chatLanguage)) { [listObject setPreference:chatLanguage forKey:KEY_LAST_USED_SPELLING - group:GROUP_LAST_USED_SPELLING]; + group:GROUP_LAST_USED_SPELLING]; + + /* Set this as a global preference such that it will be the default choice for future new chats. + * If a listObject doesn't have its own preference set, this will be inherited. + */ + [[adium preferenceController] setPreference:chatLanguage + forKey:KEY_LAST_USED_SPELLING + group:GROUP_LAST_USED_SPELLING]; } [languageDict removeObjectForKey:chatID];