Bug 615935: Cancel any complex text composition for a Cocoa NPAPI plugin when it doesn't return kNPEventStartIME for a key down event. r=smichaud a=blocking2.0betaN+

This commit is contained in:
Josh Aas 2010-12-03 00:22:20 -05:00
parent c04477ac1b
commit bf92b679ec
3 changed files with 16 additions and 4 deletions

View File

@ -38,6 +38,7 @@
- (NSTextInputContext*)inputContext; - (NSTextInputContext*)inputContext;
- (BOOL)interpretKeyEvent:(NSEvent*)event string:(NSString**)string; - (BOOL)interpretKeyEvent:(NSEvent*)event string:(NSString**)string;
- (void)cancelComposition;
@end @end

View File

@ -83,8 +83,7 @@
- (void)keyboardInputSourceChanged:(NSNotification *)notification - (void)keyboardInputSourceChanged:(NSNotification *)notification
{ {
[mInputTextView setString:@""]; [self cancelComposition];
[self orderOut:nil];
} }
- (BOOL)interpretKeyEvent:(NSEvent*)event string:(NSString**)string - (BOOL)interpretKeyEvent:(NSEvent*)event string:(NSString**)string
@ -119,4 +118,10 @@
return [mInputTextView inputContext]; return [mInputTextView inputContext];
} }
- (void)cancelComposition
{
[mInputTextView setString:@""];
[self orderOut:nil];
}
@end @end

View File

@ -5365,9 +5365,15 @@ static const char* ToEscapedString(NSString* aString, nsCAutoString& aBuf)
mGeckoChild->DispatchWindowEvent(pluginEvent); mGeckoChild->DispatchWindowEvent(pluginEvent);
if (!mGeckoChild) if (!mGeckoChild)
return; return;
if (!mPluginComplexTextInputRequested) { if (!mPluginComplexTextInputRequested) {
// Ideally we'd cancel any TSM composition here. #ifdef NP_NO_CARBON
[[ComplexTextInputPanel sharedComplexTextInputPanel] cancelComposition];
#else
if (mPluginTSMDoc) {
::FixTSMDocument(mPluginTSMDoc);
}
#endif
return; return;
} }