> On Aug 10, 2019, at 10:20 PM, Kurt Bigler via Cocoa-dev 
> <cocoa-dev@lists.apple.com> wrote:
> 
> On 8/10/19 3:04:13 PM, Rob Petrovec wrote:
>>> On Aug 10, 2019, at 3:38 PM, Uli Kusterer <witness.of.teacht...@gmx.net> 
>>> wrote:
>>> 
>>>> On 10. Aug 2019, at 19:03, Rob Petrovec via Cocoa-dev 
>>>> <cocoa-dev@lists.apple.com <mailto:cocoa-dev@lists.apple.com>> wrote:
>>>> 
>>>>> On Aug 10, 2019, at 12:24 AM, Kurt Bigler via Cocoa-dev 
>>>>> <cocoa-dev@lists.apple.com <mailto:cocoa-dev@lists.apple.com>> wrote:
>>>>> 
>>>>> The NSView subclasses involved are receiving drawRect: messages but are 
>>>>> not receiving mouseDown:.
>>>>    You need to implement NSView -hitTest: to get mouseDown events.
>>> 
>>> 
>>> No, the default implementation does all you need and is perfectly fine.
>>      I’ll repeat myself, the OP is not getting mouseDown on his NSView 
>> subclass.  So it isn’t perfectly fine in this case.  If he wants mouseDown 
>> events in his NSView subclass he needs to override hitTest to return self, 
>> or whatever subview he wants to get mouseDown.  There is no avoiding it.
>>      The default implementation of NSView hitTest just loops through it’s 
>> visible subviews and calls hitTest on each one that the passed in point is 
>> inside.  It is obviously recursive.  If any of the subviews return a valid 
>> view from their implementations of -hitTest: then that valid view is 
>> returned up the call stack. Whatever view is returned from -hitTest: at the 
>> top of the call stack will get first crack at the mouseDown event.  Since 
>> NSViews don’t have subviews by default, let alone one that returns a valid 
>> view from hitTest, then the default implementation of an NSView -hitTest 
>> will return nil.  Semantics, I know...
>>      Either way, instead of going back & forth on this, why don’t you try 
>> implementing an NSView subclass without hitTest returning self and see if 
>> that view gets -mouseDown:.  Then override -hitTest in the view to return 
>> self and see that the view does get -mouseDown.  Then you will see that I am 
>> correct.  Thanks.
> 
> It is always worth trying something trivial regardless of arguments.
> 
> I implemented hitTest to return self in my NSView subclass.  It made no 
> difference.
> 
> After that, I tried having hitTest call the super method to see what it 
> returned.  For the simpler version of my window nib with only one view the 
> super method was returning self.  For the more complex version of the window 
> nib with 3 views (of the same class), my NSView subclass's hitTest got called 
> 4 times. In 2 cases the super method returned self; in 2 other cases the 
> super method returned 0.  I did not look at further details but it seems 
> likely that the default implementation actually checks whether the location 
> is in the view and returns 0 otherwise.
> 
> -Kurt

Personally, I'd check to make sure that the coordinate system for that view (or 
the underlying layer) isn't resetting it's internal origin to something other 
than {0,0}. While that shouldn't necessarily affect hit testing, there's 
something unusual about that view -- origin is offset, view is disabled, view 
doesn't accept user interaction...?

-- 
Glenn L. Austin, Computer Wizard and Race Car Driver         <><
<http://www.austinsoft.com>

_______________________________________________

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