From bd2fe2ee696bc86fa80e9b53cfb82dfdfbde0a7b Mon Sep 17 00:00:00 2001 From: Tom Bogle Date: Thu, 5 Jul 2018 14:18:10 -0400 Subject: [PATCH 1/2] [Mac] Cleanup to remove old comment and fix indent (aesthetic only) --- .../Keyman4MacIM/KMInputMethodEventHandler.m | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m b/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m index 688454d133..6b4a241d39 100644 --- a/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m +++ b/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m @@ -535,7 +535,6 @@ NSRange _previousSelRange; NSLog(@"Deleted %li null characters from context buffer", nc); // This can presumably only happen if a previous event resulted in a chain of // actions that had a Q_BACK not followed by a Q_STR. - // REVIEW: Need to test this scenario in Atom and Googe Docs in Safari self.willDeleteNullChar = YES; [self postDeleteBacks:nc for:event]; _keyCodeOfOriginalEvent = event.keyCode; @@ -573,18 +572,18 @@ NSRange _previousSelRange; break; default: - { - // NOTE: Although ch is usually the same as keyCode, when the option key is depressed (and - // perhaps in some other cases) it may not be (keyCode can be 0). Likewise, the option key - // can generate more than one character in event.characters. - unichar ch = [event.characters characterAtIndex:0]; - if (keyCode < 0x33 || (ch >= 0x2A && ch <= 0x39)) { // Main keys, Numpad char range, normal punctuation - charactersToAppend = event.characters; + { + // NOTE: Although ch is usually the same as keyCode, when the option key is depressed (and + // perhaps in some other cases) it may not be (keyCode can be 0). Likewise, the option key + // can generate more than one character in event.characters. + unichar ch = [event.characters characterAtIndex:0]; + if (keyCode < 0x33 || (ch >= 0x2A && ch <= 0x39)) { // Main keys, Numpad char range, normal punctuation + charactersToAppend = event.characters; + } + else { + // Other keys + } } - else { - // Other keys - } - } break; } if (charactersToAppend != nil) { From 724b50224c9ea439e912ac6cfb793f2c3e76bb98 Mon Sep 17 00:00:00 2001 From: Tom Bogle Date: Thu, 5 Jul 2018 14:22:52 -0400 Subject: [PATCH 2/2] [Mac] Removed unneeded code for handling mouse events in IM The low-level event tap already handles detection of mouse events that could make the context out of date. --- mac/Keyman4MacIM/Keyman4MacIM/KMInputController.m | 2 +- mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMInputController.m b/mac/Keyman4MacIM/Keyman4MacIM/KMInputController.m index 742d06c0f2..e5f4db5f1e 100644 --- a/mac/Keyman4MacIM/Keyman4MacIM/KMInputController.m +++ b/mac/Keyman4MacIM/Keyman4MacIM/KMInputController.m @@ -40,7 +40,7 @@ NSMutableArray *servers; } - (NSUInteger)recognizedEvents:(id)sender { - return (NSKeyDownMask | NSLeftMouseDownMask | NSLeftMouseUpMask); + return (NSEventMaskKeyDown); } - (BOOL)handleEvent:(NSEvent *)event client:(id)sender { diff --git a/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m b/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m index 6b4a241d39..cbaa1e1c06 100644 --- a/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m +++ b/mac/Keyman4MacIM/Keyman4MacIM/KMInputMethodEventHandler.m @@ -489,13 +489,7 @@ NSRange _previousSelRange; /*if (event.type == NSKeyDown) [self.AppDelegate handleKeyEvent:event];*/ - if (event.type == NSLeftMouseDown || event.type == NSLeftMouseUp ) { - _contextOutOfDate = YES; - return NO; - } - else if (event.type != NSKeyDown) - return NO; // We ignore NSLeftMouseDragged events (because we'll eventually get a mouse-up). - else if ((event.modifierFlags & NSEventModifierFlagCommand) == NSEventModifierFlagCommand) { + if ((event.modifierFlags & NSEventModifierFlagCommand) == NSEventModifierFlagCommand) { [self handleCommand:event]; return NO; // We let the client app handle all Command-key events. }