Jump Scrolling

July 22, 2004 AM/Home

I found an annoying behavior in the standard Mac OS X Cocoa component, NSOutlineView. This component lets you browse through a hierarchical data set by opening and closing folders using "hide/reveal" triangles.

In an NSOutlineView if you've opened a folder and its contents are large enough to cause the scroll bar to appear (and for you to use it). When you close the folder the view snaps back and the triangle you just clicked on jumps out from under the mouse.

Certainly not a big thing, but its not a great behavior either. I've caught myself more than a few times hunting around for where I was after this happens. Anyway, here's a very simplistic couple screen shots I mocked up to show the behavior.

Just before closing the folder, note the position of the scroll bar:

Before Closing

Just after closing the folder, now note the state of the scroll bar. I did my best not to move the mouse (well sort of, I had to start the timed capture of the screen but you get the idea):

After Closing

See how the pointer is no longer over the "My subfolder" folder? I wonder if there's a way to fix this somehow?

Strangely (or not so strangely) this bug doesn't appear in the Finder. If you try this same experiment there the view remains fixed; the scroll bar remains, and its position is unchanged. But then the Finder seems to use a separate custom set of components.