Chromium Code Reviews| Index: content/renderer/render_widget.cc |
| diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc |
| index d4a55d6075564736399c4b010ae9cb21a701d9df..7476799d41c20625a83734bab3ba0e94c9922a36 100644 |
| --- a/content/renderer/render_widget.cc |
| +++ b/content/renderer/render_widget.cc |
| @@ -47,6 +47,7 @@ |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebRange.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" |
| #include "third_party/skia/include/core/SkShader.h" |
| +#include "ui/base/keycodes/keyboard_codes.h" |
| #include "ui/base/ui_base_switches.h" |
| #include "ui/gfx/rect_conversions.h" |
| #include "ui/gfx/size_conversions.h" |
| @@ -74,6 +75,7 @@ using WebKit::WebCompositionUnderline; |
| using WebKit::WebCursorInfo; |
| using WebKit::WebGestureEvent; |
| using WebKit::WebInputEvent; |
| +using WebKit::WebKeyboardEvent; |
| using WebKit::WebMouseEvent; |
| using WebKit::WebNavigationPolicy; |
| using WebKit::WebPagePopup; |
| @@ -754,6 +756,8 @@ void RenderWidget::OnHandleInputEvent(const WebKit::WebInputEvent* input_event, |
| bool processed = prevent_default; |
| if (input_event->type != WebInputEvent::Char || !suppress_next_char_events_) { |
| suppress_next_char_events_ = false; |
| + if (!processed) |
| + processed = MaybeScrollTopControls(input_event); |
| if (!processed && webwidget_) |
| processed = webwidget_->handleInputEvent(*input_event); |
| } |
| @@ -825,6 +829,38 @@ void RenderWidget::OnHandleInputEvent(const WebKit::WebInputEvent* input_event, |
| } |
| } |
| +bool RenderWidget::MaybeScrollTopControls(const WebInputEvent* event) { |
| + if (event->type != WebInputEvent::RawKeyDown) |
| + return false; |
| + const WebKeyboardEvent* key_event = |
| + static_cast<const WebKeyboardEvent *>(event); |
| + if (key_event->isSystemKey) |
| + return false; |
| + int key = key_event->windowsKeyCode; |
| + bool shift_pressed = key_event->modifiers & WebInputEvent::ShiftKey; |
| + bool processed = false; |
| + if (compositor_->GetTopControlsOffset() < 0.f) { |
| + // Shows top controls upon scrolling up: Shift-space, up, pgup, home |
| + if (shift_pressed) { |
| + if (key == ui::VKEY_SPACE) processed = true; |
| + } else { |
| + if (key == ui::VKEY_UP || key == ui::VKEY_PRIOR || key == ui::VKEY_HOME) |
|
aelias_OOO_until_Jul13
2013/05/21 05:51:41
This is pretty complex and you're likely to miss s
Jinsuk Kim
2013/05/24 09:57:13
Done. Created a new CL on WebKit side for that htt
|
| + processed = true; |
| + } |
| + if (processed) |
| + compositor_->ShowTopControls(true); |
| + } else { |
| + // Hides top controls upon scrolling down: down, space, pgdn, end |
| + if (!shift_pressed && |
| + (key == ui::VKEY_DOWN || key == ui::VKEY_SPACE || |
| + key == ui::VKEY_NEXT || key == ui::VKEY_END)) { |
| + compositor_->ShowTopControls(false); |
| + processed = true; |
| + } |
| + } |
| + return processed; |
| +} |
| + |
| void RenderWidget::OnCursorVisibilityChange(bool is_visible) { |
| if (webwidget_) |
| webwidget_->setCursorVisibilityState(is_visible); |