| Index: pdf/instance.cc
|
| diff --git a/pdf/instance.cc b/pdf/instance.cc
|
| index c796cd5588c103d8299890d5c4a7a26a4cb742c9..bf40971d0b8e85c5ae90ec473c02b0433f09e461 100644
|
| --- a/pdf/instance.cc
|
| +++ b/pdf/instance.cc
|
| @@ -497,20 +497,20 @@ bool Instance::HandleInputEvent(const pp::InputEvent& event) {
|
| // Left/Right arrows should scroll to the beginning of the Prev/Next page if
|
| // there is no horizontal scroll bar.
|
| // If fit-to-height, PgDown/PgUp should scroll to the beginning of the
|
| - // Prev/Next page.
|
| + // Prev/Next page. Spacebar / shift+spacebar should do the same.
|
| if (v_scrollbar_.get() && event.GetType() == PP_INPUTEVENT_TYPE_KEYDOWN) {
|
| pp::KeyboardInputEvent keyboard_event(event);
|
| - bool page_down =
|
| - (!h_scrollbar_.get() &&
|
| - keyboard_event.GetKeyCode() == ui::VKEY_RIGHT) ||
|
| - (zoom_mode_ == ZOOM_FIT_TO_PAGE &&
|
| - keyboard_event.GetKeyCode() == ui::VKEY_NEXT);
|
| - bool page_up =
|
| - (!h_scrollbar_.get() &&
|
| - keyboard_event.GetKeyCode() == ui::VKEY_LEFT) ||
|
| - (zoom_mode_ == ZOOM_FIT_TO_PAGE &&
|
| - keyboard_event.GetKeyCode() == ui::VKEY_PRIOR);
|
| -
|
| + bool no_h_scrollbar = !h_scrollbar_.get();
|
| + uint32_t key_code = keyboard_event.GetKeyCode();
|
| + bool page_down = no_h_scrollbar && key_code == ui::VKEY_RIGHT;
|
| + bool page_up = no_h_scrollbar && key_code == ui::VKEY_LEFT;
|
| + if (zoom_mode_ == ZOOM_FIT_TO_PAGE) {
|
| + bool has_shift =
|
| + keyboard_event.GetModifiers() & PP_INPUTEVENT_MODIFIER_SHIFTKEY;
|
| + bool key_is_space = key_code == ui::VKEY_SPACE;
|
| + page_down |= key_is_space || key_code == ui::VKEY_NEXT;
|
| + page_up |= (key_is_space && has_shift) || (key_code == ui::VKEY_PRIOR);
|
| + }
|
| if (page_down) {
|
| int page = engine_->GetFirstVisiblePage();
|
| // Engine calculates visible page including delimiter to the page size.
|
|
|