Matt Gemmell

My new book CHANGER is out now!

An action-thriller novel — book 1 in the KESTREL series.

★★★★★ — Amazon

NSSchizophrenicControls

interface 4 min read

Continuing my series of articles on Apple’s dodgy UI decisions lately (also read Erik’s latest, and Vinay’s epic), I went into frenzied command-shift-4 mode (that’s screenshot-taking mode, by the way), and recorded for posterity some examples of Apple’s utterly schizophrenic UI design.

NSSchizophrenicTextField

Here’s a nice, normal NSTextField, just minding its own business.

screenshot

And here’s a round NSTextField, with the focus. Again, fairly innocuous.

screenshot

But here’s a round iTunes textfield, with the focus. Notice the big bevel, and the darker focus-ring. Not the same as the one above.

screenshot

Here’s the Search field in Mail. This is really an NSSchizophrenicTextFieldWhichActsLikeAComboBox. Note the nice little drop-down icon, and the fact that it displays the currently selected option in gray when there’s no text in the field. This “same” (ha!) control is used for Safari’s Google Search field, incidentally.

screenshot

Here’s the menu dropped-down, for reference. Note how it uses the “disabled menu-item as label” trick which John Gruber so dislikes in Safari’s View menu.

screenshot

When it has focus, it looks very like an ordinary (round) NSTextField, which is a nice trick given that it’s a custom control.

screenshot

Interestingly, we’re now seeing a new “standard” behaviour in NSTextFields. I put the word “standard” in quotes since, erm, it’s an entirely custom behaviour implemented by Apple. It’s not part of the NSTextField class. Witness the Clear Icon:

screenshot

No question that it has its uses, and it appears to be becoming fairly “standard”. It’s the same in the Finder’s toolbar, Mail, the People floating window in iCal, and probably some other places. The same everywhere it’s used… except in iTunes.

screenshot

If you’re going to spend all that time in Photoshop making up TIFFs to use in custom controls, the least you could do is make them all look the same. But this is a problem not limited to NSSchizophrenicTextFields, as we’ll see in a moment. Meantime, last but certainly not least, I’d like to introduce you to NSSchizophrenicTextFieldAndProgressIndicator, as seen in Safari.

screenshot
NSSchizophrenicMetalButton

We’re all becoming used to those little rectangular metallic buttons which are popping up in every iApp lately. They first appeared with iTunes, and spread from there. I think it’s probably only a matter of time before NSButton is updated to give third-party developers use of these things.

For the moment, however, they are completely custom controls, each one adding 2-4 TIFF files to the app’s bundle (which then reside in your video memory). Implementing state is entirely up to the individual application’s developers, which is why iChat falls down so badly in this, as Erik pointed out previously.

Here are some from iChat:

screenshot

Fascinatingly, though, they’re actually not the same as the ones in iTunes. iTunes’ metal buttons are larger, and their monochromatic icons are darker. Take a look.

screenshot
Even these totally custom controls, with very simplistic behaviour, aren’t the same across apps. Some people have said to me “iTunes is different because (it’s Carbon it’s from OS 9 it was made way before the other iApps)”. Fine, but these are custom controls - images, whipped up in Photoshop. There’s no reason at all for them all not to be identical. Well, except for “no, they need to be a little bit smaller here to look cool”.
NSSchizophrenicToolbar

I’ve spoken a fair bit previously about toolbars, so I won’t rehash that material here. Suffice it to say that there’s an excellent NSToolbar class available already. It produces toolbars which look like this one, from Mail:

screenshot

For no real reason, though, Safari uses a custom toolbar (actually two different custom toolbars!)

screenshot

It also occurred to me today that NSToolbars are increasingly being used more or less the same way as tabs - to toggle the visible pane in a window. Witness System Preferences, the iChat or Safari preferences windows, and plenty of other apps. If that’s a legitimate use of toolbars (and I think it is indeed), then surely iSync, which uses exactly that switching-panes metaphor to set synchronisation options for various devices, should just use an NSToolbar? Instead, it uses yet another type of toolbar-like control, this time with a big sunken area behind the selected icon.

screenshot
NSSchizophrenicMetalWindow

Just a quick note about windows. Most people think there are two main visual styles of window; Aqua and metal (textured). That’s not actually the case - there are two different types of metal window alone! One type is the kind used in most of the iApps and pictured above, and the other one is used exclusively in Quicktime Player. Notice the non-sunken widgets, different resize handle at the lower right corner, and lighter appearance along the titlebar. Apple: “Consistency, Except”.

screenshot
NSSciFiAirlockButtonAndIndeterminateProgressIndicator

Nice name, eh? This is, of course, the iTunes “burn” button. Here it is:

screenshot

This time, Apple actually manages to use the same control in the new version of iPhoto! It is shown on a different background, but we can forgive that.

screenshot

That’s somewhat skirting the issue of it being an entirely custom control, without any real parallel in the standard controls available to other developers. Not that I’d likely want such a thing anyway. As a final note, it’s worth pointing out that if Apple intended it to be a new, standard “NSBurnButton”, then they’d better update the Finder - it uses a different one, without the airlock spiral effect. Better luck next time!

screenshot
Conclusion

This has been a very illustrative exercise for me. It’s staggering, even to someone who has spent a fair bit of time critiquing Apple’s recent UI designs, just how much inconsistency can be found in the current shipping version of the OS. It’s not about whether the controls are “recognisably” the same; they should just be the same. Clarus, come back!

I used to derisively chuckle my way through MacKiDo’s articles about just this sort of thing on Windows. How the mighty are falling.