On 08/07/2009, at 11:33 PM, I. Savant wrote:

[NSMenuItem setAttributedTitle:];

... and if you want to get really fancy (ie "modern"), you could build the list with regular strings (just "setTitle:") relatively, but use NSOperation/Queue to create / set the attributed titles with the actual fonts in the background, replacing the plain-text ones.

I suggest this because grabbing a list of font name strings is quicker than building an attributed string for each font. Do the quick thing first so it's available, but do the longer fancy thing in the background, updating while the UI is idling. Remember (99.9% of) all AppKit-related stuff should be done on the main thread.


A good idea, though I think the menu delegate can save you even this much effort. The docs are not explicit on this point, but a careful reading suggests that:

- (BOOL)menu:(NSMenu *)menu updateItem:(NSMenuItem *)item atIndex: (NSInteger)index shouldCancel:(BOOL)shouldCancel

is actually invoked on some sort of background thread/queue, so implementing these methods (the above + numberOfItemsInMenu:) in your menu delegate would allow you to update each item with the attributed title fairly simply and it wouldn't drag your main thread's performance down.

--Graham


_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to