Monday, 9 June 2003
Over the weekend I made some progress with the most-requested feature in ICeCoffEE: hiding services you don't use.
I noticed a Cocoa/Carbon inconsistency while I was working on keyboard equivalent display. Displaying keyboard equivalents isn't as easy as it might seem: compare the above screenshot to the “Set Menu Keys” dialog in BBEdit to see what happens when you naively right-justify keyboard equivalents. Cocoa interprets service keyboard equivalents differently from Carbon and the documentation.
Here's the Services menu in the Finder (Carbon):
and in OmniOutliner (Cocoa):
Note that the same keyboard equivalent appears twice in the Carbon Services menu (?). All services get a Command-Shift equivalent in Carbon apps, which matches even the Cocoa documentation, whereas the case of the NSKeyEquivalent “default” in Info.plist defines whether the shortcut requires the Shift key in Cocoa apps. I'm attempting to implement the Cocoa behavior in ICeCoffEE since it matches what the user will actually see, but it's not made any easier by the apparent random assignment when two services have the same NSKeyEquivalent.
I've got a number of bugs to work out, and a few small promised features to add for 1.4. The code changes required to upgrade to APE SDK 1.3 were minimal, but I should be able to improve ICeCoffEE's launch-time friendliness by using some of the new features in 1.3.