2011年4月21日木曜日

Cocoa なんちゃってtabbed interface NSCellで行くか、NSViewにするか


Developer toolの中にQuartz Debug.appというtoolがあって、グラフィックス系の処理のdebugやらパフォーマンス測定やらをビジュアルに確かめることができる。


このtoolで「Show tracking rectangles」を有効にすると、各アプリのウィンドウのtrackingAreaを視覚的に確かめることができる。NSTrackingAreaはNSViewしか持てない(・・・と理解しているがそれでいいのだろうか。)、しかもViewひとつにつきTrakingAreaもひとつ、のようなので、TrakingAreaイコールView、ということになる。

いろいろなタブインターフェイス付きのアプリで試してみたところ、とりあえずapple謹製アプリでタブインターフェイスを持つものは、タブをNSViewで作っているようだ。

GoogleのChromeもタブは全部TrakingAreaを持っていた。firefoxはタブに全くTrakingAreaがない。独自に実装しているのということか。

Cellでタブを作っていくと、TrakingAreaを独自に持てないため、「閉じるボタン」の状態遷移とか、マウスイベント処理がけっこう面倒なことになる。

その点Viewにしてしまえば、マウスイベントが処理できるため何かと楽。タブを表現するViewクラスで一度実装してしまえば面倒なことがない。

というわけで、このままCellでいくか、Viewに変更するかちょっと悩み中。
こういう時はViewでタブを実装してしまうサンプルを作ってみるのが話が早い。この週末の楽しみ、ということにしよう。

0 件のコメント:

コメントを投稿