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 Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit