Leopard の新機能 NSCell の expansion frame を抑制する
Leopard になると、例えば NSTableView 上のとあるセルにカーソルを持ってくれば、勝手にそのセルの内容が ToolTip みたいなものとして表示されることがあります。これは、NSCell の新機能の一つである expansion frame というやつだそうです。
NSCell ではデフォルトで無効になっているんですが、そのサブクラス(例えば NSTextFieldCell)では有効らしい。
これがまた、すでに自前でその行に対して ToolTip を仕込んでいるような場合に、両方が表示されてしまい結構鬱陶しいわけです(例↓)。っていうか、勝手にそんな(ちょっとは便利?)機能を有効にしないでくださいな、と。
拙作 Ensemble2 の様子。上が expansion frame、下がもともとの ToolTip。
で、どうすればよいかというと、該当の NSCell のサブクラスを作って、
// NSCell
-(NSRect) expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView*)view
の結果として NSZeroRect を返してあげればOKです。