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

Reply via email to