| Index: content/renderer/render_widget.cc
|
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
|
| index cd50991e3b785568574b54c74d85b9582145bc7e..136c7ec2e7944addaa1fbd9c41aca7020281cd44 100644
|
| --- a/content/renderer/render_widget.cc
|
| +++ b/content/renderer/render_widget.cc
|
| @@ -91,6 +91,7 @@ RenderWidget::RenderWidget(WebKit::WebPopupType popup_type)
|
| can_compose_inline_(true),
|
| popup_type_(popup_type),
|
| pending_window_rect_count_(0),
|
| + suppress_next_char_events_(false),
|
| is_accelerated_compositing_active_(false),
|
| animation_update_pending_(false),
|
| animation_task_posted_(false),
|
| @@ -445,6 +446,11 @@ void RenderWidget::OnHandleInputEvent(const IPC::Message& message) {
|
| const WebInputEvent* input_event =
|
| reinterpret_cast<const WebInputEvent*>(data);
|
|
|
| + bool is_keyboard_shortcut = false;
|
| + // is_keyboard_shortcut flag is only available for RawKeyDown events.
|
| + if (input_event->type == WebInputEvent::RawKeyDown)
|
| + message.ReadBool(&iter, &is_keyboard_shortcut);
|
| +
|
| bool prevent_default = false;
|
| if (WebInputEvent::isMouseEventType(input_event->type)) {
|
| prevent_default = WillHandleMouseEvent(
|
| @@ -452,8 +458,17 @@ void RenderWidget::OnHandleInputEvent(const IPC::Message& message) {
|
| }
|
|
|
| bool processed = prevent_default;
|
| - if (!processed && webwidget_)
|
| - processed = webwidget_->handleInputEvent(*input_event);
|
| + if (input_event->type != WebInputEvent::Char || !suppress_next_char_events_) {
|
| + suppress_next_char_events_ = false;
|
| + if (!processed && webwidget_)
|
| + processed = webwidget_->handleInputEvent(*input_event);
|
| + }
|
| +
|
| + // If this RawKeyDown event corresponds to a browser keyboard shortcut and
|
| + // it's not processed by webkit, then we need to suppress the upcoming Char
|
| + // events.
|
| + if (!processed && is_keyboard_shortcut)
|
| + suppress_next_char_events_ = true;
|
|
|
| IPC::Message* response =
|
| new ViewHostMsg_HandleInputEvent_ACK(routing_id_, input_event->type,
|
|
|