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 件のコメント:
コメントを投稿