Enabling garbage collection support.
[ITKit.git] / ITTransientStatusWindow.m
old mode 100755 (executable)
new mode 100644 (file)
index bae7b53..24aa83b
@@ -1,9 +1,9 @@
 #import "ITTransientStatusWindow.h"
 #import "ITWindowEffect.h"
-#import <CoreGraphics/CoreGraphics.h>
+#import <ApplicationServices/ApplicationServices.h>
 #import "ITCoreGraphicsHacks.h"
 #import "ITTextField.h"
-#import "ITGrayRoundedView.h"
+#import "ITTSWBackgroundView.h"
 
 #define EFFECT_FPS 30.0
 
@@ -81,11 +81,12 @@ static ITTransientStatusWindow *staticWindow = nil;
         _verticalPosition    = ITWindowPositionBottom;
         _horizontalPosition  = ITWindowPositionLeft;
         _screenPadding       = 32.0;
-        _screenNumber        = 0;
+        //_screenNumber        = 0;
         _entryEffect         = nil;
         _exitEffect          = nil;
         _reallyIgnoresEvents = YES;
         _exitTimer           = nil;
+               [self setScreen:[NSScreen mainScreen]];
 
 //      if ( _backgroundType == ITTransientStatusWindowRounded ) {
 //          _contentSubView = contentView;
@@ -101,31 +102,46 @@ static ITTransientStatusWindow *staticWindow = nil;
     return self;
 }
 
+- (void)dealloc
+{
+       [_screen release];
+       [super dealloc];
+}
 
 /*************************************************************************/
 #pragma mark -
 #pragma mark INSTANCE METHODS
 /*************************************************************************/
 
-- (BOOL)ignoresMouseEvents
+/*- (BOOL)ignoresMouseEvents
 {
     return _reallyIgnoresEvents;
 }
 
 - (void)setIgnoresMouseEvents:(BOOL)flag
 {
-    CGSValueObj         key;
-    CGSValueObj         ignore;
+    //CGSValueObj       key;
+    //CGSValueObj       ignore;
+       CGSWindowTag tags;
 
     key = CGSCreateCString("IgnoreForEvents");
     ignore = CGSCreateBoolean( (flag ? kCGSTrue : kCGSFalse) );
     CGSSetWindowProperty([NSApp contextID], (CGSWindowID)[self windowNumber], key, ignore);
     CGSReleaseObj(key);
     CGSReleaseObj(ignore);
+       
+       CGSGetWindowTags([NSApp contextID], (CGSWindowID)[self windowNumber], &tags, 32);
 
-    _reallyIgnoresEvents = flag;
-}
+       if (flag) {
+               tags = tags | CGSTagTransparent;
+       } else {
+               tags = tags & CGSTagTransparent;
+       }
+NSLog(@"ignore? %i", flag);
+       CGSSetWindowTags([NSApp contextID], (CGSWindowID)[self windowNumber], &tags, 32);
 
+    _reallyIgnoresEvents = flag;
+}*/
 
 /*
 
@@ -184,6 +200,27 @@ static ITTransientStatusWindow *staticWindow = nil;
     }
 }
 
+- (void)setScreen:(NSScreen *)newScreen
+{
+       [_screen release];
+       _screen = [newScreen retain];
+}
+
+- (NSScreen *)screen
+{
+       return _screen;
+}
+
+- (void)setSizing:(ITTransientStatusWindowSizing)newSizing
+{
+    _sizing = newSizing;
+}
+
+- (ITTransientStatusWindowSizing)sizing
+{
+    return _sizing;
+}
+
 - (ITWindowVisibilityState)visibilityState
 {
     return _visibilityState;
@@ -195,6 +232,8 @@ static ITTransientStatusWindow *staticWindow = nil;
     
     if ( _visibilityState == ITWindowVisibleState ) {
         [self startVanishTimer];
+    } else if ( (_visibilityState == ITWindowVanishingState) || (_visibilityState == ITWindowHiddenState) ) {
+        [self stopVanishTimer];
     }
 }
 
@@ -279,7 +318,7 @@ static ITTransientStatusWindow *staticWindow = nil;
     _screenPadding = newPadding;
 }
 
-- (int)screenNumber
+/*- (int)screenNumber
 {
     return _screenNumber;
 }
@@ -287,7 +326,7 @@ static ITTransientStatusWindow *staticWindow = nil;
 - (void)setScreenNumber:(int)newNumber
 {
     _screenNumber = newNumber;
-}
+}*/
 
 - (ITWindowEffect *)entryEffect
 {
@@ -320,7 +359,7 @@ static ITTransientStatusWindow *staticWindow = nil;
 - (void)rebuildWindow;
 {
     if ( _backgroundType == ITTransientStatusWindowRounded ) {
-        ITGrayRoundedView *roundedView = [[[ITGrayRoundedView alloc] initWithFrame:[self frame]] autorelease];
+        ITTSWBackgroundView *roundedView = [[[ITTSWBackgroundView alloc] initWithFrame:[self frame]] autorelease];
 
         [self setBackgroundColor:[NSColor clearColor]];
         [self setHasShadow:NO];