Revision: 2580
          http://skim-app.svn.sourceforge.net/skim-app/?rev=2580&view=rev
Author:   hofman
Date:     2007-07-28 11:18:15 -0700 (Sat, 28 Jul 2007)

Log Message:
-----------
Show hover window on outline view and find results table. 

Modified Paths:
--------------
    trunk/Dutch.lproj/MainWindow.nib/classes.nib
    trunk/Dutch.lproj/MainWindow.nib/info.nib
    trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
    trunk/English.lproj/MainWindow.nib/classes.nib
    trunk/English.lproj/MainWindow.nib/info.nib
    trunk/English.lproj/MainWindow.nib/keyedobjects.nib
    trunk/French.lproj/MainWindow.nib/classes.nib
    trunk/French.lproj/MainWindow.nib/info.nib
    trunk/French.lproj/MainWindow.nib/keyedobjects.nib
    trunk/Italian.lproj/MainWindow.nib/classes.nib
    trunk/Italian.lproj/MainWindow.nib/info.nib
    trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
    trunk/PDFSelection_SKExtensions.h
    trunk/PDFSelection_SKExtensions.m
    trunk/SKMainWindowController.m
    trunk/SKOutlineView.h
    trunk/SKOutlineView.m
    trunk/SKSideWindow.m
    trunk/Skim.xcodeproj/project.pbxproj

Added Paths:
-----------
    trunk/SKFindTableView.h
    trunk/SKFindTableView.m

Modified: trunk/Dutch.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/classes.nib        2007-07-28 16:50:23 UTC 
(rev 2579)
+++ trunk/Dutch.lproj/MainWindow.nib/classes.nib        2007-07-28 18:18:15 UTC 
(rev 2580)
@@ -37,6 +37,7 @@
             SUPERCLASS = NSTextFieldCell; 
         }, 
         {CLASS = SKColorSwatch; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, 
+        {CLASS = SKFindTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; 
}, 
         {CLASS = SKFullScreenWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; 
}, 
         {CLASS = SKMainWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, 
         {

Modified: trunk/Dutch.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/info.nib   2007-07-28 16:50:23 UTC (rev 
2579)
+++ trunk/Dutch.lproj/MainWindow.nib/info.nib   2007-07-28 18:18:15 UTC (rev 
2580)
@@ -31,10 +31,11 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
-               <integer>5</integer>
                <integer>168</integer>
+               <integer>224</integer>
                <integer>256</integer>
                <integer>511</integer>
+               <integer>5</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/English.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/classes.nib      2007-07-28 16:50:23 UTC 
(rev 2579)
+++ trunk/English.lproj/MainWindow.nib/classes.nib      2007-07-28 18:18:15 UTC 
(rev 2580)
@@ -37,6 +37,7 @@
             SUPERCLASS = NSTextFieldCell; 
         }, 
         {CLASS = SKColorSwatch; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, 
+        {CLASS = SKFindTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; 
}, 
         {CLASS = SKFullScreenWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; 
}, 
         {CLASS = SKMainWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, 
         {

Modified: trunk/English.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/info.nib 2007-07-28 16:50:23 UTC (rev 
2579)
+++ trunk/English.lproj/MainWindow.nib/info.nib 2007-07-28 18:18:15 UTC (rev 
2580)
@@ -32,19 +32,19 @@
        <key>IBOpenObjects</key>
        <array>
                <integer>502</integer>
+               <integer>511</integer>
+               <integer>224</integer>
+               <integer>585</integer>
                <integer>208</integer>
+               <integer>539</integer>
                <integer>5</integer>
-               <integer>539</integer>
-               <integer>314</integer>
-               <integer>224</integer>
+               <integer>687</integer>
+               <integer>168</integer>
+               <integer>256</integer>
                <integer>694</integer>
-               <integer>256</integer>
-               <integer>585</integer>
-               <integer>511</integer>
                <integer>633</integer>
-               <integer>168</integer>
                <integer>553</integer>
-               <integer>687</integer>
+               <integer>314</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/English.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/French.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/classes.nib       2007-07-28 16:50:23 UTC 
(rev 2579)
+++ trunk/French.lproj/MainWindow.nib/classes.nib       2007-07-28 18:18:15 UTC 
(rev 2580)
@@ -37,6 +37,7 @@
             SUPERCLASS = NSTextFieldCell; 
         }, 
         {CLASS = SKColorSwatch; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, 
+        {CLASS = SKFindTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; 
}, 
         {CLASS = SKFullScreenWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; 
}, 
         {CLASS = SKMainWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, 
         {

Modified: trunk/French.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/info.nib  2007-07-28 16:50:23 UTC (rev 
2579)
+++ trunk/French.lproj/MainWindow.nib/info.nib  2007-07-28 18:18:15 UTC (rev 
2580)
@@ -9,7 +9,7 @@
                <key>168</key>
                <string>601 521 237 239 0 0 1440 938 </string>
                <key>224</key>
-               <string>690 564 220 442 0 0 1600 1178 </string>
+               <string>610 420 220 442 0 0 1440 938 </string>
                <key>256</key>
                <string>610 420 220 442 0 0 1440 938 </string>
                <key>314</key>
@@ -31,15 +31,16 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
+               <integer>256</integer>
+               <integer>314</integer>
                <integer>5</integer>
-               <integer>502</integer>
-               <integer>168</integer>
                <integer>633</integer>
+               <integer>661</integer>
                <integer>511</integer>
+               <integer>168</integer>
+               <integer>502</integer>
                <integer>660</integer>
-               <integer>314</integer>
-               <integer>661</integer>
-               <integer>256</integer>
+               <integer>224</integer>
        </array>
        <key>IBSystem Version</key>
        <string>8R218</string>

Modified: trunk/French.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/Italian.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/classes.nib      2007-07-28 16:50:23 UTC 
(rev 2579)
+++ trunk/Italian.lproj/MainWindow.nib/classes.nib      2007-07-28 18:18:15 UTC 
(rev 2580)
@@ -37,6 +37,7 @@
             SUPERCLASS = NSTextFieldCell; 
         }, 
         {CLASS = SKColorSwatch; LANGUAGE = ObjC; SUPERCLASS = NSControl; }, 
+        {CLASS = SKFindTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; 
}, 
         {CLASS = SKFullScreenWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; 
}, 
         {CLASS = SKMainWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, 
         {

Modified: trunk/Italian.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/info.nib 2007-07-28 16:50:23 UTC (rev 
2579)
+++ trunk/Italian.lproj/MainWindow.nib/info.nib 2007-07-28 18:18:15 UTC (rev 
2580)
@@ -31,18 +31,18 @@
        </array>
        <key>IBOpenObjects</key>
        <array>
-               <integer>5</integer>
+               <integer>256</integer>
+               <integer>314</integer>
+               <integer>224</integer>
+               <integer>208</integer>
+               <integer>628</integer>
                <integer>677</integer>
-               <integer>256</integer>
-               <integer>553</integer>
                <integer>502</integer>
-               <integer>224</integer>
-               <integer>539</integer>
+               <integer>5</integer>
                <integer>676</integer>
-               <integer>314</integer>
-               <integer>628</integer>
-               <integer>208</integer>
+               <integer>553</integer>
                <integer>511</integer>
+               <integer>539</integer>
                <integer>168</integer>
        </array>
        <key>IBSystem Version</key>

Modified: trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)

Modified: trunk/PDFSelection_SKExtensions.h
===================================================================
--- trunk/PDFSelection_SKExtensions.h   2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/PDFSelection_SKExtensions.h   2007-07-28 18:18:15 UTC (rev 2580)
@@ -45,6 +45,8 @@
 - (NSString *)firstPageLabel;
 - (NSAttributedString *)contextString;
 
+- (PDFDestination *)destination;
+
 - (int)safeNumberOfRangesOnPage:(PDFPage *)page;
 - (NSRange)safeRangeAtIndex:(int)index onPage:(PDFPage *)page;
 

Modified: trunk/PDFSelection_SKExtensions.m
===================================================================
--- trunk/PDFSelection_SKExtensions.m   2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/PDFSelection_SKExtensions.m   2007-07-28 18:18:15 UTC (rev 2580)
@@ -100,6 +100,17 @@
        return [attributedSample autorelease];
 }
 
+- (PDFDestination *)destination {
+    PDFDestination *destination = nil;
+    NSArray *pages = [self pages];
+    if ([pages count]) {
+        PDFPage *page = [pages objectAtIndex:0];
+        NSRect bounds = [self boundsForPage:page];
+        destination = [[[PDFDestination alloc] initWithPage:page 
atPoint:NSMakePoint(NSMinX(bounds), NSMaxY(bounds))] autorelease];
+    }
+    return destination;
+}
+
 - (int)safeNumberOfRangesOnPage:(PDFPage *)page {
     if ([self respondsToSelector:@selector(numberOfRangesOnPage:)])
         return [self numberOfRangesOnPage:page];

Added: trunk/SKFindTableView.h
===================================================================
--- trunk/SKFindTableView.h                             (rev 0)
+++ trunk/SKFindTableView.h     2007-07-28 18:18:15 UTC (rev 2580)
@@ -0,0 +1,23 @@
+//
+//  SKFindTableView.h
+//  Skim
+//
+//  Created by Christiaan Hofman on 28/7/07.
+//  Copyright 2007 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Carbon/Carbon.h>
+
+
[EMAIL PROTECTED] SKFindTableView : NSTableView {
+    CFMutableArrayRef trackingRects;
+}
[EMAIL PROTECTED]
+
+
[EMAIL PROTECTED] NSObject (SKFindTableViewDelegate)
+- (BOOL)tableView:(NSTableView *)aTableView 
shouldTrackTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
+- (void)tableView:(NSTableView *)aTableView 
mouseEnteredTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
+- (void)tableView:(NSTableView *)aTableView 
mouseExitedTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;
[EMAIL PROTECTED]

Added: trunk/SKFindTableView.m
===================================================================
--- trunk/SKFindTableView.m                             (rev 0)
+++ trunk/SKFindTableView.m     2007-07-28 18:18:15 UTC (rev 2580)
@@ -0,0 +1,111 @@
+//
+//  SKFindTableView.m
+//  Skim
+//
+//  Created by Christiaan Hofman on 28/7/07.
+//  Copyright 2007 __MyCompanyName__. All rights reserved.
+//
+
+#import "SKFindTableView.h"
+
+
[EMAIL PROTECTED] SKFindTableView
+
+- (void)dealloc{
+    if (trackingRects != NULL)
+        CFRelease(trackingRects);
+    [super dealloc];
+}
+
+- (void)removeTrackingRects {
+    if ([[self delegate] 
respondsToSelector:@selector(tableView:shouldTrackTableColumn:row:)] == NO)
+        return;
+    
+    CFIndex idx = CFArrayGetCount(trackingRects);
+    while(idx--)
+        [self 
removeTrackingRect:(NSTrackingRectTag)CFArrayGetValueAtIndex(trackingRects, 
idx)];
+    CFArrayRemoveAllValues(trackingRects);
+}
+
+- (void)rebuildTrackingRects {
+    if ([[self delegate] 
respondsToSelector:@selector(tableView:shouldTrackTableColumn:row:)] == NO)
+        return;
+    
+    if (trackingRects == nil)
+        trackingRects = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
+    else
+        [self removeTrackingRects];
+    
+    NSRange rowRange = [self rowsInRect:[self visibleRect]];
+    NSRange columnRange = [self columnsInRect:[self visibleRect]];
+    unsigned int row, column;
+       NSTableColumn *tableColumn;
+    NSTrackingRectTag tag;
+    BOOL assumeInside = [[self delegate] 
respondsToSelector:@selector(tableView:mouseEnteredTableColumn:row:)];
+    
+    for (column = columnRange.location; column < NSMaxRange(columnRange); 
column++) {
+        tableColumn = [[self tableColumns] objectAtIndex:column];
+               for (row = rowRange.location; row < NSMaxRange(rowRange); 
row++) {
+            if ([[self delegate] tableView:self 
shouldTrackTableColumn:tableColumn row:row]) {
+                tag = [self addTrackingRect:[self frameOfCellAtColumn:column 
row:row] owner:self userData:NULL assumeInside:assumeInside];
+                CFArrayAppendValue(trackingRects, (const void *)tag);
+            }
+        }
+    }
+}
+
+- (void)reloadData{
+    [super reloadData];
+       [self rebuildTrackingRects];
+}
+
+- (void)resetCursorRects {
+       [super resetCursorRects];
+    [self rebuildTrackingRects];
+}
+
+- (void)setDataSource:(id)anObject {
+       [super setDataSource:anObject];
+       [self rebuildTrackingRects];
+}
+
+- (void)noteNumberOfRowsChanged {
+       [super noteNumberOfRowsChanged];
+       [self rebuildTrackingRects];
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
+    if ([self window])
+        [self removeTrackingRects];
+}
+
+- (void)viewDidMoveToWindow {
+       if ([self window])
+        [self rebuildTrackingRects];
+}
+
+- (void)mouseEntered:(NSEvent *)theEvent{
+    if ([[self delegate] 
respondsToSelector:@selector(tableView:mouseEnteredTableColumn:row:)]) {
+        NSPoint point = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+               int column = [self columnAtPoint:point];
+               int row = [self rowAtPoint:point];
+        if (column != -1 && row != -1) {
+            NSTableColumn *tableColumn = [[self tableColumns] 
objectAtIndex:column];
+            [[self delegate] tableView:self 
mouseEnteredTableColumn:tableColumn row:row];
+        }
+       }
+}
+
+- (void)mouseExited:(NSEvent *)theEvent{
+    if ([[self delegate] 
respondsToSelector:@selector(tableView:mouseExitedTableColumn:row:)]) {
+        NSPoint point = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+               int column = [self columnAtPoint:point];
+               int row = [self rowAtPoint:point];
+        if (column != -1 && row != -1) {
+            NSTableColumn *tableColumn = [[self tableColumns] 
objectAtIndex:column];
+            [[self delegate] tableView:self mouseExitedTableColumn:tableColumn 
row:row];
+        }
+       }
+}
+
[EMAIL PROTECTED]

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/SKMainWindowController.m      2007-07-28 18:18:15 UTC (rev 2580)
@@ -63,6 +63,7 @@
 #import "SKOutlineView.h"
 #import "SKNoteOutlineView.h"
 #import "SKThumbnailTableView.h"
+#import "SKFindTableView.h"
 #import "BDSKImagePopUpButton.h"
 #import "NSWindowController_SKExtensions.h"
 #import "SKPDFHoverWindow.h"
@@ -2237,6 +2238,9 @@
     if ([newView window] == nil) {
         BOOL wasFirstResponder = [[[oldView window] firstResponder] 
isDescendantOf:oldView];
         
+        if ([oldView isEqual:tocView] || [oldView isEqual:findView])
+            [[SKPDFHoverWindow sharedHoverWindow] orderOut:self];
+        
         [newView setFrame:[oldView frame]];
         [newView setHidden:animate];
         [[oldView superview] addSubview:newView];
@@ -3152,15 +3156,6 @@
     }
 }
 
-- (NSString *)outlineView:(NSOutlineView *)ov toolTipForCell:(NSCell *)cell 
rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)tc item:(id)item 
mouseLocation:(NSPoint)mouseLocation{
-    if ([ov isEqual:outlineView]) {
-        return [(PDFOutline *)item label];
-    } else if ([ov isEqual:noteOutlineView]) {
-        return [item type] ? [item contents] : [[(SKNoteText *)item contents] 
string];
-    }
-    return nil;
-}
-
 - (void)outlineViewNoteTypesDidChange:(NSOutlineView *)ov {
     if ([ov isEqual:noteOutlineView]) {
         [self updateNoteFilterPredicate];
@@ -3218,6 +3213,20 @@
     return nil;
 }
 
+- (BOOL)outlineView:(NSOutlineView *)anOutlineView 
shouldTrackTableColumn:(NSTableColumn *)aTableColumn item:(id)item {
+    return YES;
+}
+
+- (void)outlineView:(NSOutlineView *)anOutlineView 
mouseEnteredTableColumn:(NSTableColumn *)aTableColumn item:(id)item {
+    PDFAnnotationLink *link = [[[PDFAnnotationLink alloc] 
initWithBounds:NSZeroRect] autorelease];
+    [link setDestination:[item destination]];
+    [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:link 
atPoint:NSZeroPoint];
+}
+
+- (void)outlineView:(NSOutlineView *)anOutlineView 
mouseExitedTableColumn:(NSTableColumn *)aTableColumn item:(id)item {
+    [[SKPDFHoverWindow sharedHoverWindow] hide];
+}
+
 #pragma mark NSTableView delegate protocol
 
 - (void)tableViewSelectionDidChange:(NSNotification *)aNotification {
@@ -3341,6 +3350,30 @@
     return nil;
 }
 
+- (BOOL)tableView:(NSTableView *)tv shouldTrackTableColumn:(NSTableColumn 
*)aTableColumn row:(int)row {
+    if ([tv isEqual:findTableView]) {
+        return YES;
+    }
+    return NO;
+}
+
+- (void)tableView:(NSTableView *)tv mouseEnteredTableColumn:(NSTableColumn 
*)aTableColumn row:(int)row {
+    if ([tv isEqual:findTableView]) {
+        PDFAnnotationLink *link = [[[PDFAnnotationLink alloc] 
initWithBounds:NSZeroRect] autorelease];
+        PDFSelection *selection = [[[findArrayController arrangedObjects] 
objectAtIndex:row] copy];
+        [selection extendSelectionAtStart:10];
+        [link setDestination:[selection destination]];
+        [selection release];
+        [[SKPDFHoverWindow sharedHoverWindow] showForAnnotation:link 
atPoint:NSZeroPoint];
+    }
+}
+
+- (void)tableView:(NSTableView *)tv mouseExitedTableColumn:(NSTableColumn 
*)aTableColumn row:(int)row {
+    if ([tv isEqual:findTableView]) {
+        [[SKPDFHoverWindow sharedHoverWindow] hide];
+    }
+}
+
 #pragma mark Outline
 
 - (int)outlineRowForPageIndex:(unsigned int)pageIndex {

Modified: trunk/SKOutlineView.h
===================================================================
--- trunk/SKOutlineView.h       2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/SKOutlineView.h       2007-07-28 18:18:15 UTC (rev 2580)
@@ -37,12 +37,18 @@
  */
 
 #import <Cocoa/Cocoa.h>
+#import <Carbon/Carbon.h>
 
 
[EMAIL PROTECTED] SKOutlineView : NSOutlineView
[EMAIL PROTECTED] SKOutlineView : NSOutlineView {
+    CFMutableArrayRef trackingRects;
+}
 @end
 
 
 @interface NSObject (SKOutlineViewDelegate)
 - (NSArray *)outlineViewHighlightedRows:(NSOutlineView *)anOutlineView;
+- (BOOL)outlineView:(NSOutlineView *)anOutlineView 
shouldTrackTableColumn:(NSTableColumn *)aTableColumn item:(id)item;
+- (void)outlineView:(NSOutlineView *)anOutlineView 
mouseEnteredTableColumn:(NSTableColumn *)aTableColumn item:(id)item;
+- (void)outlineView:(NSOutlineView *)anOutlineView 
mouseExitedTableColumn:(NSTableColumn *)aTableColumn item:(id)item;
 @end

Modified: trunk/SKOutlineView.m
===================================================================
--- trunk/SKOutlineView.m       2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/SKOutlineView.m       2007-07-28 18:18:15 UTC (rev 2580)
@@ -41,6 +41,12 @@
 
 @implementation SKOutlineView
 
+- (void)dealloc {
+    if (trackingRects != NULL)
+        CFRelease(trackingRects);
+    [super dealloc];
+}
+
 - (void)highlightSelectionInClipRect:(NSRect)clipRect {
     if ([[self delegate] 
respondsToSelector:@selector(outlineViewHighlightedRows:)]) {
         NSMutableIndexSet *rowIndexes = [[[self selectedRowIndexes] 
mutableCopy] autorelease];
@@ -65,4 +71,94 @@
     [super highlightSelectionInClipRect:clipRect]; 
 }
 
+- (void)removeTrackingRects {
+    if ([[self delegate] 
respondsToSelector:@selector(outlineView:shouldTrackTableColumn:item:)] == NO)
+        return;
+    
+    CFIndex idx = CFArrayGetCount(trackingRects);
+    while(idx--)
+        [self 
removeTrackingRect:(NSTrackingRectTag)CFArrayGetValueAtIndex(trackingRects, 
idx)];
+    CFArrayRemoveAllValues(trackingRects);
+}
+
+- (void)rebuildTrackingRects {
+    if ([[self delegate] 
respondsToSelector:@selector(outlineView:shouldTrackTableColumn:item:)] == NO)
+        return;
+    
+    if (trackingRects == nil)
+        trackingRects = CFArrayCreateMutable(kCFAllocatorDefault, 0, NULL);
+    else
+        [self removeTrackingRects];
+    
+    NSRange rowRange = [self rowsInRect:[self visibleRect]];
+    NSRange columnRange = [self columnsInRect:[self visibleRect]];
+    unsigned int row, column;
+       NSTableColumn *tableColumn;
+    NSTrackingRectTag tag;
+    
+    for (column = columnRange.location; column < NSMaxRange(columnRange); 
column++) {
+        tableColumn = [[self tableColumns] objectAtIndex:column];
+               for (row = rowRange.location; row < NSMaxRange(rowRange); 
row++) {
+            if ([[self delegate] outlineView:self 
shouldTrackTableColumn:tableColumn item:[self itemAtRow:row]]) {
+                tag = [self addTrackingRect:[self frameOfCellAtColumn:column 
row:row] owner:self userData:NULL assumeInside:NO];
+                CFArrayAppendValue(trackingRects, (const void *)tag);
+            }
+        }
+    }
+}
+
+- (void)reloadData{
+    [super reloadData];
+       [self rebuildTrackingRects];
+}
+
+- (void)resetCursorRects {
+       [super resetCursorRects];
+    [self rebuildTrackingRects];
+}
+
+- (void)setDataSource:(id)anObject {
+       [super setDataSource:anObject];
+       [self rebuildTrackingRects];
+}
+
+- (void)noteNumberOfRowsChanged {
+       [super noteNumberOfRowsChanged];
+       [self rebuildTrackingRects];
+}
+
+- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
+    if ([self window])
+        [self removeTrackingRects];
+}
+
+- (void)viewDidMoveToWindow {
+       if ([self window])
+        [self rebuildTrackingRects];
+}
+
+- (void)mouseEntered:(NSEvent *)theEvent{
+    if ([[self delegate] 
respondsToSelector:@selector(outlineView:mouseEnteredTableColumn:item:)]) {
+        NSPoint point = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+               int column = [self columnAtPoint:point];
+               int row = [self rowAtPoint:point];
+        if (column != -1 && row != -1) {
+            NSTableColumn *tableColumn = [[self tableColumns] 
objectAtIndex:column];
+            [[self delegate] outlineView:self 
mouseEnteredTableColumn:tableColumn item:[self itemAtRow:row]];
+        }
+       }
+}
+
+- (void)mouseExited:(NSEvent *)theEvent{
+    if ([[self delegate] 
respondsToSelector:@selector(outlineView:mouseExitedTableColumn:item:)]) {
+        NSPoint point = [self convertPoint:[theEvent locationInWindow] 
fromView:nil];
+               int column = [self columnAtPoint:point];
+               int row = [self rowAtPoint:point];
+        if (column != -1 && row != -1) {
+            NSTableColumn *tableColumn = [[self tableColumns] 
objectAtIndex:column];
+            [[self delegate] outlineView:self 
mouseExitedTableColumn:tableColumn item:[self itemAtRow:row]];
+        }
+       }
+}
+
 @end

Modified: trunk/SKSideWindow.m
===================================================================
--- trunk/SKSideWindow.m        2007-07-28 16:50:23 UTC (rev 2579)
+++ trunk/SKSideWindow.m        2007-07-28 18:18:15 UTC (rev 2580)
@@ -39,6 +39,7 @@
 #import "SKSideWindow.h"
 #import "SKMainWindowController.h"
 #import "NSBezierPath_BDSKExtensions.h"
+#import "SKPDFHoverWindow.h"
 
 #define DEFAULT_WINDOW_WIDTH    300.0
 #define WINDOW_INSET            1.0
@@ -171,6 +172,12 @@
     [(SKSideWindowContentView *)[self contentView] setEnabled:flag];
 }
 
+- (void)sendEvent:(NSEvent *)theEvent {
+    if ([theEvent type] == NSLeftMouseDown || [theEvent type] == 
NSRightMouseDown)
+        [[SKPDFHoverWindow sharedHoverWindow] orderOut:nil];
+    [super sendEvent:theEvent];
+}
+
 - (void)keyDown:(NSEvent *)theEvent {
     NSString *characters = [theEvent charactersIgnoringModifiers];
     unichar ch = [characters length] > 0 ? [characters characterAtIndex:0] : 0;

Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj        2007-07-28 16:50:23 UTC (rev 
2579)
+++ trunk/Skim.xcodeproj/project.pbxproj        2007-07-28 18:18:15 UTC (rev 
2580)
@@ -159,6 +159,8 @@
                CEB735A20C4A8CD6000350F9 /* TransitionShading.tiff in Resources 
*/ = {isa = PBXBuildFile; fileRef = CEB735A10C4A8CD6000350F9 /* 
TransitionShading.tiff */; };
                CECDC4FF0C5966A80026AAEC /* NSImage_BDSKExtensions.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CECDC4FD0C5966A80026AAEC /* 
NSImage_BDSKExtensions.m */; };
                CECDD2990C5B68580026AAEC /* SKCenteredTextFieldCell.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CECDD2970C5B68580026AAEC /* 
SKCenteredTextFieldCell.m */; };
+               CECDDBAD0C5BB9600026AAEC /* SKFindTableView.h in CopyFiles */ = 
{isa = PBXBuildFile; fileRef = CECDDBAB0C5BB95F0026AAEC /* SKFindTableView.h 
*/; };
+               CECDDBAE0C5BB9600026AAEC /* SKFindTableView.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m 
*/; };
                CEE106150BCBB72C00BF2D3E /* SKNotesDocument.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m 
*/; };
                CEE1065E0BCBBE1300BF2D3E /* NotesDocument.nib in Resources */ = 
{isa = PBXBuildFile; fileRef = CEE106580BCBBE1200BF2D3E /* NotesDocument.nib 
*/; };
                CEE229390BFB7CE9002B746B /* ReleaseNotes.rtf in Resources */ = 
{isa = PBXBuildFile; fileRef = CE54AA8E0BBC037400008750 /* ReleaseNotes.rtf */; 
};
@@ -257,6 +259,7 @@
                        dstSubfolderSpec = 10;
                        files = (
                                CE2BD8450BD4135600A5F4DB /* Sparkle.framework 
in CopyFiles */,
+                               CECDDBAD0C5BB9600026AAEC /* SKFindTableView.h 
in CopyFiles */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -541,6 +544,8 @@
                CECDC4FD0C5966A80026AAEC /* NSImage_BDSKExtensions.m */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; 
path = NSImage_BDSKExtensions.m; sourceTree = "<group>"; };
                CECDD2960C5B68580026AAEC /* SKCenteredTextFieldCell.h */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path 
= SKCenteredTextFieldCell.h; sourceTree = "<group>"; };
                CECDD2970C5B68580026AAEC /* SKCenteredTextFieldCell.m */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; 
path = SKCenteredTextFieldCell.m; sourceTree = "<group>"; };
+               CECDDBAB0C5BB95F0026AAEC /* SKFindTableView.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SKFindTableView.h; sourceTree = "<group>"; };
+               CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKFindTableView.m; sourceTree = "<group>"; };
                CEE106130BCBB72C00BF2D3E /* SKNotesDocument.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
SKNotesDocument.h; sourceTree = "<group>"; };
                CEE106140BCBB72C00BF2D3E /* SKNotesDocument.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= SKNotesDocument.m; sourceTree = "<group>"; };
                CEE106590BCBBE1200BF2D3E /* English */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = 
English.lproj/NotesDocument.nib; sourceTree = "<group>"; };
@@ -863,6 +868,8 @@
                        children = (
                                CE4D97FA0C3C2BFF002C20CB /* SKColorSwatch.h */,
                                CE4D97FB0C3C2BFF002C20CB /* SKColorSwatch.m */,
+                               CECDDBAB0C5BB95F0026AAEC /* SKFindTableView.h 
*/,
+                               CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m 
*/,
                                CE4BC12D0C357A0300C2AF03 /* SKLineWell.h */,
                                CE4BC12E0C357A0300C2AF03 /* SKLineWell.m */,
                                CEA575CC0B9206E60003D2E7 /* SKNoteOutlineView.h 
*/,
@@ -1373,6 +1380,7 @@
                                CE1ADEBF0C4C341100071840 /* 
SKTransitionController.m in Sources */,
                                CECDC4FF0C5966A80026AAEC /* 
NSImage_BDSKExtensions.m in Sources */,
                                CECDD2990C5B68580026AAEC /* 
SKCenteredTextFieldCell.m in Sources */,
+                               CECDDBAE0C5BB9600026AAEC /* SKFindTableView.m 
in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };


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
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to