Revision: 3312
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3312&view=rev
Author:   hofman
Date:     2007-12-05 08:35:55 -0800 (Wed, 05 Dec 2007)

Log Message:
-----------
Use built-in mouseover support in nsbutton to show custom tool tips in 
navigation window.

Modified Paths:
--------------
    trunk/SKNavigationWindow.h
    trunk/SKNavigationWindow.m

Modified: trunk/SKNavigationWindow.h
===================================================================
--- trunk/SKNavigationWindow.h  2007-12-05 12:57:16 UTC (rev 3311)
+++ trunk/SKNavigationWindow.h  2007-12-05 16:35:55 UTC (rev 3312)
@@ -56,9 +56,11 @@
 
 @interface SKNavigationToolTipWindow : NSWindow {
     SKNavigationToolTipView *toolTipView;
+    NSView *view;
 }
 + (id)sharedToolTipWindow;
-- (void)showToolTip:(NSString *)toolTip forView:(NSView *)view;
+- (void)showToolTip:(NSString *)toolTip forView:(NSView *)aView;
+- (NSView *)view;
 @end
 
 @interface SKNavigationToolTipView : NSView {

Modified: trunk/SKNavigationWindow.m
===================================================================
--- trunk/SKNavigationWindow.m  2007-12-05 12:57:16 UTC (rev 3311)
+++ trunk/SKNavigationWindow.m  2007-12-05 16:35:55 UTC (rev 3312)
@@ -75,16 +75,16 @@
         [button setTarget:controller];
         [button setAction:@selector(doGoToPreviousPage:)];
         [button setToolTip:NSLocalizedString(@"Previous", @"Tool tip 
message")];
+        [button setShowsBorderOnlyWhileMouseInside:YES];
         [[self contentView] addSubview:button];
-        [button addTrackingRect:NSInsetRect([button bounds], 3.0, 0.0) 
owner:button userData:nil assumeInside:NO];
         
         rect.origin.x = NSMaxX(rect);
         button = [[[SKNavigationNextButton alloc] initWithFrame:rect] 
autorelease];
         [button setTarget:controller];
         [button setAction:@selector(doGoToNextPage:)];
         [button setToolTip:NSLocalizedString(@"Next", @"Tool tip message")];
+        [button setShowsBorderOnlyWhileMouseInside:YES];
         [[self contentView] addSubview:button];
-        [button addTrackingRect:NSInsetRect([button bounds], 3.0, 0.0) 
owner:button userData:nil assumeInside:NO];
         
         rect.origin.x = NSMaxX(rect);
         rect.size.width = SEP_WIDTH;
@@ -99,8 +99,8 @@
         [button setToolTip:NSLocalizedString(@"Fit to Screen", @"Tool tip 
message")];
         [button setAlternateToolTip:NSLocalizedString(@"Actual Size", @"Tool 
tip message")];
         [button setState:[pdfView autoScales]];
+        [button setShowsBorderOnlyWhileMouseInside:YES];
         [[self contentView] addSubview:button];
-        [button addTrackingRect:NSInsetRect([button bounds], 3.0, 0.0) 
owner:button userData:nil assumeInside:NO];
         [[NSNotificationCenter defaultCenter] addObserver: button selector: 
@selector(handleScaleChangedNotification:) 
                                                      name: 
PDFViewScaleChangedNotification object: pdfView];
         
@@ -115,8 +115,8 @@
         [button setTarget:controller];
         [button setAction:@selector(exitFullScreen:)];
         [button setToolTip:NSLocalizedString(@"Close", @"Tool tip message")];
+        [button setShowsBorderOnlyWhileMouseInside:YES];
         [[self contentView] addSubview:button];
-        [button addTrackingRect:NSInsetRect([button bounds], 3.0, 0.0) 
owner:button userData:nil assumeInside:NO];
     }
     return self;
 }
@@ -195,9 +195,7 @@
 @end
 
 
[EMAIL PROTECTED] SKNavigationToolTipWindow : NSWindow {
-    SKNavigationToolTipView *toolTipView;
-}
[EMAIL PROTECTED] SKNavigationToolTipWindow
 
 static SKNavigationToolTipWindow *sharedToolTipWindow = nil;
 
@@ -224,7 +222,9 @@
 
 - (BOOL)canBecomeMainWindow { return NO; }
 
-- (void)showToolTip:(NSString *)toolTip forView:(NSView *)view {
+- (void)showToolTip:(NSString *)toolTip forView:(NSView *)aView {
+    [view release];
+    view = [aView retain];
     [toolTipView setStringValue:toolTip];
     [toolTipView sizeToFit];
     NSRect newFrame = [self frameRectForContentRect:[toolTipView frame]];
@@ -243,8 +243,14 @@
 - (void)orderOut:(id)sender {
     [[self parentWindow] removeChildWindow:self];
     [super orderOut:sender];
+    [view release];
+    view = nil;
 }
 
+- (NSView *)view {
+    return view;
+}
+
 @end
 
 @implementation SKNavigationToolTipView
@@ -344,14 +350,6 @@
     }
 }
 
-- (void)mouseEntered:(NSEvent *)theEvent {
-    [[SKNavigationToolTipWindow sharedToolTipWindow] showToolTip:[self 
currentToolTip] forView:self];
-}
-
-- (void)mouseExited:(NSEvent *)theEvent {
-    [[SKNavigationToolTipWindow sharedToolTipWindow] orderOut:self];
-}
-
 @end
 
 @implementation SKNavigationButtonCell
@@ -374,6 +372,19 @@
     return nil;
 }
 
+- (void)mouseEntered:(NSEvent *)theEvent {
+    SKNavigationButton *button = (SKNavigationButton *)[self controlView];
+    [[SKNavigationToolTipWindow sharedToolTipWindow] showToolTip:[button 
currentToolTip] forView:button];
+    [super mouseEntered:theEvent];
+}
+
+- (void)mouseExited:(NSEvent *)theEvent {
+    SKNavigationButton *button = (SKNavigationButton *)[self controlView];
+    if ([[[SKNavigationToolTipWindow sharedToolTipWindow] view] 
isEqual:button])
+        [[SKNavigationToolTipWindow sharedToolTipWindow] orderOut:button];
+    [super mouseExited:theEvent];
+}
+
 @end
 
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to