Fixed a crash in the core image effect. Using proper transparent bit in the CoreGraph...
[ITKit.git] / ITTransientStatusWindow.m
old mode 100755 (executable)
new mode 100644 (file)
index 4f03f53..029aa79
@@ -86,6 +86,7 @@ static ITTransientStatusWindow *staticWindow = nil;
         _exitEffect          = nil;
         _reallyIgnoresEvents = YES;
         _exitTimer           = nil;
+               [self setScreen:[NSScreen mainScreen]];
 
 //      if ( _backgroundType == ITTransientStatusWindowRounded ) {
 //          _contentSubView = contentView;
@@ -101,6 +102,11 @@ static ITTransientStatusWindow *staticWindow = nil;
     return self;
 }
 
+- (void)dealloc
+{
+       [_screen release];
+       [super dealloc];
+}
 
 /*************************************************************************/
 #pragma mark -
@@ -114,14 +120,25 @@ static ITTransientStatusWindow *staticWindow = nil;
 
 - (void)setIgnoresMouseEvents:(BOOL)flag
 {
-    CGSValueObj         key;
-    CGSValueObj         ignore;
+    //CGSValueObj       key;
+    //CGSValueObj       ignore;
+       CGSWindowTag tags;
 
-    key = CGSCreateCString("IgnoreForEvents");
+    /*key = CGSCreateCString("IgnoreForEvents");
     ignore = CGSCreateBoolean( (flag ? kCGSTrue : kCGSFalse) );
     CGSSetWindowProperty([NSApp contextID], (CGSWindowID)[self windowNumber], key, ignore);
     CGSReleaseObj(key);
-    CGSReleaseObj(ignore);
+    CGSReleaseObj(ignore);*/
+       
+       CGSGetWindowTags([NSApp contextID], (CGSWindowID)[self windowNumber], &tags, 32);
+
+       if (flag) {
+               tags = tags | CGSTagTransparent;
+       } else {
+               tags = tags & CGSTagTransparent;
+       }
+
+       CGSSetWindowTags([NSApp contextID], (CGSWindowID)[self windowNumber], &tags, 32);
 
     _reallyIgnoresEvents = flag;
 }
@@ -183,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;