From e4715a3ed14178491aa48874a61240a324f98e68 Mon Sep 17 00:00:00 2001 From: Mengjuei Date: Fri, 2 Dec 2011 01:50:57 -0800 Subject: [PATCH] Avoid a bug that commits wrong stuff... --- Source/InputMethodController.mm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Source/InputMethodController.mm b/Source/InputMethodController.mm index bef72466..eed192a6 100644 --- a/Source/InputMethodController.mm +++ b/Source/InputMethodController.mm @@ -457,18 +457,24 @@ public: bool composeReading = false; - // caps lock processing : if caps locked, temporarily disabled bopomofo. - if (charCode == 8) { - // Do nothing if backspace is pressed + // caps lock processing : if caps is locked, temporarily disabled bopomofo. + + if (charCode == 8 || keyCode == upKey || keyCode == downKey || + keyCode == leftKey || keyCode == rightKey ) { + // Do nothing if backspace is pressed } else if ([NSEvent modifierFlags] & NSAlphaShiftKeyMask){ + // Now process all possible combination, we hope. if ([_composingBuffer length]) [self commitComposition:client]; + // First commit everything in the buffer. if ([NSEvent modifierFlags] & NSShiftKeyMask) return NO; + // when shift is pressed, don't do further processing, since it outputs + // capital letter anyway. NSString *popedText = [inputText lowercaseString]; [client insertText:popedText replacementRange:NSMakeRange(NSNotFound, NSNotFound)]; return YES; } if ([NSEvent modifierFlags] & NSNumericPadKeyMask) { - if (keyCode != 123 && keyCode != 124 && keyCode != 125 && keyCode != 126 && keyCode != 123 && charCode != 32 ) { + if (keyCode != 123 && keyCode != 124 && keyCode != 125 && keyCode != 126 && charCode != 32 ) { if ([_composingBuffer length]) [self commitComposition:client]; NSString *popedText = [inputText lowercaseString]; [client insertText:popedText replacementRange:NSMakeRange(NSNotFound, NSNotFound)];