Index: chrome/browser/renderer_host/render_widget_host_view_mac.mm |
=================================================================== |
--- chrome/browser/renderer_host/render_widget_host_view_mac.mm (revision 33947) |
+++ chrome/browser/renderer_host/render_widget_host_view_mac.mm (working copy) |
@@ -703,9 +703,9 @@ |
lastKeyPressedEvent_.get() != theEvent && |
[[theEvent characters] length] > 0 && |
renderWidgetHostView_->render_widget_host_) { |
- NativeWebKeyboardEvent event([[theEvent characters] characterAtIndex:0], |
- ToWebKitModifiers([theEvent modifierFlags]), |
- base::Time::Now().ToDoubleT()); |
+ // Just fabricate a Char event by changing the type of the RawKeyDown |
+ // event, to retain all necessary informations, such as unmodifiedText. |
+ event.type = WebKit::WebInputEvent::Char; |
// We fire menu items on keydown, we don't want to activate menu items |
// twice. |
event.skip_in_browser = true; |
@@ -1352,8 +1352,13 @@ |
// TODO(hbono): need to handle more commands? |
if (selector == @selector(insertNewline:)) { |
lastKeyPressedEvent_.reset([[NSApp currentEvent] retain]); |
- NativeWebKeyboardEvent event('\r', renderWidgetHostView_->im_modifiers_, |
- base::Time::Now().ToDoubleT()); |
+ // Create the Char event from the NSEvent object, so that we can retain |
+ // necessary informations, especially unmodifiedText. |
+ NativeWebKeyboardEvent event(lastKeyPressedEvent_.get()); |
+ event.type = WebKit::WebInputEvent::Char; |
+ event.text[0] = '\r'; |
+ event.text[1] = 0; |
+ event.skip_in_browser = true; |
renderWidgetHostView_->render_widget_host_->ForwardKeyboardEvent(event); |
} |
} |
@@ -1373,9 +1378,13 @@ |
NSString* im_text = isAttributedString ? [string string] : string; |
if (!renderWidgetHostView_->im_composing_ && [im_text length] == 1) { |
lastKeyPressedEvent_.reset([[NSApp currentEvent] retain]); |
- NativeWebKeyboardEvent event([im_text characterAtIndex:0], |
- renderWidgetHostView_->im_modifiers_, |
- base::Time::Now().ToDoubleT()); |
+ // Create the Char event from the NSEvent object, so that we can retain |
+ // necessary informations, especially unmodifiedText. |
+ NativeWebKeyboardEvent event(lastKeyPressedEvent_.get()); |
+ event.type = WebKit::WebInputEvent::Char; |
+ event.text[0] = [im_text characterAtIndex:0]; |
+ event.text[1] = 0; |
+ event.skip_in_browser = true; |
renderWidgetHostView_->render_widget_host_->ForwardKeyboardEvent(event); |
} else { |
renderWidgetHostView_->render_widget_host_->ImeConfirmComposition( |