ページ

2009年5月13日水曜日

複数のNSWindowを紐づける

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

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を重ねられる。
次回やってみよう。