Changeset 242695 in webkit
- Timestamp:
- Mar 10, 2019, 7:54:55 PM (7 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 4 edited
-
ChangeLog (modified) (1 diff)
-
UIProcess/ios/WKContentViewInteraction.mm (modified) (1 diff)
-
UIProcess/ios/WKKeyboardScrollingAnimator.h (modified) (2 diffs)
-
UIProcess/ios/WKKeyboardScrollingAnimator.mm (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r242693 r242695 1 2019-03-10 Tim Horton <timothy_horton@apple.com> 2 3 iOS: Using ⌥ to scroll horizontally is no different than arrow key 4 https://bugs.webkit.org/show_bug.cgi?id=195268 5 <rdar://problem/48326682> 6 7 Reviewed by Brent Fulgham. 8 9 * UIProcess/ios/WKContentViewInteraction.mm: 10 (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:inDirection:]): 11 (-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]): Deleted. 12 * UIProcess/ios/WKKeyboardScrollingAnimator.h: 13 * UIProcess/ios/WKKeyboardScrollingAnimator.mm: 14 (-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]): 15 (-[WKKeyboardScrollViewAnimator setDelegate:]): 16 (-[WKKeyboardScrollViewAnimator distanceForIncrement:inDirection:]): 17 (-[WKKeyboardScrollViewAnimator distanceForIncrement:]): Deleted. 18 Add a direction parameter to -distanceForIncrement:, so the client 19 can return a different page/document size based on the scrolling axis. 20 Adopt it both in the default implementation and in WKContentViewInteraction. 21 Make the option key scroll by page when scrolling horizontally, like it 22 does when scrolling vertically. 23 1 24 2019-03-10 David Quesada <david_quesada@apple.com> 2 25 -
trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
r242690 r242695 4433 4433 } 4434 4434 4435 - (CGFloat)keyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator distanceForIncrement:(WebKit::ScrollingIncrement)increment 4436 { 4435 - (CGFloat)keyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator distanceForIncrement:(WebKit::ScrollingIncrement)increment inDirection:(WebKit::ScrollingDirection)direction 4436 { 4437 BOOL directionIsHorizontal = direction == WebKit::ScrollingDirection::Left || direction == WebKit::ScrollingDirection::Right; 4438 4437 4439 switch (increment) { 4438 case WebKit::ScrollingIncrement::Document: 4439 return [self convertRect:self.bounds toView:_webView].size.height; 4440 case WebKit::ScrollingIncrement::Page: 4441 return [self convertSize:CGSizeMake(0, WebCore::Scrollbar::pageStep(_page->unobscuredContentRect().height(), self.bounds.size.height)) toView:_webView].height; 4440 case WebKit::ScrollingIncrement::Document: { 4441 CGSize documentSize = [self convertRect:self.bounds toView:_webView].size; 4442 return directionIsHorizontal ? documentSize.width : documentSize.height; 4443 } 4444 case WebKit::ScrollingIncrement::Page: { 4445 CGSize pageSize = [self convertSize:CGSizeMake(0, WebCore::Scrollbar::pageStep(_page->unobscuredContentRect().height(), self.bounds.size.height)) toView:_webView]; 4446 return directionIsHorizontal ? pageSize.width : pageSize.height; 4447 } 4442 4448 case WebKit::ScrollingIncrement::Line: 4443 4449 return [self convertSize:CGSizeMake(0, WebCore::Scrollbar::pixelsPerLineStep()) toView:_webView].height; -
trunk/Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.h
r237266 r242695 38 38 }; 39 39 40 enum class ScrollingDirection : uint8_t { 41 Up, 42 Down, 43 Left, 44 Right 45 }; 46 40 47 } 41 48 … … 63 70 @optional 64 71 - (BOOL)isScrollableForKeyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator; 65 - (CGFloat)keyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator distanceForIncrement:(WebKit::ScrollingIncrement)increment ;72 - (CGFloat)keyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator distanceForIncrement:(WebKit::ScrollingIncrement)increment inDirection:(WebKit::ScrollingDirection)direction; 66 73 - (void)keyboardScrollViewAnimatorWillScroll:(WKKeyboardScrollViewAnimator *)animator; 67 74 - (void)keyboardScrollViewAnimatorDidFinishScrolling:(WKKeyboardScrollViewAnimator *)animator; -
trunk/Source/WebKit/UIProcess/ios/WKKeyboardScrollingAnimator.mm
r239427 r242695 43 43 namespace WebKit { 44 44 45 enum class ScrollingDirection : uint8_t { Up, Down, Left, Right };46 47 45 struct KeyboardScroll { 48 46 WebCore::FloatSize offset; // Points per increment. … … 70 68 @required 71 69 - (BOOL)isKeyboardScrollable; 72 - (CGFloat)distanceForIncrement:(WebKit::ScrollingIncrement)increment ;70 - (CGFloat)distanceForIncrement:(WebKit::ScrollingIncrement)increment inDirection:(WebKit::ScrollingDirection)direction; 73 71 - (void)scrollToContentOffset:(WebCore::FloatPoint)offset animated:(BOOL)animated; 74 72 - (void)scrollWithScrollToExtentAnimationTo:(CGPoint)offset; … … 234 232 case Key::LeftArrow: 235 233 case Key::RightArrow: 234 if (altPressed) 235 return WebKit::ScrollingIncrement::Page; 236 236 return WebKit::ScrollingIncrement::Line; 237 237 case Key::UpArrow: … … 272 272 }(); 273 273 274 CGFloat scrollDistance = [_scrollable distanceForIncrement:increment ];274 CGFloat scrollDistance = [_scrollable distanceForIncrement:increment inDirection:direction]; 275 275 276 276 WebKit::KeyboardScroll scroll; … … 545 545 546 546 _delegateRespondsToIsKeyboardScrollable = [_delegate respondsToSelector:@selector(isScrollableForKeyboardScrollViewAnimator:)]; 547 _delegateRespondsToDistanceForIncrement = [_delegate respondsToSelector:@selector(keyboardScrollViewAnimator:distanceForIncrement: )];547 _delegateRespondsToDistanceForIncrement = [_delegate respondsToSelector:@selector(keyboardScrollViewAnimator:distanceForIncrement:inDirection:)]; 548 548 _delegateRespondsToWillScroll = [_delegate respondsToSelector:@selector(keyboardScrollViewAnimatorWillScroll:)]; 549 549 _delegateRespondsToDidFinishScrolling = [_delegate respondsToSelector:@selector(keyboardScrollViewAnimatorDidFinishScrolling:)]; … … 572 572 } 573 573 574 - (CGFloat)distanceForIncrement:(WebKit::ScrollingIncrement)increment 574 - (CGFloat)distanceForIncrement:(WebKit::ScrollingIncrement)increment inDirection:(WebKit::ScrollingDirection)direction 575 575 { 576 576 auto scrollView = _scrollView.getAutoreleased(); … … 580 580 const CGFloat defaultPageScrollFraction = 0.8; 581 581 const CGFloat defaultLineScrollHeight = 40; 582 583 BOOL directionIsHorizontal = direction == WebKit::ScrollingDirection::Left || direction == WebKit::ScrollingDirection::Right; 582 584 583 585 if (!_delegateRespondsToDistanceForIncrement) { 584 586 switch (increment) { 585 587 case WebKit::ScrollingIncrement::Document: 586 return scrollView.contentSize.height;588 return directionIsHorizontal ? scrollView.contentSize.width : scrollView.contentSize.height; 587 589 case WebKit::ScrollingIncrement::Page: 588 return scrollView.frame.size.height* defaultPageScrollFraction;590 return (directionIsHorizontal ? scrollView.frame.size.width : scrollView.frame.size.height) * defaultPageScrollFraction; 589 591 case WebKit::ScrollingIncrement::Line: 590 592 return defaultLineScrollHeight * scrollView.zoomScale; … … 594 596 } 595 597 596 return [_delegate keyboardScrollViewAnimator:self distanceForIncrement:increment ];598 return [_delegate keyboardScrollViewAnimator:self distanceForIncrement:increment inDirection:direction]; 597 599 } 598 600
Note:
See TracChangeset
for help on using the changeset viewer.