|
From: | Lundberg, Johannes |
Subject: | Re: NSView draw order messed up |
Date: | Fri, 4 Oct 2013 17:25:06 +0900 |
Sorry, the problem here is that GNUstep follows the specification. There it states:
"This method, in setting the frame rectangle, repositions and resizes the receiver within the coordinate system of its superview. It neither redisplays the receiver nor marks it as needing display. You must do this yourself with
display
orsetNeedsDisplay:
."
Now we will need to assert that the actual implementation on Cocoa behaves differently before we change our code.Fred
On the roadAnother things I noticed is that when moving or scaling a NSView by changing the frame you have to call [view setNeedsDisplay:YES] before and after changing the frame (this is not needed on OSX/iOS). If you only call setNeedsDisplay after changing the frame the old frame is not redrawn and causes a trail of remaining pixels where the view has been. This could be fixed by adding functionality to setFrame, couldn't it? How if we keep the old frame in a private variable and redraw both frames when call to redraw is made?
On Thu, Oct 3, 2013 at 8:20 PM, Matt Rice <ratmice@gmail.com> wrote:On Wed, Oct 2, 2013 at 5:51 PM, Lundberg, JohannesUnfortunate because this problem is likely unapparent for
<johannes@brilliantservice.co.jp> wrote:
> Thanks all for your replies.
>
> Matt is correct. A quick test with this code after subviews has gotten new
> values (calculated with some analytic formula)
>
> for each subview
> {
> subview.frame = NSMakeRect((int)subview.frame.origin.x,
> (int)subview.frame.origin.y, (int)subview.frame.size.width,
> (int)subview.frame.size.height);
> }
>
> fixes the problem.
non-overlapping views, causing unnecessary redraws.
_______________________________________________
Discuss-gnustep mailing list
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep
[Prev in Thread] | Current Thread | [Next in Thread] |