さて、SimpleCapではどう実装するか。もともと NSWindow#setIgnoresMouseEvents: を使った経緯は範囲選択モードで、真ん中の透明部分をつかんで選択範囲をドラッグできるようにするのが目的だった。コードを見直したところ、それ以外の目的では使っていない。
ということは、ここだけ何か対応ができれば NSWindow#setIgnoresMouseEvents: を使わなくても良いということになる。前回 NSWindow#setIgnoresMouseEvents: を使った場合でも、透明部分へのクリックイベントをスルーさせることができることがわかったが、今後 MacOSX10.6, 7, 8...とバージョンアップ後も動作させたいので、できればプライベート関数を使うのは避けたい。
で、結局今回は完全な透明ではなく、透明度を限りなく上げた不透明な色を使うことにした。
[[NSColor colorWithDeviceRed:1.0 green:1.0 blue:1.0 alpha:0.05] set];
見た目は透明で全然支障が無い。
alpha値は 0.05がぎりぎりで、それより小さくなるとイベントが拾えなかった。
これで NSWindow#setIgnoresMouseEvents: とプライベート関数を使わずに対応できた。