Revision: 15170
          http://sourceforge.net/p/skim-app/code/15170
Author:   hofman
Date:     2025-05-08 22:54:29 +0000 (Thu, 08 May 2025)
Log Message:
-----------
Avoid redrawing presentation view. Don't call setNeedsDisplay: on pageView when 
view needs display, only update when changing an annotation. Don't redraw on 
resize, only at endof live resize.

Modified Paths:
--------------
    trunk/SKMainWindowController.m
    trunk/SKPresentationView.h
    trunk/SKPresentationView.m

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2025-05-08 16:14:28 UTC (rev 15169)
+++ trunk/SKMainWindowController.m      2025-05-08 22:54:29 UTC (rev 15170)
@@ -2193,7 +2193,7 @@
         if (page) {
             [self updateThumbnailAtPageIndex:[page pageIndex]];
             if ([presentationView page] == page)
-                [presentationView setNeedsDisplay:YES];
+                [presentationView updatedAnnotation];
         }
     } else {
         [[undoManager prepareWithInvocationTarget:[notification object]] 
removeAnnotation:annotation];
@@ -2217,7 +2217,7 @@
             }
             [secondaryPdfView addedAnnotation:annotation onPage:page];
             if ([self interactionMode] == SKPresentationMode && 
[presentationView page] == page)
-                [presentationView setNeedsDisplay:YES];
+                [presentationView updatedAnnotation];
         }
     }
 }
@@ -2235,7 +2235,7 @@
         if (page) {
             [self updateThumbnailAtPageIndex:[page pageIndex]];
             if ([presentationView page] == page)
-                [presentationView setNeedsDisplay:YES];
+                [presentationView updatedAnnotation];
         }
     } else {
         [[undoManager prepareWithInvocationTarget:[notification object]] 
addAnnotation:annotation toPage:page];
@@ -2262,7 +2262,7 @@
             }
             [secondaryPdfView removedAnnotation:annotation onPage:page];
             if ([self interactionMode] == SKPresentationMode && 
[presentationView page] == page)
-                [presentationView setNeedsDisplay:YES];
+                [presentationView updatedAnnotation];
         }
     }
 }
@@ -2287,7 +2287,7 @@
         [secondaryPdfView removedAnnotation:annotation onPage:oldPage];
         [secondaryPdfView addedAnnotation:annotation onPage:newPage];
         if ([self interactionMode] == SKPresentationMode && ([presentationView 
page] == oldPage || [presentationView page] == newPage))
-            [presentationView setNeedsDisplay:YES];
+            [presentationView updatedAnnotation];
     }
     
     [rightSideController.noteArrayController rearrangeObjects];
@@ -2729,8 +2729,8 @@
                 [secondaryPdfView updatedAnnotation:note];
                 
                 if ([self interactionMode] == SKPresentationMode && 
[presentationView page] == page)
-                    [presentationView setNeedsDisplay:YES];
-                
+                    [presentationView updatedAnnotation];
+
                 if ([keyPath isEqualToString:SKNPDFAnnotationBoundsKey] && 
note == [pdfView currentAnnotation] && [[NSUserDefaults standardUserDefaults] 
boolForKey:SKDisplayNoteBoundsKey])
                     [self updateRightStatus];
             }

Modified: trunk/SKPresentationView.h
===================================================================
--- trunk/SKPresentationView.h  2025-05-08 16:14:28 UTC (rev 15169)
+++ trunk/SKPresentationView.h  2025-05-08 22:54:29 UTC (rev 15170)
@@ -112,6 +112,8 @@
 - (void)didOpen;
 - (void)willClose;
 
+- (void)updatedAnnotation;
+
 @end
 
 NS_ASSUME_NONNULL_END

Modified: trunk/SKPresentationView.m
===================================================================
--- trunk/SKPresentationView.m  2025-05-08 16:14:28 UTC (rev 15169)
+++ trunk/SKPresentationView.m  2025-05-08 22:54:29 UTC (rev 15170)
@@ -143,16 +143,6 @@
 
 #pragma mark Accessors
 
-- (void)setNeedsDisplay:(BOOL)needsDisplay {
-    [super setNeedsDisplay:needsDisplay];
-    [pageView setNeedsDisplay:needsDisplay];
-}
-
-- (void)setNeedsDisplayInRect:(NSRect)invalidRect {
-    [super setNeedsDisplayInRect:invalidRect];
-    [pageView setNeedsDisplay:YES];
-}
-
 - (void)setPage:(PDFPage *)newPage {
     if (newPage != page) {
         page = newPage;
@@ -269,11 +259,23 @@
         pvFlags.removeLaserPointerShadow = [[NSUserDefaults 
standardUserDefaults] boolForKey:SKRemoveLaserPointerShadowKey];
         pvFlags.enableDrawing = NO == [[NSUserDefaults standardUserDefaults] 
boolForKey:SKDisableDrawingInPresentationKey];
         
+        [pageView 
setLayerContentsRedrawPolicy:NSViewLayerContentsRedrawOnSetNeedsDisplay];
+        [pageView 
setLayerContentsPlacement:NSViewLayerContentsPlacementScaleProportionallyToFit];
+        
         [self addTrackingArea:[[NSTrackingArea alloc] initWithRect:NSZeroRect 
options:NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | 
NSTrackingActiveInKeyWindow | NSTrackingInVisibleRect owner:self userInfo:nil]];
     }
     return self;
 }
 
+- (void)viewDidEndLiveResize {
+    [super viewDidEndLiveResize];
+    [pageView setNeedsDisplay:YES];
+}
+
+- (void)updatedAnnotation; {
+    [pageView setNeedsDisplay:YES];
+}
+
 #pragma mark Accessors
 
 - (BOOL)canBecomeKeyView {
@@ -287,6 +289,7 @@
 - (void)setAutoScales:(BOOL)flag {
     if (flag != pvFlags.autoScales) {
         pvFlags.autoScales = flag;
+        [pageView setLayerContentsPlacement:flag ? 
NSViewLayerContentsPlacementScaleProportionallyToFit : 
NSViewLayerContentsPlacementCenter];
         [pageView setNeedsDisplay:YES];
         [[NSNotificationCenter defaultCenter] 
postNotificationName:SKPresentationViewAutoScalesChangedNotification 
object:self];
     }

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