This is MouseView.m in view mode; [Download] [Up]
/* * MouseView -- John Glover, adapted from MouseTracker by Randy Nelson * An abstract class that manages a modal loop for tracking the mouse * */ #import "MouseView.h" @implementation MouseView - setTrackingRect:sender { NXRect myFrame = frame; [[self superview] convertRect:&myFrame toView:nil]; [window setTrackingRect:&myFrame inside:NO owner:self tag:23 left:NO right:NO]; return self; } - mouseDown:(NXEvent *)e { NXPoint startPoint = e->location, nextPoint; int looping = YES; int oldMask = [window addToEventMask:NX_MOUSEDRAGGEDMASK]; /* do first mouse down action */ [self convertPoint:&startPoint fromView:nil]; [self mouseDownAction:&startPoint]; while (looping){ e = [NXApp getNextEvent:NX_MOUSEUPMASK|NX_MOUSEDRAGGEDMASK]; nextPoint = e->location; [self convertPoint:&nextPoint fromView:nil]; if(e->type == NX_MOUSEDRAGGED){ [superview autoscroll:e]; /* do continuing mouse dragged action */ [self mouseDraggedAction:&nextPoint]; } else{ looping = NO; /* do mouse up action */ [self mouseUpAction:&nextPoint]; } } [window setEventMask:oldMask]; return self; } - mouseEntered:(NXEvent *)e { return [super mouseEntered:e]; } - mouseExited:(NXEvent *)e { return [super mouseExited:e]; } - mouseDownAction:(NXPoint *)currentLocation { return self; } - mouseDraggedAction:(NXPoint *)currentLocation { return self; } - mouseUpAction:(NXPoint *)currentLocation { return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.