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

Reply via email to