NSWindowのリファレンスを眺めていると複数のウィンドウを紐付けられることがわかった。
NSWindow#addChildWindow:ordered:
どんな動きになるのかサンプルを作って確かめてみよう。
サンプル:PiledWindows.zip
まず InterfaceBuilderで2つのウィンドウを用意し、これを AppController のアウトレットに接続する。
AppController.h
@interface AppController : NSObject {
IBOutlet NSWindow* _window1;
IBOutlet NSWindow* _window2;
}
@end
紐付けは awakeFromNibで行う。
AppController.m
- (void)awakeFromNib
{
[_window1 addChildWindow:_window2
ordered:NSWindowAbove];
}
実行してみよう。2つのウィンドウが表示される。
子ウィンドウを移動すると通常通り任意の場所へ移動できる。
重なり順に NSWindowAbove を指定しているので、必ず子ウィンドウが上にくる。親ウィンドウをクリックしてアクティブにしても下に表示されたまま。
次に親ウィンドウを移動すると、おお。
子ウィンドウが位置関係を保ったままついてくる。こんな機能があったのか。
- - - -
これがあればわざわざ透明にすることもなく簡単に WebViewを重ねられる。
次回やってみよう。