Revision: 15727
          http://sourceforge.net/p/skim-app/code/15727
Author:   hofman
Date:     2025-10-28 17:12:47 +0000 (Tue, 28 Oct 2025)
Log Message:
-----------
calculate fixed scroll in case clipView is flipped, as we don't know Apple's 
future

Modified Paths:
--------------
    trunk/SKBasePDFView.m

Modified: trunk/SKBasePDFView.m
===================================================================
--- trunk/SKBasePDFView.m       2025-10-28 16:54:37 UTC (rev 15726)
+++ trunk/SKBasePDFView.m       2025-10-28 17:12:47 UTC (rev 15727)
@@ -414,14 +414,16 @@
     [super scrollPageUp:sender];
     
     if (scrollView) {
+        CGFloat height = NSHeight(bounds) - [clipView contentInsets].top;
         // check whether our assumptions are still correct
-        if ([clipView isFlipped] == NO && NSMinY([clipView bounds]) < 
NSMinY(bounds)) {
-            CGFloat height = NSHeight(bounds) - [clipView contentInsets].top;
-            CGFloat bottom = NSMinY([[scrollView documentView] frame]);
-            bounds.origin.y = fmax(bottom, NSMinY(bounds) - fmax(height - 
[scrollView verticalPageScroll], 0.5 * height));
-            [clipView scrollToPoint:bounds.origin];
-            [scrollView reflectScrolledClipView:clipView];
-        }
+        if ([clipView isFlipped] == NO && NSMinY([clipView bounds]) < 
NSMinY(bounds))
+            bounds.origin.y = fmax(NSMinY([[scrollView documentView] frame]), 
NSMinY(bounds) - fmax(height - [scrollView verticalPageScroll], 0.5 * height));
+        else if ([clipView isFlipped] && NSMinY([clipView bounds]) > 
NSMinY(bounds))
+            bounds.origin.y = fmin(NSMaxY([[scrollView documentView] frame]) - 
NSHeight(bounds), NSMinY(bounds) + fmax(height - [scrollView 
verticalPageScroll], 0.5 * height));
+        else
+            return;
+        [clipView scrollToPoint:bounds.origin];
+        [scrollView reflectScrolledClipView:clipView];
     } else if (clipView) {
         if (NSEqualPoints([clipView bounds].origin, bounds.origin)) {
             [self goToNextPage:sender];
@@ -456,14 +458,18 @@
     [super scrollPageDown:sender];
     
     if (scrollView) {
+        CGFloat inset = [clipView contentInsets].top;
+        CGFloat height = NSHeight(bounds) - inset;
+        CGFloat offset = fmax(height - [scrollView verticalPageScroll], 0.5 * 
height);
         // check whether our assumptions are still correct
-        if ([clipView isFlipped] == NO && NSMinY([clipView bounds]) > 
NSMinY(bounds)) {
-            CGFloat height = NSHeight(bounds) - [clipView contentInsets].top;
-            CGFloat top = NSMaxY([[scrollView documentView] frame]);
-            bounds.origin.y = fmin(top - height, NSMinY(bounds) + fmax(height 
- [scrollView verticalPageScroll], 0.5 * height));
-            [clipView scrollToPoint:bounds.origin];
-            [scrollView reflectScrolledClipView:clipView];
-        }
+        if ([clipView isFlipped] == NO && NSMinY([clipView bounds]) > 
NSMinY(bounds))
+            bounds.origin.y = fmin(NSMaxY([[scrollView documentView] frame]) - 
height, NSMinY(bounds) + offset);
+        else if ([clipView isFlipped] && NSMinY([clipView bounds]) < 
NSMinY(bounds))
+            bounds.origin.y = fmax(NSMinY([[scrollView documentView] frame]) - 
inset, NSMinY(bounds) - offset);
+        else
+            return;
+        [clipView scrollToPoint:bounds.origin];
+        [scrollView reflectScrolledClipView:clipView];
     } else if (clipView) {
         if (NSEqualPoints([clipView bounds].origin, bounds.origin)) {
             [self goToPreviousPage:sender];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to