setContentRect: is only called when opening a new window through JavaScript, and only with Safari 2.

In general, these methods are not notifications -- they are requests. So, for example, a user resize of the window may change the WebView's contentRect but, because the user -- not WebKit -- requested the change, you will not receive a setContentRect: call.

NSView has notifications about frame and bounds changes. Perhaps those will solve your problem. See, for example, +[NSView setPostsFrameChangedNotifications:].

Geoff

On Jul 27, 2007, at 12:37 PM, piet wrote:

I need to know when the contentRect of a WebView changes so I added a WebUIDelegate listening to setContentRect:.

Problem: setContentRect: is never called.

I added more methods to the WebUIDelegate, listening to show/close, focus/unfocus, set status text, set frame/content and mouse-move, but none of them gets called except for mouse-move (mouseDidMoveOverElement:).

Is there anything wrong with my code? I tested with both Safari 2 and Safari 3. For a minimal testcase, you can add the following code to /Developer/Examples/WebKit/MiniBrowser/MyDocument.m, line 263. The only output to the console comes from the NSLog() in mouseDidMoveOverElement:

- (void)webViewClose:(WebView *)sender
{
    NSLog(@"WebView UI delegate:webViewClose");
}

- (void)webViewFocus:(WebView *)sender
{
    NSLog(@"WebView UI delegate:webViewFocus");
}

- (void)webViewUnfocus:(WebView *)sender
{
    NSLog(@"WebView UI delegate:webViewUnfocus");
}

- (void)webView:(WebView *)sender setStatusText:(NSString *)text
{
    NSLog(@"WebView UI delegate:setStatusText %@", text);
}

- (void)webView:(WebView *)sender setFrame:(NSRect)frame
{
NSLog(@"WebView UI delegate:setFrame w=%f h=%f", frame.size.width, frame.size.height);
}

- (void)webView:(WebView *)sender setContentRect:(NSRect)contentRect
{
NSLog(@"WebView UI delegate:setContentRect w=%f h=%f", contentRect.size.width, contentRect.size.height);
}

- (void)webView:(WebView *)sender mouseDidMoveOverElement: (NSDictionary *)elementInformation modifierFlags:(unsigned int) modifierFlags
{
    NSLog(@"WebView UI delegate:mouseDidMoveOverElement");
}


Get the free Yahoo! toolbar and rest assured with the added security of spyware protection.
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to