adium 3895:59f707927de3: Tooltips tracking, better way of tracki...
commits at adium.im
commits at adium.im
Fri May 6 00:11:23 UTC 2011
details: http://hg.adium.im/adium/rev/59f707927de3
revision: 3895:59f707927de3
branch: (none)
author: Adrian Godoroja <robotive at me.com>
date: Fri May 06 03:03:40 2011 +0300
Tooltips tracking, better way of tracking mouse scrolling. Refs #3480
diffs (104 lines):
diff -r ccd2b155c06e -r 59f707927de3 Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.h
--- a/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.h Fri May 06 01:58:10 2011 +0300
+++ b/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.h Fri May 06 03:03:40 2011 +0300
@@ -59,9 +59,8 @@
NSPoint tooltipLocation; //Last tooltip location we told our delegate about
NSTrackingRectTag tooltipTrackingTag; //Tag for our tracking rect
int tooltipCount; //Used to determine how long before a tooltip appears
-
- id scrollEventMonitor; // Used to update a tooltip when mouse is scrolling
- BOOL mouseIsScrolling; //
+
+ BOOL mouseIsScrolling; // Used to update a tooltip when mouse is scrolling
}
/*!
diff -r ccd2b155c06e -r 59f707927de3 Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m
--- a/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m Fri May 06 01:58:10 2011 +0300
+++ b/Frameworks/AIUtilities Framework/Source/AISmoothTooltipTracker.m Fri May 06 03:03:40 2011 +0300
@@ -37,6 +37,8 @@
- (void)_stopTrackingMouse;
- (void)_hideTooltip;
- (void)mouseMovementTimer:(NSTimer *)inTimer;
+
+- (void)contentViewBoundsDidChange;
@end
@interface NSWindow (SpacesDeterminationHackery)
@@ -57,6 +59,7 @@
delegate = inDelegate;
tooltipTrackingTag = -1;
tooltipLocation = NSZeroPoint;
+ mouseIsScrolling = NO;
//Reset cursor tracking when the view's frame changes
[[NSNotificationCenter defaultCenter] addObserver:self
@@ -68,6 +71,14 @@
name:AIWindowToolbarDidToggleVisibility
object:[view window]];
+ // Track contentView bounds changes (useful to detect scrolling)
+ if ([view isKindOfClass:[NSScrollView class]]) {
+ [[NSNotificationCenter defaultCenter] addObserver:self
+ selector:@selector(contentViewBoundsDidChange)
+ name:NSViewBoundsDidChangeNotification
+ object:[(NSScrollView *)view contentView]];
+ }
+
[self installCursorRect];
}
@@ -211,6 +222,12 @@
[self _stopTrackingMouse];
}
+// Handle Scrolling
+- (void)contentViewBoundsDidChange
+{
+ mouseIsScrolling = YES;
+}
+
//Start tracking mouse movement
- (void)_startTrackingMouse
{
@@ -222,18 +239,6 @@
userInfo:nil
repeats:YES] retain];
}
-
- if (!scrollEventMonitor) {
- scrollEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSScrollWheelMask handler:^(NSEvent *anEvent) {
- if ([anEvent window] == [view window]) {
- mouseIsScrolling = true;
- } else {
- mouseIsScrolling = false;
- }
-
- return anEvent;
- }];
- }
}
//Stop tracking mouse movement
@@ -251,10 +256,6 @@
[theTimer invalidate];
[theTimer release]; theTimer = nil;
}
-
- if (scrollEventMonitor) {
- [NSEvent removeMonitor:scrollEventMonitor], scrollEventMonitor = nil;
- }
}
- (void)_hideTooltip
@@ -300,8 +301,8 @@
[delegate showTooltipAtPoint:mouseLocation];
tooltipLocation = mouseLocation;
- // Reset scrolling data
- mouseIsScrolling = false;
+ // Reset scrolling info
+ mouseIsScrolling = NO;
}
} else {
More information about the commits
mailing list