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]

Reply via email to