I've run into a surprising behavior today in Leopard 10.5.8 (haven't had the opportunity to test it on Snow Leopard yet).

I have one view of class "RedView" nested inside another view "OrangeView". Both views are subclasses of NSView.

This is  the inner view's implementation of rightMouseDown:

- (void) rightMouseDown:(NSEvent*)event
{
    NSBeep();
NSLog(@"right mouse down in view %@, nextresponder %@", self, self.nextResponder);
    [super rightMouseDown:event];
}


This is the outer view's implementation:

- (void) rightMouseDown:(NSEvent*)event
{
    NSBeep();
    NSLog(@"right mouse down in view %@", self);
}

Note that the inner view's implementation of rightMouseDown: calls through to the default implementation.

I expected that a right click in the inner view would be logged by the inner view, and this is the case. However, I also expected the outer view to log the right click as well, since the inner view's implementation calls through to the default implementation, and (according to the docs) the default implementation calls the next responder's implementation, and the next responder is the outer view. But this is *not* the case.

To wit, here is the output when I right click three times in the outer view, then three times in the inner view:

2010-01-22 12:39:56.061 RightMouseTest[26543:813] right mouse down in view <OuterView: 0x1375d0> 2010-01-22 12:39:57.151 RightMouseTest[26543:813] right mouse down in view <OuterView: 0x1375d0> 2010-01-22 12:39:57.995 RightMouseTest[26543:813] right mouse down in view <OuterView: 0x1375d0> 2010-01-22 12:39:59.671 RightMouseTest[26543:813] right mouse down in view <InnerView: 0x1309c0>, nextresponder <OuterView: 0x1375d0> 2010-01-22 12:40:00.841 RightMouseTest[26543:813] right mouse down in view <InnerView: 0x1309c0>, nextresponder <OuterView: 0x1375d0> 2010-01-22 12:40:01.606 RightMouseTest[26543:813] right mouse down in view <InnerView: 0x1309c0>, nextresponder <OuterView: 0x1375d0>


As is plain to see, even though the inner view calls through to the defualt implementation, which in turn should pass control to the nextResponder, this is not happening.

For what it's worth, I also implemented otherMouseButton: in a similar way and it works as expected.

Is this a bug or what? Any insight appreciated, sample project at:

<http://codeshare.muratnkonar.com/RightMouseTest.zip>

_murat
_______________________________________________

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 arch...@mail-archive.com

Reply via email to