William Bowling is sharing code with you

Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.

Don't show this again

wbowling / adium (fork of adium / adium)

Fork of Adium for patches/improvements

Clone this repository (size: 338.7 MB): HTTPS / SSH
hg clone https://bitbucket.org/wbowling/adium
hg clone ssh://hg@bitbucket.org/wbowling/adium

adium / Source / AIBorderlessListController.m

//
//  AIBorderlessListController.m
//  Adium
//
//  Created by Evan Schoenberg on 1/8/06.
//

#import "AIBorderlessListController.h"
#import "AIListOutlineView.h"

@implementation AIBorderlessListController

- (id)initWithContactList:(AIListObject<AIContainingObject> *)aContactList
                        inOutlineView:(AIListOutlineView *)inContactListView
                         inScrollView:(AIAutoScrollView *)inScrollView_contactList
                                 delegate:(id<AIListControllerDelegate>)inDelegate
{
        if ((self = [super initWithContactList:aContactList
                                                         inOutlineView:inContactListView
                                                          inScrollView:inScrollView_contactList
                                                                  delegate:inDelegate])) {
                emptyListHiding = NO;
                [self reloadListObject:nil];
        }
        
        return self;
}

- (void)configureViewsAndTooltips
{
        [super configureViewsAndTooltips];
        
        [self reloadListObject:nil];
}
/*!
 * @brief When asked to reload a list object, check to ensure we have 1 or more visible rows
 *
 * If we have no rows visible, hide the contact list, redisplaying it when rows are visible again.
 * orderOut: doesn't appear to work for borderless windows, so we just go to an alpha value of 0.
 */
- (void)reloadListObject:(NSNotification *)notification
{
        [super reloadListObject:notification];

        NSInteger numberOfRows = [contactListView numberOfRows];

        if (numberOfRows && emptyListHiding) {  
                emptyListHiding = NO;           
                [[contactListView window] setAlphaValue:previousAlpha];
                [[contactListView window] orderFront:nil];

        } else if (!numberOfRows && !emptyListHiding) { 
                emptyListHiding = YES;
                previousAlpha = [[contactListView window] alphaValue];
                [[contactListView window] setAlphaValue:0.0];
        }
}

@end