From daa3d05d095cb6ff6038a9c1ed9ccd0e15ef468e Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Sun, 13 Apr 2003 02:38:15 +0000 Subject: [PATCH] Moving to the new means of setting the window visibility state: allowing the effects themselves to set the state via the ITWindowVisibility protocol. Tested, and it works beautifully. --- ITPivotWindowEffect.m | 34 +++++++++++++++++++++++++++------- ITTransientStatusWindow.m | 21 +++++---------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/ITPivotWindowEffect.m b/ITPivotWindowEffect.m index 299506a..52b2858 100755 --- a/ITPivotWindowEffect.m +++ b/ITPivotWindowEffect.m @@ -1,16 +1,21 @@ #import "ITPivotWindowEffect.h" #import "ITCoreGraphicsHacks.h" +#import "ITTransientStatusWindow.h" + @interface ITPivotWindowEffect (Private) - (void)setPivot:(float)angle; -- (void)pivotFinish; +- (void)appearFinish; +- (void)vanishFinish; @end -@implementation ITPivotWindowEffect +@implementation ITPivotWindowEffect - (void)performAppear { + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowAppearingState]; [self setPivot:315.0]; _effectProgress = 0.0; [_window setAlphaValue:0.0]; @@ -24,6 +29,8 @@ - (void)performVanish { + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowVanishingState]; [self setPivot:0.0]; _effectProgress = 1.0; [_window setAlphaValue:1.0]; @@ -37,19 +44,23 @@ - (void)cancelAppear { - [self pivotFinish]; + [self appearFinish]; [_window orderOut:self]; [self setPivot:0.0]; [_window setAlphaValue:1.0]; + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowHiddenState]; } - (void)cancelVanish { - [self pivotFinish]; + [self vanishFinish]; [self setPivot:0.0]; [_window setAlphaValue:1.0]; [_window orderFront:self]; [_window display]; + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowVisibleState]; } - (void)appearStep @@ -62,7 +73,7 @@ [_window setAlphaValue:interPivot]; if ( _effectProgress >= 1.0 ) { - [self pivotFinish]; + [self appearFinish]; } } @@ -76,16 +87,25 @@ [_window setAlphaValue:interPivot]; if ( _effectProgress <= 0.0 ) { - [self pivotFinish]; + [self vanishFinish]; } } -- (void)pivotFinish +- (void)appearFinish { [_effectTimer invalidate]; _effectTimer = nil; + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowVisibleState]; } +- (void)vanishFinish +{ + [_effectTimer invalidate]; + _effectTimer = nil; + // Cast so the compiler won't gripe + [(ITTransientStatusWindow *)_window setVisibilityState:ITTransientStatusWindowHiddenState]; +} - (void)setPivot:(float)angle { diff --git a/ITTransientStatusWindow.m b/ITTransientStatusWindow.m index f2ed917..b06fb3a 100755 --- a/ITTransientStatusWindow.m +++ b/ITTransientStatusWindow.m @@ -152,38 +152,33 @@ static ITTransientStatusWindow *staticWindow = nil; */ - - (IBAction)appear:(id)sender - { - NSLog(@"%i", _visibilityState); +- (IBAction)appear:(id)sender +{ if ( _visibilityState == ITTransientStatusWindowHiddenState ) { // Window is hidden. Appear as normal, and start the timer. if ( _entryEffect == nil ) { [self orderFront:self]; _visibilityState = ITTransientStatusWindowVisibleState; } else { - _visibilityState = ITTransientStatusWindowAppearingState; [_entryEffect performAppear]; - _visibilityState = ITTransientStatusWindowVisibleState; } [self startVanishTimer]; } else if ( _visibilityState == ITTransientStatusWindowVisibleState ) { // Window is completely visible. Simply reset the timer. [self startVanishTimer]; } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) { - // Window is appearing. Do nothing. + // Window is on its way in. Do nothing. } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) { - NSLog(@"%i", _visibilityState); + // Window is on its way out. Cancel the vanish. if ( _exitEffect == nil ) { [self orderFront:self]; _visibilityState = ITTransientStatusWindowVisibleState; } else { - _visibilityState = ITTransientStatusWindowAppearingState; [_exitEffect cancelVanish]; - _visibilityState = ITTransientStatusWindowVisibleState; } [self startVanishTimer]; } - } +} - (IBAction)vanish:(id)sender { @@ -193,12 +188,7 @@ static ITTransientStatusWindow *staticWindow = nil; [self orderOut:self]; _visibilityState = ITTransientStatusWindowHiddenState; } else { - _visibilityState = ITTransientStatusWindowVanishingState; - NSLog(@"%i", _visibilityState); [_exitEffect performVanish]; - NSLog(@"%i", _visibilityState); - _visibilityState = ITTransientStatusWindowHiddenState; - NSLog(@"%i", _visibilityState); } [self startVanishTimer]; } else if ( _visibilityState == ITTransientStatusWindowHiddenState ) { @@ -206,7 +196,6 @@ static ITTransientStatusWindow *staticWindow = nil; } else if ( _visibilityState == ITTransientStatusWindowAppearingState ) { // Window is on its way in. Cancel appear. [_entryEffect cancelAppear]; - _visibilityState = ITTransientStatusWindowHiddenState; } else if ( _visibilityState == ITTransientStatusWindowVanishingState ) { // Window is on its way out. Do nothing. } -- 2.20.1