ページ

2009年5月11日月曜日

WebKit検証(23) - Webウィンドウを重ねる

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

次は WebView が載ったウィンドウを重ねる。

こんな感じ。


実装のポイントは次の通り。

まず位置と大きさを外側のウィンドウ内の表示範囲に合わせる。正確なものはここでは不要なのでおおざっぱな位置と大きさを決めるメソッドを用意しこれを使う。

- (NSRect)calcRect
{
NSRect rect = [_frame_window frame];
rect.size.height -= 120.0;
rect.size.width -= 40.0;
rect.origin.x += 20;
rect.origin.y += 50;

return rect;
}


コントローラを外側のウィンドウの Delegateに設定し NSWindow#windowDidMove: と NSWindow#windowDidResize: を実装し、この中で位置と大きさを合わせる。
- (void)resizeWebWindow
{
[_web_window setFrame:[self calcRect] display:YES];
}
- (void)windowDidMove:(NSNotification *)notification
{
[self resizeWebWindow];
}

- (void)windowDidResize:(NSNotification *)notification
{
[self resizeWebWindow];
}


キャプチャ時には一旦ウィンドウを非表示にする。
- (IBAction)capture:(id)sender
{
[_web_window orderOut:nil];
   :
  // キャプチャ処理
   :
[self resizeWebWindow];
[_web_window makeKeyAndOrderFront:nil];
}


- - - -
外側のウィンドウを移動した時に Webページのウィンドウが遅れたり、重なりかたが変だったりと細かいところで問題はあるが、それらしい形になってきた。