Revision: 15187
          http://sourceforge.net/p/skim-app/code/15187
Author:   hofman
Date:     2025-05-11 21:07:43 +0000 (Sun, 11 May 2025)
Log Message:
-----------
Start the transition preview when page was drawn, don't start preview when we 
are busy previewing.

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

Modified: trunk/SKPresentationOptionsSheetController.h
===================================================================
--- trunk/SKPresentationOptionsSheetController.h        2025-05-11 15:41:28 UTC 
(rev 15186)
+++ trunk/SKPresentationOptionsSheetController.h        2025-05-11 21:07:43 UTC 
(rev 15187)
@@ -61,6 +61,7 @@
     NSMutableSet<SKLabeledTransitionInfo *> *changedTransitions;
     NSPanel *previewWindow;
     SKPDFPageView *previewView;
+    BOOL previewing;
 }
 
 @property (nonatomic, nullable, strong) IBOutlet NSPopUpButton 
*notesDocumentPopUpButton;

Modified: trunk/SKPresentationOptionsSheetController.m
===================================================================
--- trunk/SKPresentationOptionsSheetController.m        2025-05-11 15:41:28 UTC 
(rev 15186)
+++ trunk/SKPresentationOptionsSheetController.m        2025-05-11 21:07:43 UTC 
(rev 15187)
@@ -297,6 +297,10 @@
 }
 
 - (void)preview:(id)sender {
+    if (previewing)
+        return;
+    previewing = YES;
+    
     SKLabeledTransitionInfo *info = transition;
     NSInteger idx = -1;
     if (separate) {
@@ -366,26 +370,24 @@
     [previewWindow layoutIfNeeded];
     [previewWindow center];
     
-    [previewView setPage:[[controller pdfDocument] pageAtIndex:idx]];
     [[previewView transitionController] setTransition:info];
     
-    [previewWindow makeKeyAndOrderFront:nil];
+    PDFPage *page = [[controller pdfDocument] pageAtIndex:idx];
+    void (^displayPreview)(void) = ^{
+        [previewWindow makeKeyAndOrderFront:nil];
+        DISPATCH_MAIN_AFTER_SEC(1.0, ^{
+            [previewView animateToNextPage:^{
+                DISPATCH_MAIN_AFTER_SEC(1.0 , ^{
+                    if ([previewWindow isKeyWindow] && [[self window] 
isVisible])
+                        [[self window] makeKeyWindow];
+                    [previewWindow orderOut:nil];
+                    previewing = NO;
+                });
+            }];
+        });
+    };
     
-    DISPATCH_MAIN_AFTER_SEC(1.0, ^{
-        
-        [previewView animateToNextPage:^{
-            
-            DISPATCH_MAIN_AFTER_SEC(1.0 , ^{
-                
-                if ([previewWindow isKeyWindow])
-                    [[self window] makeKeyWindow];
-                [previewWindow orderOut:nil];
-                
-            });
-                
-        }];
-        
-    });
+    [previewView setPage:page completionHandler:displayPreview];
 }
 
 - (NSArray *)availableTransitions {

Modified: trunk/SKPresentationView.h
===================================================================
--- trunk/SKPresentationView.h  2025-05-11 15:41:28 UTC (rev 15186)
+++ trunk/SKPresentationView.h  2025-05-11 21:07:43 UTC (rev 15187)
@@ -58,6 +58,7 @@
 - (void)goToNextPage:(nullable id)sender;
 - (void)goToPreviousPage:(nullable id)sender;
 
+- (void)setPage:(PDFPage *)page completionHandler:(void (^ 
_Nullable)(void))completionHandler;
 - (void)animateToNextPage:(void (^)(void))completionHandler;
 
 @end

Modified: trunk/SKPresentationView.m
===================================================================
--- trunk/SKPresentationView.m  2025-05-11 15:41:28 UTC (rev 15186)
+++ trunk/SKPresentationView.m  2025-05-11 21:07:43 UTC (rev 15187)
@@ -141,7 +141,7 @@
         [super observeValueForKeyPath:keyPath ofObject:object change:change 
context:context];
 }
 
-#pragma mark Accessors
+#pragma mark Transitions
 
 - (void)setPage:(PDFPage *)newPage completionHandler:(void 
(^)(void))completionHandler {
     page = newPage;
@@ -149,15 +149,6 @@
     [[NSNotificationCenter defaultCenter] 
postNotificationName:SKPresentationViewPageChangedNotification object:self];
 }
 
-- (void)setPage:(PDFPage *)newPage {
-    if (newPage != page)
-        [self setPage:newPage completionHandler:nil];
-}
-
-- (BOOL)autoScales { return YES; }
-
-#pragma mark Action
-
 - (NSRect)pageRect:(PDFPage *)aPage {
     NSRect bounds = [self bounds];
     NSRect pageRect = [aPage boundsForBox:kPDFDisplayBoxCropBox];
@@ -202,6 +193,17 @@
     }
 }
 
+#pragma mark Accessors
+
+- (void)setPage:(PDFPage *)newPage {
+    if (newPage != page)
+        [self setPage:newPage completionHandler:nil];
+}
+
+- (BOOL)autoScales { return YES; }
+
+#pragma mark Action
+
 - (void)goToNextPage:(id)sender {
     PDFDocument *pdfDoc = [page document];
     NSUInteger idx = [page pageIndex];

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