A little over a week ago, I posited that the inconsistent use of brushed metal windows并不重要The idea being that the sort of consistency that does matter in interface design is in terms of meeting user expectations.

And so one reason not to waste more time on brushed metal windows is that Mac OS X has plenty of other consistency problems, real ones, which aren’t about subjective aesthetic tastesOne example is click-through, which I wrote about extensively over a year ago, and which situation hasn’t gotten any better since then:


In the old Mac OS, there was one clear way to delete something using a mouse gesture, that being to drag it to the TrashThis worked remarkably well for the Finder: users were able to easily and safely delete files and foldersEasily because the semantics behind dragging items to the Trash icon are easy to graspSafely because using the Trash is a two-step process — first drag to the Trash, then invoke the Empty Trash command to actually delete the Trash’s contents.

Everyone knows how the Trash works now, and every desktop OS uses a similar metaphor for deleting files and foldersBut at one point it was new, and it was Apple that pioneered itIn those days end users were expected to use command-line tools such as Unix’sR M或DOS的德尔to delete files, and catastrophic mistakes were common — you were never more than one bad wildcard away from wiping out essential files.

With Mac OS X, however, Apple introduced a second way to delete certain types of items using a mouse drag: the poof例如when you drag a non-running application’s icon off the Dock, it poofs, and it’s removed from the Dock.

It’s a cute effect, made for demoing how cool Mac OS X looks — but it’s shitty user-interface design, and Apple has implemented it inconsistently.

One thing that is sort of consistent about poofing is in the sort of item it’s used forApple only uses poofing as a technique for deleting proxy iconsWhen you poof an app off your Dock, you haven’t deleted the app itself, you’ve simply removed its proxy icon from your DockApple never uses poofing for the deletion of actual data or files.

Dock Poofing

Many long-time Mac users consider the Dock to be the single worst interface change from the old Mac OS to Mac OS XI’ve never felt the outright hatred toward the Dock that some do, but it is a confounding little bugger.

Most complaints about the Dock boil down to the fact that it’s neither optional nor replaceable即使你杀了它 - 字面意思,使用命令行工具 - 它回来了While technically just an application (/System/Library/CoreServices/Dock.app), it receives special treatment by the system itself.

Much of this initial revulsion, however, was just resistance to the Dock because it was new and differentPeople who’d been working a certain way with their Macs for many years simply didn’t want to deal with something new.

In certain of its details, however, the Dock remains frustrating and irritating to long-time Mac users because it works in unexpected — dare I say “un-Mac-like”? — ways如噗。

Dock中的图标是一种独特的代理When you drag them, they are not direct representations of the items themselvesBut neither are they aliases, which is what they should be — and which is how app proxies are handled in third-party “dock” utilities such asDragThing

What is it that you’re dragging when you drag an icon in the Dock? It’s just a proxy icon, and pertains只要到码头本身You can drag it within the Dock to rearrange the order of the iconsAnd you can drag it off the Dock, and it poofs — which removes the app from the Dock, but leaves the actual app itself in place in your file system(Same with folders or files or whatever other icons you store in your Dock.)

除非应用程序已在运行In which case when you drag it off the Dock and let go, it just shoots right back into the Dock, no poof. But that doesn’t mean the drag-off-the-Dock didn’t take — when you eventually quit that app, its Dock icon disappears, sans poof, in the same way icons do for apps that aren’t permanent Dock residentsThis is just a confusing side-effect of the Dock’s conflated roles as both a launcher and process manager.

But what if you want to drag a useful representation of the app itself? For example, the easiest way to open an app’s AppleScript dictionary in Script Editor is to drag the app onto Script Editor’s iconThus, a Mac user’s instincts would be to drag an app’s icon in the Dock and drop it onto Script Editor’s icon in the DockBut that doesn’t work, because dragging within the Dock only allows for rearranging the icons.

The answer is to Command-drag: press and hold the Command key on your keyboard while you drag an app’s icon in the DockWhen you do this, instead of the usual Dock proxy icon, you get a real reference to the application itselfYou can see the difference — when you just plain drag Dock icons, the icons are translucent; when you Command-drag them, the icons are opaque.

Thus, you can Command-drag a Dock icon and drop it onto Script Editor, and Script Editor will open that app’s dictionary(This works for any application that can “open” another application, e.gBBEdit, which will open a disk browser window displaying the contents of an app’s package — a useful shortcut for peeking at application resources.)

If you Command-drag an icon off the Dock, you’re effectively dragging the application itself, just as though you had initiated the drag from the FinderE.g., Command-drag an app icon from the Dock to the desktop, and instead of a poof, you’ll move the application itself from wherever it was installed to your desktop folderCommand-Option-drag, and you’ll create an alias to the application.

Knowing this Command-drag shortcut makes the Dock much more useful. However, it’s very much counter-intuitiveMuch better is the behavior of DragThing, where regular (no modifier key) drags are aliases to the original applicationYou can thus just plain drag one app’s icon from a DragThing palette and drop it onto Script Editor, and it does the right thingIf you just plain drag an app icon and drop it on the desktop, it doesn’t move the original application, but instead creates an alias to it.

In other words, instead of poofing on unmodified drags, the Dock should allow you to drag an alias to the appHow would you delete an icon from your Dock? Well, obviously: you’d drag it to the Trash码头已经support dragging icons to the Trash, and upon doing so, pops up text next to the Trash reading, “Remove From Dock”.

And indeed, dragging to the Trash is how one uses the mouse to remove icons from a DragThing palette — and when you do, you still get the cool poof animation, if that matters to you.

In short, the Dock’s poofing gets in the way of dragging Dock icons (without modifier keys) to do useful things, and it’s unnecessary, since it would be easy and obvious to drag-to-the-Trash to remove icons from the Dock.

Finder Poofing

As of 10.3, the Finder now supports poofing in its metal-window-mode sidebarThe Finder’s sidebar acts quite a bit like the Dock, in fact. Items in the sidebar are purely proxies, which are usable only within the sidebar itselfDrag them within the sidebar to rearrange, drag them out of the sidebar to poof.

The Finder’s sidebar poofing is very much like the Dock’s, in that it only removes the item from the sidebar, but has no effect on the actual item itselfOne significant difference, however, is that when you’re in mid-poof in the Finder, it switches to a special poof cursor:


This is rather helpful, as it gives you instant feedback that you’re not really dragging the item itself, or an alias to it, but rather that you’re simply removing the item from the Finder’s sidebarThe Dock would do well to use a poof cursor as well.

Alas, the poof cursor is not the only inconsistency between the Finder’s and Dock’s poofing behavior在Finder的侧边栏中,poofing就是只要available dragging action — no combination of modifier keys will allow you to drag an actual reference to the item itselfSidebar items can act as drag targets (you can drop items onto them), but can never serve as draggable items themselves.

Thus, in the Finder sidebar, the entire concept of dragging — one of the most useful actions of the Mac’s UI vocabulary — is wasted entirely on poofing.

Much better would be if sidebar items were aliases (or at least acted like aliases)Then they could serve both as drop targets and draggable items如果您想从侧边栏中删除项目,您可以 -你可以看到这距离一英里远- 只需将其拖到废纸篓。


Mac OS X also uses poofing when you remove items from Cocoa-style toolbars (which aren’t limited to Cocoa apps, but which I can’t think of a better name for).

When you configure such a toolbar (using the View → Customize Toolbar command), the toolbar icons act similarly to Dock icons: drag within the toolbar to rearrange, drag out of the toolbar to poof.

You can also invoke these features without opening the Customize Toolbar dialog by Command-dragging at any time.

In neither case do you get a poof cursor like you do in the Finder; it’d be a nice touch for Cocoa to steal this idea from the Finder. Context-sensitive cursors — e.gthe “you’re making a copy” cursor shown below — ought to be used consistently throughout the system:


Toolbars are the one place Apple uses poofing where it is wholly appropriateToolbar icons aren’t representative of actual items such as folders or filesThey only have meaning within the toolbar itself. Dragging-to-poof in a toolbar isn’t coming at the expense of any other useful dragging actions, unlike with the Dock or the Finder’s sidebar.

以前: iPod疯狂
下一个: 额外的Poofery