I don't see a problem in your drawRect: code, so it'd be in something you haven't posted. Perhaps you could post a sample application?
One possibility is that your -isOpaque method returns YES, so the view system thinks it doesn't have to redraw your superview before asking you to draw. If you're subclassing NSView, you'd have to opt-in to return YES from -isOpaque, but if you're subclassing a deeper AppKit view class, it may already be marked as opaque. -Ken On Fri, Feb 29, 2008 at 11:55 AM, Ben Lachman <[EMAIL PROTECTED]> wrote: > Well, I finally was able to get this solved, but not to my > satisfaction. What I'm having to do is this: > > if( ! NSContainsRect(rect, [self visibleRect]) && ! NSEqualRects > (rect,[self visibleRect]) ) { > [self setNeedsDisplayInRect:[self bounds]]; > [self displayIfNeededIgnoringOpacity]; > > return; > } > > which in my opinion is a really dirt hack and I'd love to find a > better (real?) solution. I'm pretty sure I'm just drawing twice > between flushing the buffer, but I'm not sure how to debug it or > prevent it. Anyone run into something like this? > > Thanks, > > ->Ben > -- > Ben Lachman > Acacia Tree Software > > http://acaciatreesoftware.com > > [EMAIL PROTECTED] > 740.590.0009 > > > > > On Feb 21, 2008, at 1:23 AM, Ben Lachman wrote: > > > I have a text view that contains a custom view which in turn > > contains an imageview and draws an image and a drop shadow. During > > selection the bits of the view which are not fully opaque (the > > shadow and the image) sometimes draw twice, producing a darker > > shadow than I want. This seems to alternate with normal looking > > drawing, so when I select text the shadow flickers between regular > > and darker along with the other non-opaque bits in the image. My > > method for drawing the shadow looks like this: > > > > - (void)drawRect:(NSRect)rect { > > NSAffineTransform *xform = [NSAffineTransform transform]; > > > > [NSGraphicsContext saveGraphicsState]; > > > > [xform translateXBy:imageViewOrigin.x yBy:imageViewOrigin.y]; > > [xform rotateByDegrees:rotation]; > > [xform concat]; > > > > NSShadow *imageShadow = [[NSShadow alloc] init]; > > [imageShadow setShadowOffset:NSMakeSize(0,-5)]; > > [imageShadow setShadowBlurRadius:5]; > > [imageShadow setShadowColor:[NSColor blackColor]]; > > > > [imageShadow set]; > > [[NSColor whiteColor] set]; > > [NSBezierPath fillRect:[imageView bounds]]; > > [NSGraphicsContext restoreGraphicsState]; > > > > [imageShadow release]; > > } > > > > I should note that the selection area does not overlap the view > > (custom shaped text container). Anyone have any ideas as to what > > might be going wrong? > > > _______________________________________________ > > 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/kenferry%40gmail.com > > This email sent to [EMAIL PROTECTED] > _______________________________________________ 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]