Difference between revisions of "NSView"
Jump to navigation
Jump to search
| Line 1: | Line 1: | ||
| − | NSView is . | + | NSView is an [AppKit] class. It's role as a superclass is to provide most of the core functionality and services that specific GUI classes (such as NSButton or NSMenuView) use to display/render and handle events. |
== Code chunks == | == Code chunks == | ||
Revision as of 22:07, 31 August 2005
NSView is an [AppKit] class. It's role as a superclass is to provide most of the core functionality and services that specific GUI classes (such as NSButton or NSMenuView) use to display/render and handle events.
Code chunks
Dragging objects
Note: following code can be somehow optimised by adding small 0.01s delay or something like that. If someone knows how to, please write it here.
Implement the mouseDown: method:
- (void)mouseDown:(NSEvent *)event
{
NSPoint oldPoint;
NSEvent *presentEvent;
NSEventType eventType = [event type];
unsigned int eventMask = NSLeftMouseDownMask | NSLeftMouseUpMask
| NSLeftMouseDraggedMask;
NSPoint point;
float dx,dy;
NSPoint location;
point = [self convertPoint:[event locationInWindow] fromView:nil];
oldPoint = point;
do
{
while (event && eventType != NSLeftMouseUp)
{
presentEvent = event;
event = [NSApp nextEventMatchingMask: eventMask
untilDate: [NSDate distantPast]
inMode: NSEventTrackingRunLoopMode
dequeue: YES];
eventType = [event type];
}
point = [self convertPoint: [presentEvent locationInWindow]
fromView: nil];
dx = point.x - oldPoint.x;
dy = point.y - oldPoint.y;
[self scrollRectToVisible:frame];
Add code here:
//
// here move the dragged thing by: dx, dy
// ....
Then finish the loop:
[self setNeedsDisplay:YES];
oldPoint = point;
if (eventType == NSLeftMouseUp)
{
break;
}
event = [NSApp nextEventMatchingMask: eventMask
untilDate: nil
inMode: NSEventTrackingRunLoopMode
dequeue: YES];
eventType = [event type];
} while (eventType != NSLeftMouseUp);
[self setNeedsDisplay:YES];
}