しつこくフォーカスリング

昨日のエントリを書いてから、さらにフォーカスリングの描画をいじっていた。調整の末、下図のようになった:


NSSetFocusRingStyle() の使い方もどうやら、見えてきた。(NSFocusRingOnly の場合)この関数を呼んでから、フォーカスリングで囲みたい領域を fill すればいい。NSRectFill() などで手軽に長方形領域を fill すれば大抵は間に合うが、必要なら NSBezierPath でも使って好きな形を fill してやれば、どんな形でもフォーカスリングで囲める。そういうわけで、NSImageView の角が丸みを帯びたフレーム枠に合うように、角丸長方形領域を NSBezierPath でこしらえて fill してやるように改良してある。

また、/Developer/Examples/AppKit/ClockControl にフォーカスリングを描く例が含まれているのも発見した。うーん、灯台下暗し。