I wrote before the trip:
Rainer Brockerhoff wrote:

Time for another update on XRay 2.0.

…The main tool for the user to adapt the interface to personal needs will be the split view paradigm. Vertically, the window will be divided into several splits, most of which will have subsplits.

…So much for trying to fix NSSplitView. After examining and discarding some other fixes floating around on the net, I decided to reimplement NSSplitView from the ground up as a NSView subclass. This, in turn, launched me into writing an Interface Builder palette so I could set up my window as usual.

…Still, I haven’t given up and I’m now deciding whether I should build my window entirely programmatically or spend a “Support Incident” at Apple ADC to get an official workaround… stay tuned.

As I took my old iBook on the trip, I was able to devote some time every day – after the “official” touristy duties – to reimplementing the split view. (The official class name is now “RBSplitView”, by the way.)

The view implementation itself was actually quite straightforward, although complex; it was the IBPalette that took most of the time. It took quite a bit of testing and checking unsupported APIs to find out a way that works for most of the expected Interface Builder actions, and in the end I managed to do it all by using only the “normal” APIs.

If you’re interested, the current version of RBSplitView and the associated IBPalette will always be downloadable here. Xcode 1.5 running on Panther is required.

Highlights:

  • Full reimplementation of split view, not a subclass
  • Not a 100% drop-in replacement for NSSplitView though
  • Uses container subviews for each split
  • Allows easy nesting of split views with automatic 4-way thumbs
  • Source and IBPalette available under modified BSD license.

Still to do:

  • Autosaving of subview state
  • Separate documentation
  • 100% glitch-free working in Interface Builder

Comments will be extremely welcome!