OSXでツールバーを非表示にしているNSWindowでドラッグで移動したい。 色々探したがなかなか情報が少なかったのでメモしておく。 NSWindowを継承したクラスを作成。 mouseDownで画面のどの場所をクリックしたのか記録。 mouseDraggedでウィンドウの位置をマウスの位置へ移動。マウスの現在位置は[NSEvent mouseLocation]にて取得可能。 それにmouseDown時の位置を加味すればOK. ソースコードは以下のとおり。大変シンプルです。 [cpp]
import <cocoa/Cocoa.h>
@interface SGWindow : NSWindow @end [/cpp] [cpp]
import "SGWindow.h"
@implementation SGWindow { NSPoint beforePoint; } -(void)mouseDown:(NSEvent )theEvent { beforePoint = [theEvent locationInWindow]; } - (void)mouseDragged:(NSEvent )theEvent { NSPoint moLo = [NSEvent mouseLocation]; [self setFrame:NSMakeRect(moLo.x - beforePoint.x, moLo.y - beforePoint.y, self.frame.size.width, self.frame.size.height) display:YES animate:NO]; } @end [/cpp]