Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 8984da7400104156ff59e1b95adee4349f22a451
https://github.com/WebKit/WebKit/commit/8984da7400104156ff59e1b95adee4349f22a451
Author: Richard Robinson <[email protected]>
Date: 2023-01-20 (Fri, 20 Jan 2023)
Changed paths:
M Source/WebCore/editing/EditorCommand.cpp
M Source/WebCore/page/EventHandler.cpp
M Source/WebCore/page/EventHandler.h
M Source/WebCore/platform/KeyboardScrollingAnimator.cpp
M Source/WebCore/platform/KeyboardScrollingAnimator.h
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
Log Message:
-----------
Page scrolls more than one screenful when pressing Space or Fn+Down
https://bugs.webkit.org/show_bug.cgi?id=250598
rdar://104152802
Reviewed by Simon Fraser.
Before event handler driven smooth keyboard scrolling, pressing and holding the
spacebar or page up/down keys would do the following sequence of actions:
1. Scroll down the page by a "screenful".
2. On Cocoa platforms, the scrolling mechanism would wait until the
`keyRepeatInterval`
has passed.
3. After the interval has passed, it would continue consistently page scrolling
until
the key is released.
With the introduction of event handler driven smooth keyboard scrolling, step
two
was omitted. However, because smooth scrolling was slower than previously, the
behavior
was effectively unchanged, as the slowness of the scrolling compensated for
what would
have been the key repeat interval.
After https://github.com/WebKit/WebKit/pull/8318, smooth scrolling was adjusted
which
caused its velocity to increase. As a result, the lack of a delay was now
noticable,
and page scrolling would scroll more than a "screenful" unless preisely one key
event was sent.
This PR adjusts smooth scrolling such that the smooth keyboard scroll animation
only
starts after the `keyRepeatInterval`, with the first part of the entire scroll
behaving the
same as it did prior to smooth keyboard scrolling.
Note that this will apply to only spacebar and page up / down scrolling, and
not arrow key
scrolling.
* Source/WebCore/editing/EditorCommand.cpp:
(WebCore::executeScrollPageBackward):
(WebCore::executeScrollPageForward):
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::defaultKeyboardEventHandler):
(WebCore::EventHandler::defaultKeyboardScrollEventHandler):
(WebCore::EventHandler::defaultPageUpDownEventHandler):
(WebCore::EventHandler::defaultSpaceEventHandler):
(WebCore::EventHandler::beginKeyboardScrollGesture):
(WebCore::EventHandler::startKeyboardScrollAnimationOnDocument):
(WebCore::EventHandler::startKeyboardScrollAnimationOnRenderBoxLayer):
(WebCore::EventHandler::startKeyboardScrollAnimationOnRenderBoxAndItsAncestors):
(WebCore::EventHandler::startKeyboardScrollAnimationOnEnclosingScrollableContainer):
(WebCore::EventHandler::keyboardScrollRecursively):
(WebCore::EventHandler::keyboardScroll):
* Source/WebCore/page/EventHandler.h:
* Source/WebCore/platform/KeyboardScrollingAnimator.cpp:
(WebCore::KeyboardScrollingAnimator::beginKeyboardScrollGesture):
* Source/WebCore/platform/KeyboardScrollingAnimator.h:
Canonical link: https://commits.webkit.org/259146@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes