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

Reply via email to