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