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); |