Revision: 9168 http://sourceforge.net/p/skim-app/code/9168 Author: hofman Date: 2016-10-12 13:00:01 +0000 (Wed, 12 Oct 2016) Log Message: ----------- Scroll by scroll amount in PDFView space, not in clipview space, because the latter may be scaled by the scale factor. Reduce page scroll by 6 times page scroll, because PDFView apparently does this in continuous mode. Check whether the view was scrolled after trying rather than checking before to decide about navigating pages.
Modified Paths: -------------- trunk/PDFView_SKExtensions.m Modified: trunk/PDFView_SKExtensions.m =================================================================== --- trunk/PDFView_SKExtensions.m 2016-10-11 16:47:28 UTC (rev 9167) +++ trunk/PDFView_SKExtensions.m 2016-10-12 13:00:01 UTC (rev 9168) @@ -91,32 +91,28 @@ (modifiers == 0)) { NSScrollView *scrollView = [self scrollView]; - NSView *documentView = [scrollView documentView]; NSClipView *clipView = [scrollView contentView]; - NSRect docRect = [documentView frame]; NSRect clipRect = [clipView bounds]; BOOL flipped = [clipView isFlipped]; + CGFloat scroll = eventChar == NSUpArrowFunctionKey || eventChar == NSDownArrowFunctionKey ? [scrollView verticalLineScroll] : NSHeight([self convertRect:clipRect fromView:clipView]) - 6.0 * [scrollView verticalPageScroll]; + NSPoint point = [self convertPoint:clipRect.origin fromView:clipView]; if (eventChar == NSDownArrowFunctionKey || eventChar == NSPageDownFunctionKey) { - if (flipped ? NSMaxY(clipRect) <= NSMaxY(docRect) - 1.0 : NSMinY(clipRect) >= NSMinY(docRect) + 1.0) { - CGFloat scroll = eventChar == NSDownArrowFunctionKey ? [scrollView verticalLineScroll] : NSHeight(clipRect) - [scrollView verticalPageScroll]; - clipRect.origin.y += flipped ? scroll : -scroll; - [clipView scrollPoint:clipRect.origin]; - } else if ([self canGoToNextPage]) { + point.y -= scroll; + [clipView scrollPoint:[self convertPoint:point toView:clipView]]; + if ((flipped ? -1.0 : 1.0) * (NSMinY(clipRect) - NSMinY([clipView bounds])) <= 0.0 && [self canGoToNextPage]) { [self goToNextPage:nil]; - docRect = [documentView frame]; + NSRect docRect = [[scrollView documentView] frame]; clipRect = [clipView bounds]; clipRect.origin.y = flipped ? NSMinY(docRect) : NSMaxY(docRect) - NSHeight(clipRect); [clipView scrollPoint:clipRect.origin]; } } else if (eventChar == NSUpArrowFunctionKey || eventChar == NSPageUpFunctionKey) { - if (flipped ? NSMinY(clipRect) >= NSMinY(docRect) + 1.0 : NSMaxY(clipRect) <= NSMaxY(docRect) - 1.0) { - CGFloat scroll = eventChar == NSUpArrowFunctionKey ? [scrollView verticalLineScroll] : NSHeight(clipRect) - [scrollView verticalPageScroll]; - clipRect.origin.y += flipped ? -scroll : scroll; - [clipView scrollPoint:clipRect.origin]; - } else if ([self canGoToPreviousPage]) { + point.y += scroll; + [clipView scrollPoint:[self convertPoint:point toView:clipView]]; + if ((flipped ? 1.0 : -1.0) * (NSMinY(clipRect) - NSMinY([clipView bounds])) <= 0.0 && [self canGoToPreviousPage]) { [self goToPreviousPage:nil]; - docRect = [documentView frame]; + NSRect docRect = [[scrollView documentView] frame]; clipRect = [clipView bounds]; clipRect.origin.y = flipped ? NSMaxY(docRect) - NSHeight(clipRect) : NSMinY(docRect); [clipView scrollPoint:clipRect.origin]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit