Just when I think I've seen everything....

Code:
    NSLog(@"myTextView is a %@", [myTextView class]) ;
NSLog(@"Before, its frame is: %@", NSStringFromRect([myTextView frame])) ;
    [myTextView setNeedsDisplay:YES] ;
NSLog(@" After, its frame is: %@", NSStringFromRect([myTextView frame])) ;

Console Output:
    myTextView is a NSTextView
    Before, its frame is: {{17, 63}, {250, 75}}
     After, its frame is: {{17, 123}, {250, 45}}

Why did -setNeedsDisplay: move my text view's y-origin up by 60 and reduce its height by 30?

A possible answer [1] is that Cocoa does "not support" views overlapping one another. Indeed, there are are sibling views that may be overlapping at this point.

The code above is part of a method which "lays out" a window which I create programatically. It is an enhanced NSAlert that, besides having an icon, some text and three buttons, can have a progress bar, editable text fields with labels, pulldown menus, checkbox, etc. I use it for all of my alerts, errors, and more. However, since the presence and size of all these subviews changes dynamically, I have this method which, just prior to display, scans horizontally and then vertically and sets all the frames. It's a handy class, and cool when the layout works, which it does about 99% of the time. I inserted that -setNeedsDisplay while troubleshooting one of the 1% cases and WHOA the frame got whacked. I suspect that the same frame-whacking mechanism is causing the actual problem I need to solve.

Also, I wonder if this is might be related to -[NSTextView setNeedsDisplayInRect:avoidAdditionalLayout:]. But the documentation seems to indicate that "layout" in this case has to do with word positioning and line wrapping.

Nowhere can I find any documentation that setNeedsDisplay: should whack an NSView's frame. This is all in Leopard, so it's not some old long-fixed bug.

Jerry

[1] http://www.cocoabuilder.com/archive/message/cocoa/2006/10/17/172951


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to