Huge audit of ITKit, mostly everything has been updated to current coding
[ITKit.git] / ITStatusItem.m
old mode 100755 (executable)
new mode 100644 (file)
index 3e2ce57..b758d5c
@@ -1,33 +1,54 @@
-//
-//  ITStatusItem.m
-//  iThinkAppKit
-//
-//  Created by Joseph Spiros on Fri Dec 06 2002.
-//  Copyright (c) 2002 iThink Software. All rights reserved.
-//
-
 #import "ITStatusItem.h"
 
+@class NSStatusBarButton;
+
+@interface NSStatusItem (ITStatusItemHacks)
+- (id)_initInStatusBar:(NSStatusBar *)statusBar withLength:(float)length withPriority:(int)priority;
+- (NSStatusBarButton *)_button;
+@end
+
+@protocol _ITStatusItemNSStatusItemPantherCompatability
+- (void)setAlternateImage:(NSImage *)image;
+- (NSImage *)alternateImage;
+@end
 
 @implementation ITStatusItem
 
-- (id)initWithStatusBar:(NSStatusBar*)statusBar withLength:(float)length {
-    statusItem = [statusBar statusItemWithLength:length];
-}
+static BOOL _ITStatusItemShouldKillShadow = NO;
 
-- (NSStatusItem*) statusItem {
-    return statusItem;
++ (void)initialize {
+       if ((floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_1) && (floor(NSAppKitVersionNumber) <= 663.6)) {
+               _ITStatusItemShouldKillShadow = YES;
+       }
 }
 
-- (NSImage*) alternateImage {
-    return [[statusItem _button] alternateImage];
+- (id)initWithStatusBar:(NSStatusBar *)statusBar withLength:(float)length {
+       return [self _initInStatusBar:statusBar withLength:length withPriority:1000];
 }
 
-- (void) setAlternateImage:(NSImage*)image {
-    if ([[[[statusItem _button] cell] super] type] != 0) {
-        [[[statusItem _button] cell] setType:0];
+- (id)_initInStatusBar:(NSStatusBar *)statusBar withLength:(float)length withPriority:(int)priority {
+    if ((self = [super _initInStatusBar:statusBar withLength:length withPriority:priority])) {
+               if (_ITStatusItemShouldKillShadow) {
+                       [[(NSButton *)[self _button] cell] setType:NSNullCellType];
+               }
+        [self setHighlightMode:YES];
     }
-    [[statusItem _button] setAlternateImage:image];
+    return self;
 }
 
-@end
+- (NSImage *)alternateImage {
+       if ([super respondsToSelector:@selector(alternateImage)]) {
+               return [(id <_ITStatusItemNSStatusItemPantherCompatability>)super alternateImage];
+       }
+       return [(NSButton *)[self _button] alternateImage];
+}
+
+- (void)setAlternateImage:(NSImage*)image {
+       if ([super respondsToSelector:@selector(setAlternateImage:)]) {
+               [(id <_ITStatusItemNSStatusItemPantherCompatability>)super setAlternateImage:image];
+               return;
+       }
+    [(NSButton *)[self _button] setAlternateImage:image];
+}
+
+@end
\ No newline at end of file