Revision: 15445 http://sourceforge.net/p/skim-app/code/15445 Author: hofman Date: 2025-06-11 22:24:10 +0000 (Wed, 11 Jun 2025) Log Message: ----------- coalesce snapshpt updates
Modified Paths: -------------- trunk/NSObject_SKExtensions.h trunk/NSObject_SKExtensions.m trunk/SKMainWindowController.h trunk/SKMainWindowController.m Modified: trunk/NSObject_SKExtensions.h =================================================================== --- trunk/NSObject_SKExtensions.h 2025-06-11 16:41:12 UTC (rev 15444) +++ trunk/NSObject_SKExtensions.h 2025-06-11 22:24:10 UTC (rev 15445) @@ -44,6 +44,7 @@ @interface NSObject (SKExtensions) - (void)performSelectorOnce:(SEL)aSelector afterDelay:(NSTimeInterval)delay; +- (void)performSelectorOnce:(SEL)aSelector withObject:(id)anObject afterDelay:(NSTimeInterval)delay; - (NSUInteger)countOfTexLines; - (NSNumber *)objectInTexLinesAtIndex:(NSUInteger)idx; Modified: trunk/NSObject_SKExtensions.m =================================================================== --- trunk/NSObject_SKExtensions.m 2025-06-11 16:41:12 UTC (rev 15444) +++ trunk/NSObject_SKExtensions.m 2025-06-11 22:24:10 UTC (rev 15445) @@ -48,6 +48,11 @@ [self performSelector:aSelector withObject:nil afterDelay:delay]; } +- (void)performSelectorOnce:(SEL)aSelector withObject:(id)anObject afterDelay:(NSTimeInterval)delay { + [[self class] cancelPreviousPerformRequestsWithTarget:self selector:aSelector object:anObject]; + [self performSelector:aSelector withObject:anObject afterDelay:delay]; +} + - (NSUInteger)countOfTexLines { return INT_MAX; } Modified: trunk/SKMainWindowController.h =================================================================== --- trunk/SKMainWindowController.h 2025-06-11 16:41:12 UTC (rev 15444) +++ trunk/SKMainWindowController.h 2025-06-11 22:24:10 UTC (rev 15445) @@ -314,6 +314,7 @@ - (void)resetSnapshotSizeIfNeeded; - (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)dirstySnapshot lowPriority:(BOOL)lowPriority; +- (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)dirstySnapshot; - (void)allSnapshotsNeedUpdate; - (void)setPdfDocument:(nullable PDFDocument *)pdfDocument addAnnotationsWithProperties:(nullable NSArray<NSDictionary<NSString *, id> *> *)noteDicts; Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2025-06-11 16:41:12 UTC (rev 15444) +++ trunk/SKMainWindowController.m 2025-06-11 22:24:10 UTC (rev 15445) @@ -1019,7 +1019,7 @@ [self updateThumbnailsAtPageIndexes:pageIndexes]; for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageInIndexesVisible:pageIndexes]) - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc afterDelay:0.0]; } [pdfView resetPDFToolTipRects]; } @@ -2187,7 +2187,7 @@ NSUInteger idx = [page pageIndex]; for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageVisible:page]) { - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self snapshotNeedsUpdate:wc]; [[wc pdfView] setNeedsDisplay:YES]; } } @@ -2257,7 +2257,7 @@ [self updateThumbnailAtPageIndex:[page pageIndex]]; for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageVisible:page]) - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc afterDelay:0.0]; } } @@ -2304,7 +2304,7 @@ [self updateThumbnailAtPageIndex:[page pageIndex]]; for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageVisible:page]) - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc afterDelay:0.0]; } } @@ -2326,7 +2326,7 @@ [self updateThumbnailAtPageIndex:[newPage pageIndex]]; for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageVisible:oldPage] || [wc isPageVisible:newPage]) - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc afterDelay:0.0]; } [secondaryPdfView removedAnnotation:annotation onPage:oldPage]; @@ -2449,7 +2449,7 @@ - (void)snapshotControllerDidChange:(SKSnapshotWindowController *)controller { if (controller != presentationPreview) { - [self snapshotNeedsUpdate:controller lowPriority:NO]; + [self snapshotNeedsUpdate:controller]; [rightSideController.snapshotArrayController rearrangeObjects]; [rightSideController.snapshotTableView reloadData]; [[self document] setRecentInfoNeedsUpdate:YES]; @@ -2761,7 +2761,7 @@ for (SKSnapshotWindowController *wc in snapshots) { if ([wc isPageVisible:page]) { - [self snapshotNeedsUpdate:wc lowPriority:NO]; + [self performSelectorOnce:@selector(snapshotNeedsUpdate:) withObject:wc afterDelay:0.0]; [[wc pdfView] updatedAnnotation:note]; } } @@ -3151,9 +3151,13 @@ }); } +- (void)snapshotNeedsUpdate:(SKSnapshotWindowController *)controller { + [self snapshotNeedsUpdate:controller lowPriority:NO]; +} + - (void)allSnapshotsNeedUpdate { for (SKSnapshotWindowController *controller in [self snapshots]) - [self snapshotNeedsUpdate:controller lowPriority:NO]; + [self snapshotNeedsUpdate:controller]; } 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