Revision: 15204
http://sourceforge.net/p/skim-app/code/15204
Author: hofman
Date: 2025-05-13 15:47:09 +0000 (Tue, 13 May 2025)
Log Message:
-----------
Don't use pageView subview and add page layer directly assublayer of the view
layer. Add layer for drawing freehand note to pageLayer, so it inherits content
filters.
Modified Paths:
--------------
trunk/SKPresentationView.h
trunk/SKPresentationView.m
Modified: trunk/SKPresentationView.h
===================================================================
--- trunk/SKPresentationView.h 2025-05-13 15:30:36 UTC (rev 15203)
+++ trunk/SKPresentationView.h 2025-05-13 15:47:09 UTC (rev 15204)
@@ -46,7 +46,7 @@
@class PDFPage, SKTransitionController, SKNavigationWindow,
SKCursorStyleWindow;
@interface SKPDFPageView : NSView {
- NSView *pageView;
+ CALayer *pageLayer;
PDFPage *page;
SKTransitionController *transitionController;
}
Modified: trunk/SKPresentationView.m
===================================================================
--- trunk/SKPresentationView.m 2025-05-13 15:30:36 UTC (rev 15203)
+++ trunk/SKPresentationView.m 2025-05-13 15:47:09 UTC (rev 15204)
@@ -99,17 +99,15 @@
if (self) {
page = nil;
- CALayer *layer = [CALayer layer];
- [layer setMasksToBounds:YES];
- [layer setFrame:NSRectToCGRect([self bounds])];
- [layer setActions:@{@"contents": [NSNull null]}];
- [layer setDelegate:self];
- pageView = [[NSView alloc] initWithFrame:[self bounds]];
- [pageView setLayer:layer];
- [pageView setWantsLayer:YES];
- [pageView setContentFilters:SKColorEffectFilters()];
- [pageView setTranslatesAutoresizingMaskIntoConstraints:NO];
- [self addSubviewWithConstraints:pageView];
+ pageLayer = [CALayer layer];
+ [pageLayer setMasksToBounds:YES];
+ [pageLayer setFrame:NSRectToCGRect([self bounds])];
+ [pageLayer setAutoresizingMask:kCALayerWidthSizable |
kCALayerHeightSizable];
+ [pageLayer setActions:@{@"contents": [NSNull null]}];
+ [pageLayer setFilters:SKColorEffectFilters()];
+ [pageLayer setDelegate:self];
+ [self setWantsLayer:YES];
+ [[self layer] addSublayer:pageLayer];
[self setTranslatesAutoresizingMaskIntoConstraints:NO];
@@ -132,12 +130,12 @@
if (@available(macOS 10.14, *))
[super viewDidChangeEffectiveAppearance];
if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKInvertColorsInDarkModeKey])
- [pageView setContentFilters:SKColorEffectFilters()];
+ [pageLayer setFilters:SKColorEffectFilters()];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if (context == &SKPresentationViewDefaultsObservationContext)
- [pageView setContentFilters:SKColorEffectFilters()];
+ [pageLayer setFilters:SKColorEffectFilters()];
else
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
}
@@ -259,7 +257,7 @@
- (void)displayPage:(void (^)(void))completionHandler {
if (page == nil) {
- [[pageView layer] setContents:nil];
+ [pageLayer setContents:nil];
if (completionHandler)
completionHandler();
return;
@@ -309,7 +307,7 @@
dispatch_async(dispatch_get_main_queue(), ^{
if (thePage == page)
- [[pageView layer] setContents:image];
+ [pageLayer setContents:image];
if (completionHandler)
completionHandler();
@@ -319,7 +317,7 @@
}
- (NSBitmapImageRep *)bitmapImageRepCachingDisplay {
- NSImage *image = [[pageView layer] contents];
+ NSImage *image = [pageLayer contents];
if ([image isKindOfClass:[NSImage class]]) {
NSImageRep *imageRep = [[image representations] firstObject];
if ([imageRep isKindOfClass:[NSBitmapImageRep class]])
@@ -368,7 +366,7 @@
pvFlags.removeLaserPointerShadow = [[NSUserDefaults
standardUserDefaults] boolForKey:SKRemoveLaserPointerShadowKey];
pvFlags.enableDrawing = NO == [[NSUserDefaults standardUserDefaults]
boolForKey:SKDisableDrawingInPresentationKey];
- [pageView
setLayerContentsPlacement:NSViewLayerContentsPlacementScaleProportionallyToFill];
+ [pageLayer setContents:kCAGravityResizeAspectFill];
[self addTrackingArea:[[NSTrackingArea alloc] initWithRect:NSZeroRect
options:NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited |
NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect owner:self userInfo:nil]];
}
@@ -400,7 +398,7 @@
- (void)setAutoScales:(BOOL)flag {
if (flag != pvFlags.autoScales) {
pvFlags.autoScales = flag;
- [pageView setLayerContentsPlacement:flag ?
NSViewLayerContentsPlacementScaleProportionallyToFill :
NSViewLayerContentsPlacementCenter];
+ [pageLayer setContentsGravity:flag ? kCAGravityResizeAspectFill :
kCAGravityCenter];
[self displayPage:nil];
[[NSNotificationCenter defaultCenter]
postNotificationName:SKPresentationViewAutoScalesChangedNotification
object:self];
}
@@ -407,7 +405,7 @@
}
- (BOOL)hasBlackout {
- return [pageView alphaValue] <= 0.0;
+ return [pageLayer opacity] <= 0.0;
}
- (NSInteger)cursorStyle {
@@ -429,7 +427,7 @@
}
- (void)toggleBlackout:(id)sender {
- [[pageView animator] setAlphaValue:1.0 - [pageView alphaValue]];
+ [pageLayer setOpacity:1.0 - [pageLayer opacity]];
}
- (void)exitPresentation:(id)sender {
@@ -554,7 +552,7 @@
- (void)mouseDown:(NSEvent *)theEvent {
BOOL didHideMouse = pvFlags.cursorHidden;
- if ([pageView alphaValue] <= 0.0) {
+ if ([pageLayer opacity] <= 0.0) {
[self toggleBlackout:nil];
} else if ([NSApp willDragMouse] == NO) {
[self goToNextPage:self];
@@ -741,8 +739,7 @@
}
[layer setContentsScale:[[self layer] contentsScale]];
- [[self layer] addSublayer:layer];
- [layer setFilters:SKColorEffectFilters()];
+ [pageLayer addSublayer:layer];
t = CGAffineTransformMakeScale(scale, scale);
@@ -855,7 +852,12 @@
- (void)didOpen {
[self setAutoScales:YES];
- [pageView setAlphaValue:1.0];
+ if ([pageLayer opacity] < 1.0) {
+ [CATransaction begin];
+ [CATransaction setDisableActions:YES];
+ [pageLayer setOpacity:1.0];
+ [CATransaction commit];
+ }
[self performSelectorOnce:@selector(setCursorForMouse:) afterDelay:0.0];
[self performSelectorOnce:@selector(doAutoHide)
afterDelay:AUTO_HIDE_DELAY];
@@ -958,7 +960,12 @@
[nc addObserver:self
selector:@selector(handleWindowDidBecomeKeyNotification:)
name:NSWindowDidBecomeKeyNotification object:newWindow];
[nc addObserver:self
selector:@selector(handleWindowDidResignKeyNotification:)
name:NSWindowDidResignKeyNotification object:newWindow];
} else {
- [pageView setAlphaValue:1.0];
+ if ([pageLayer opacity] < 1.0) {
+ [CATransaction begin];
+ [CATransaction setDisableActions:YES];
+ [pageLayer setOpacity:1.0];
+ [CATransaction commit];
+ }
pvFlags.cursorHidden = NO;
[NSCursor setHiddenUntilMouseMoves:NO];
[[NSCursor arrowCursor] set];
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