On Jan 8, 2013, at 09:21 AM, Kyle Sluder <k...@ksluder.com> wrote: > 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:?
Maybe not. I just didn't know about this, but I will read up on it. However, as far as my tests show, -drawRect: is never called on PDFView. Cheers, Martin > > --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