itok's Lab

昔の開発ネタを記録として残してます

Leopard の新機能 NSCell の expansion frame を抑制する

Leopard になると、例えば NSTableView 上のとあるセルにカーソルを持ってくれば、勝手にそのセルの内容が ToolTip みたいなものとして表示されることがあります。これは、NSCell の新機能の一つである expansion frame というやつだそうです。

NSCell ではデフォルトで無効になっているんですが、そのサブクラス(例えば NSTextFieldCell)では有効らしい。

これがまた、すでに自前でその行に対して ToolTip を仕込んでいるような場合に、両方が表示されてしまい結構鬱陶しいわけです(例↓)。っていうか、勝手にそんな(ちょっとは便利?)機能を有効にしないでくださいな、と。

拙作 Ensemble2 の様子。上が expansion frame、下がもともとの ToolTip。
nscell_expansion_frame.png

で、どうすればよいかというと、該当の NSCell のサブクラスを作って、

// NSCell
-(NSRect) expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView*)view

の結果として NSZeroRect を返してあげればOKです。