ページ

2008年5月9日金曜日

RubberBand(その23)コンテキストメニュー(2)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

コンテキストメニュー続き。ビューの特定のエリアだけメニューが出るようにしたい。

コンテキストメニューを表示する直前に NSView#menuForEvent: が呼ばれる。メニューを動的に変えたい場合はこのメソッドをオーバライドするので、これを使ってみることにする。

- (NSMenu *)menuForEvent:(NSEvent *)event
{
NSPoint p = [self convertPoint:[event locationInWindow] fromView:nil];
if (NSPointInRect(p, _rect)) {
return [self menu];
} else {
return nil;
}
}


event からマウスクリック位置を取り出して、それが RubberBand上か調べる。もしそうなら Outletに接続された NSMenu を返し、そうでないなら nil を返す。

結果はうまくいった。