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

Reply via email to