NSPopUpButton subclass + Tracking Rects don't generate enter/exit events
NSPopUpButton subclass + Tracking Rects don't generate enter/exit events
- Subject: NSPopUpButton subclass + Tracking Rects don't generate enter/exit events
- From: Ben Lachman <email@hidden>
- Date: Sat, 16 Feb 2008 05:01:36 -0500
Hi all. I'm trying to implement a fairly straight forward customized
version of a borderless NSPopUpButton on 10.4. All I want to do is
draw a rounded rect inside the button's frame during mouse over. So
I create a tracking rect with the the button's frame so I get enter/
exit events. However I never get any. The rect gets set correctly I
just never hear anything else from it.
Here is my pertaining code:
- (void)viewDidMoveToWindow {
// set up our tracking rect
frameTrackingRectTag = [self addTrackingRect:[self frame] owner:self
userData:nil assumeInside:NSMouseInRect([self convertPoint:[[self
window] mouseLocationOutsideOfEventStream] fromView:nil],[self frame],
[self isFlipped])];
NSLog(@"frame tracking rect: %@, frameTrackingTag: %d (inside: %@)",
NSStringFromRect([self frame]), frameTrackingRectTag, NSMouseInRect
([self convertPoint:[[self window] mouseLocationOutsideOfEventStream]
fromView:nil],[self frame],[self isFlipped]) ? @"YES" : @"NO" );
}
- (void)viewWillMoveToWindow:(NSWindow *)newWindow {
if ( [self window] && frameTrackingRectTag ) {
[self removeTrackingRect:frameTrackingRectTag];
}
}
- (void)mouseEntered:(NSEvent *)theEvent {
NSLog(@"entered");
if( [theEvent trackingNumber] == frameTrackingRectTag )
[self highlight:YES];
}
- (void)mouseExited:(NSEvent *)theEvent {
NSLog(@"exited");
if( [theEvent trackingNumber] == frameTrackingRectTag )
[self highlight:NO];
}
- (void)setFrame:(NSRect)frame {
[super setFrame:frame];
[self removeTrackingRect:frameTrackingRectTag];
frameTrackingRectTag = [self addTrackingRect:frame owner:self
userData:nil assumeInside:NSMouseInRect([self convertPoint:[[self
window] mouseLocationOutsideOfEventStream] fromView:nil],[self frame],
[self isFlipped])];
}
Anyone see anything wrong? Most of this code is yanked straight form
Apple's docs. However, I haven't written tracking rect code in a
while so I assume I am missing something.
Thanks!
->Ben
--
Ben Lachman
Acacia Tree Software
http://acaciatreesoftware.com
email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden