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