Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Highlight NSToolbarItems

I want to highlight the selected NSToolbarItem like e.g. in Adium (see screenshot).

highlight http://a2.s3.p.quickshareit.com/files/screenshot_b28b67ba9411513d6.png

Is there an easy way? If not, tell me the difficult one. =)

like image 347
papr Avatar asked Feb 19 '09 19:02

papr


3 Answers

To expand upon Chuck's answer, you simply need to make your controller the delegate of your NSToolBar and implement the toolbarSelectableItemIdentifiers: delegate method in it. For example, the following implementation will let you retain the selection highlight on every toolbar item except for the one labeled "Inspect":

- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
{
    NSMutableArray *allIdentifiers = [[NSMutableArray alloc] init];

    for (NSToolbarItem *toolbarItem in [toolbar items])
    {
        if (![[toolbarItem label] isEqualToString:@"Inspect"])
            [allIdentifiers addObject:[toolbarItem itemIdentifier]];
    }

    return [allIdentifiers autorelease];
}

I cache the allIdentifiers array in an instance variable when I do something like this, so that I only have to do the array construction once.

like image 172
Brad Larson Avatar answered Oct 23 '22 19:10

Brad Larson


If you made your toolbar in Interface Builder, you can click on the individual NSToolbarItems and check the Selectable box in the Inspector for the ones you want to have that look. No code needed.

like image 35
sam Avatar answered Oct 23 '22 21:10

sam


See Selectable Toolbar Items in the Cocoa documentation.

like image 6
Chuck Avatar answered Oct 23 '22 20:10

Chuck