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