2011年4月24日日曜日

Cocoa Tabbed Interface 閉じるボタン

本日はTabクラスに「閉じるボタン」をつけてみた。

OSXのお作法(?)にしたがって、普段はまったく表示せず、tabにマウスがのったら表示する。


さらに「閉じるボタン」の上にマウスがのると


ま、このくらいでいいかな、と。もちろん「閉じるボタン」が押されるとこれまた微妙に違う画像に差し替えている。
tab全体をtrackingAreaにして、mouseMoveでボタンを表示している。
-(void)mouseMoved:(NSEvent *)theEvent{
    isHover=YES;
    NSPoint point = [self convertPointFromBase:[theEvent locationInWindow]];
    if (NSPointInRect(point, closeButtonRect)){
        isCloseButtonHover=YES; 
    }else{
        isCloseButtonHover=NO;
        isCloseButtonPushed=NO;
    }
    [self setNeedsDisplay:YES];
}

BOOL値で状態遷移を表しているが、enumの方がいいかしらん。素人のコードなんで、かっこ良さより自分のわかりやすさ優先。閉じるボタンをNSViewのサブクラスで作るほうが簡単と思われるが、Viewばっかりになるのもどうかな、ということでTabクラスの中に押し込めた。Cellで同じことをやるよりは大分楽だ。

この他、本日は時間があったのでtabの見た目をグラデーションさせてみたりしたが、

それほど劇的な効果はないので却下。(^^;)

0 件のコメント:

コメントを投稿