On Jan 7, 2013, at 9:16 AM, Martin Hewitson <martin.hewit...@aei.mpg.de> wrote:
> > On 7, Jan, 2013, at 05:52 PM, Kyle Sluder <k...@ksluder.com> wrote: > >> On Jan 7, 2013, at 2:48 AM, Martin Hewitson <martin.hewit...@aei.mpg.de> >> wrote: >> >>> Actually, at the risk of having a conversation with myself, I've narrowed >>> the issue down to the actions I'm taking within my override of -drawPage:. >>> Essentially what I'm aiming at is having a focus ring on the PDFView. I do >>> this in my PDFView subclass: >>> >>> - (void)drawPage:(PDFPage *)page { >>> [super drawPage:page]; >>> // focussed? >>> if ([[self window] firstResponder] == self && [NSApp isActive]) { >>> [[self superview] lockFocus]; >>> NSRect fr = [self frame]; >>> NSSetFocusRingStyle(NSFocusRingOnly); >>> [[NSBezierPath bezierPathWithRect:fr] fill]; >>> [[self superview] unlockFocus]; >>> } >>> } >> >> This sounds extremely iffy to me. You're dirtying regions of your window >> that overlap other views in the middle of a recursive -drawRect:. I'm >> surprised this doesn't crash or spin infinitely. > > This solution was advised on this list (see thread "PDFView focus ring" from > Feb 2012), but it certainly doesn't seem to play nicely with my app. What's > strange is that it doesn't cause problems in a very basic test app.... I'm still not sure this is a good approach to take. The drawing machinery is pretty optimized. It's easy to do unsafe things that behave perfectly fine in certain limited circumstances t have deleterious effects in others. Locking focus on your superview while you're in the middle of a lockFocus operation strikes me as one of those unsafe things that might usually work until it doesn't. Is there any particular reason you can't use the old -setKeyboardFocusRingNeedsDisplayInRect: method and draw your focus ring in your own graphics context in -drawRect:? --Kyle Sluder _______________________________________________ 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: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com