Revision: 2574 http://skim-app.svn.sourceforge.net/skim-app/?rev=2574&view=rev Author: hofman Date: 2007-07-27 09:46:32 -0700 (Fri, 27 Jul 2007)
Log Message: ----------- Add a temporary annotation for the pdfsync location. make sure the pref flag is checked before showing a temporary annotation. Modified Paths: -------------- trunk/SKDocument.m trunk/SKMainWindowController.h trunk/SKMainWindowController.m Modified: trunk/SKDocument.m =================================================================== --- trunk/SKDocument.m 2007-07-27 15:14:29 UTC (rev 2573) +++ trunk/SKDocument.m 2007-07-27 16:46:32 UTC (rev 2574) @@ -948,7 +948,9 @@ } - (void)synchronizer:(SKPDFSynchronizer *)synchronizer foundLocation:(NSPoint)point atPageIndex:(unsigned int)pageIndex { - [[self pdfView] displayLineAtPoint:point inPageAtIndex:pageIndex]; + if ([[NSUserDefaults standardUserDefaults] boolForKey:SKShouldHighlightSearchResultsKey]) + [[self mainWindowController] addTemporaryAnnotationForPoint:point onPage:[[self pdfDocument] pageAtIndex:pageIndex]]; + [[self pdfView] displayLineAtPoint:point inPageAtIndex:pageIndex]; } Modified: trunk/SKMainWindowController.h =================================================================== --- trunk/SKMainWindowController.h 2007-07-27 15:14:29 UTC (rev 2573) +++ trunk/SKMainWindowController.h 2007-07-27 16:46:32 UTC (rev 2574) @@ -119,7 +119,7 @@ NSMutableArray *searchResults; BOOL findPanelFind; CFMutableSetRef temporaryAnnotations; - NSTimer *findTimer; + NSTimer *temporaryAnnotationTimer; IBOutlet NSArrayController *noteArrayController; IBOutlet SKNoteOutlineView *noteOutlineView; @@ -319,6 +319,7 @@ - (void)displaySnapshotView; - (void)removeTemporaryAnnotations; +- (void)addTemporaryAnnotationForPoint:(NSPoint)point onPage:(PDFPage *)page; - (PDFSelection *)findString:(NSString *)string fromSelection:(PDFSelection *)selection withOptions:(int)options; Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-07-27 15:14:29 UTC (rev 2573) +++ trunk/SKMainWindowController.m 2007-07-27 16:46:32 UTC (rev 2574) @@ -626,10 +626,10 @@ [snapshotTimer release]; snapshotTimer = nil; } - if (findTimer) { - [findTimer invalidate]; - [findTimer release]; - findTimer = nil; + if (temporaryAnnotationTimer) { + [temporaryAnnotationTimer invalidate]; + [temporaryAnnotationTimer release]; + temporaryAnnotationTimer = nil; } [ownerController setContent:nil]; @@ -2338,6 +2338,10 @@ } } +- (void)temporaryAnnotationTimerFired:(NSTimer *)timer { + [self removeTemporaryAnnotations]; +} + - (void)addAnnotationsForSelection:(PDFSelection *)sel { NSArray *pages = [sel pages]; int i, iMax = [pages count]; @@ -2365,6 +2369,21 @@ } } +- (void)addTemporaryAnnotationForPoint:(NSPoint)point onPage:(PDFPage *)page { + NSRect bounds = NSMakeRect(point.x - 2.0, point.y - 2.0, 4.0, 4.0); + SKPDFAnnotationTemporary *circle = [[SKPDFAnnotationTemporary alloc] initWithBounds:bounds]; + NSColor *color = [[NSUserDefaults standardUserDefaults] colorForKey:SKSearchHighlightColorKey]; + + [self removeTemporaryAnnotations]; + [circle setColor:color]; + [circle setInteriorColor:color]; + [page addAnnotation:circle]; + [pdfView setNeedsDisplayForAnnotation:circle]; + [circle release]; + CFSetAddValue(temporaryAnnotations, (void *)circle); + temporaryAnnotationTimer = [[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(temporaryAnnotationTimerFired:) userInfo:NULL repeats:NO] retain]; +} + static void removeTemporaryAnnotations(const void *annotation, void *context) { SKMainWindowController *wc = (SKMainWindowController *)context; @@ -2375,18 +2394,14 @@ } - (void)removeTemporaryAnnotations { - [findTimer invalidate]; - [findTimer release]; - findTimer = nil; + [temporaryAnnotationTimer invalidate]; + [temporaryAnnotationTimer release]; + temporaryAnnotationTimer = nil; // for long documents, this is much faster than iterating all pages and sending -isTemporaryAnnotation to each one CFSetApplyFunction(temporaryAnnotations, removeTemporaryAnnotations, self); CFSetRemoveAllValues(temporaryAnnotations); } -- (void)findTimerFired:(NSTimer *)timer { - [self removeTemporaryAnnotations]; -} - - (void)displaySearchResultsForString:(NSString *)string { if (NSWidth([leftSideContentBox frame]) <= 0.0) [self toggleLeftSidePane:self]; @@ -2435,9 +2450,11 @@ [pdfView setCurrentSelection:selection]; [pdfView scrollSelectionToVisible:self]; [findTableView deselectAll:self]; - [self removeTemporaryAnnotations]; - [self addAnnotationsForSelection:selection]; - findTimer = [[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(findTimerFired:) userInfo:NULL repeats:NO] retain]; + if ([[NSUserDefaults standardUserDefaults] boolForKey:SKShouldHighlightSearchResultsKey]) { + [self removeTemporaryAnnotations]; + [self addAnnotationsForSelection:selection]; + temporaryAnnotationTimer = [[NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(temporaryAnnotationTimerFired:) userInfo:NULL repeats:NO] retain]; + } } else { NSBeep(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Skim-app-commit mailing list Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit