Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2507)

Unified Diff: content/renderer/render_widget.cc

Issue 8885009: Revert r112160 ("Send one WebKeyboardEvent to the RenderWidget at a time.") (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,
« no previous file with comments | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698