Fixed the problem in NSFont where a badly named font will leak.
[ITKit.git] / ITStatusItem.m
index 1b51ca2..bf1d18f 100755 (executable)
 @end
 
 @interface NSStatusItem (HACKHACKHACKHACK)
-- (id) _initInStatusBar:(NSStatusBar*)statusBar
+- (id)_initInStatusBar:(NSStatusBar*)statusBar
              withLength:(float)length
            withPriority:(int)priority;
-- (NSStatusBarButton*) _button;
+- (NSStatusBarButton*)_button;
+@end
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark PRIVATE METHOD DECLARATIONS
+/*************************************************************************/
+
+@interface ITStatusItem (Private)
+- (void)setImage:(NSImage*)image;
+- (NSString*) title;
+- (void)setTitle:(NSString*)title;
+- (void)setSmallTitle:(NSString*)title;
 @end
 
 
 #pragma mark ACCESSOR METHODS
 /*************************************************************************/
 
-- (NSImage*) alternateImage {
+- (NSImage*)alternateImage {
     return [[self _button] alternateImage];
 }
 
-- (void) setAlternateImage:(NSImage*)image {
+- (void)setAlternateImage:(NSImage*)image {
     [[self _button] setAlternateImage:image];
 }
 
+- (void)setImage:(NSImage*)image {
+    [super setImage:image];
+    if ( [self title] ) {
+        [self setTitle:[self title]];
+    } 
+}
+
+- (void)setTitle:(NSString*)title {
+    if ( [self image] && (title != nil) ) {
+        [self setSmallTitle:title];
+    } else {
+        [super setTitle:title];
+    }
+}
+
+
+/*************************************************************************/
+#pragma mark -
+#pragma mark PRIVATE METHODS
+/*************************************************************************/
+
+- (void)setSmallTitle:(NSString*)title {
+    NSAttributedString *attrTitle = [[[NSAttributedString alloc] initWithString:title attributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"LucidaGrande" size:12.0] forKey:NSFontAttributeName]] autorelease];
+    [self setAttributedTitle:attrTitle];
+}
+
+
 @end