Index: content/browser/renderer_host/render_widget_host_view_aura.cc |
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc |
index 3b8bb93ebc947770f8bf58510255cefc2a5a92a3..aea511565cfca8163fe1efbf80fdc03e22a0db56 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc |
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc |
@@ -1919,6 +1919,11 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { |
host_->ForwardWheelEvent(mouse_wheel_event); |
} else if (CanRendererHandleEvent(event) && |
!(event->flags() & ui::EF_FROM_TOUCH)) { |
+ // Confirm existing composition text on mouse press, to make sure |
+ // the input caret won't be moved with an ongoing composition text. |
+ if (event->type() == ui::ET_MOUSE_PRESSED) |
+ FinishImeCompositionSession(); |
+ |
blink::WebMouseEvent mouse_event = MakeWebMouseEvent(event); |
ModifyEventMovementAndCoords(&mouse_event); |
host_->ForwardMouseEvent(mouse_event); |
@@ -1931,9 +1936,6 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { |
switch (event->type()) { |
case ui::ET_MOUSE_PRESSED: |
window_->SetCapture(); |
- // Confirm existing composition text on mouse click events, to make sure |
- // the input caret won't be moved with an ongoing composition text. |
- FinishImeCompositionSession(); |
break; |
case ui::ET_MOUSE_RELEASED: |
if (!NeedsMouseCapture()) |
@@ -1949,7 +1951,7 @@ void RenderWidgetHostViewAura::OnMouseEvent(ui::MouseEvent* event) { |
// In fullscreen mode which is typically used by flash, don't forward |
// the mouse events to the parent. The renderer and the plugin process |
// handle these events. |
- if (!is_fullscreen_ && window_->parent()->delegate() && |
+ if (!is_fullscreen_ && window_->parent() && window_->parent()->delegate() && |
!(event->flags() & ui::EF_FROM_TOUCH)) { |
event->ConvertLocationToTarget(window_, window_->parent()); |
window_->parent()->delegate()->OnMouseEvent(event); |
@@ -2027,6 +2029,11 @@ void RenderWidgetHostViewAura::OnGestureEvent(ui::GestureEvent* event) { |
if (touch_editing_client_ && touch_editing_client_->HandleInputEvent(event)) |
return; |
+ // Confirm existing composition text on TAP gesture, to make sure the input |
+ // caret won't be moved with an ongoing composition text. |
+ if (event->type() == ui::ET_GESTURE_TAP) |
+ FinishImeCompositionSession(); |
+ |
RenderViewHostDelegate* delegate = NULL; |
if (host_->IsRenderView()) |
delegate = RenderViewHost::From(host_)->GetDelegate(); |