From 86f01cfaecd100b4297ca06c3e0c73aee46ce4f6 Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Wed, 5 Oct 2011 11:34:06 +0200 Subject: [PATCH] add a timer before fading out the scroller when overed --- AppKit/CPScroller.j | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/AppKit/CPScroller.j b/AppKit/CPScroller.j index b3855e4a9..81ccbd676 100644 --- a/AppKit/CPScroller.j +++ b/AppKit/CPScroller.j @@ -87,6 +87,7 @@ CPThemeStateScrollerKnobDark = CPThemeState("scroller-knob-dark"); BOOL _allowFadingOut @accessors(getter=allowFadingOut); int _style; + CPTimer _timerFadeOut; } @@ -284,6 +285,13 @@ CPThemeStateScrollerKnobDark = CPThemeState("scroller-knob-dark"); [self setFrame:frame]; } +/*! @ignore */ +- (void)_performFadeOut:(CPTimer)aTimer +{ + [self fadeOut]; + _timerFadeOut = nil; +} + #pragma mark - #pragma mark Utilities @@ -721,6 +729,9 @@ CPThemeStateScrollerKnobDark = CPThemeState("scroller-knob-dark"); - (void)mouseEntered:(CPEvent)anEvent { + if (_timerFadeOut) + [_timerFadeOut invalidate]; + _allowFadingOut = NO; [self fadeIn]; [self setThemeState:CPThemeStateSelected]; @@ -729,7 +740,10 @@ CPThemeStateScrollerKnobDark = CPThemeState("scroller-knob-dark"); - (void)mouseExited:(CPEvent)anEvent { _allowFadingOut = YES; - [self fadeOut]; + + if (_timerFadeOut) + [_timerFadeOut invalidate]; + _timerFadeOut = [CPTimer scheduledTimerWithTimeInterval:1.2 target:self selector:@selector(_performFadeOut:) userInfo:nil repeats:NO]; }