[Clickdrag-cvs] ClickDrag ClickDragWindow.h,NONE,1.1 ClickDragWindow.m,NONE,1.1 ClickDrag.h,1.1,1.2
Status: Pre-Alpha
Brought to you by:
stevecheckoway
|
From: Steve C. <ste...@us...> - 2004-06-15 12:12:54
|
Update of /cvsroot/clickdrag/ClickDrag In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv890 Modified Files: ClickDrag.h ClickDrag.m Added Files: ClickDragWindow.h ClickDragWindow.m Log Message: Split out ClickDragWindow. --- NEW FILE: ClickDragWindow.h --- Index: ClickDrag.m =================================================================== RCS file: /cvsroot/clickdrag/ClickDrag/ClickDrag.m,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- ClickDrag.m 15 Jun 2004 07:41:30 -0000 1.1 +++ ClickDrag.m 15 Jun 2004 12:12:44 -0000 1.2 @@ -1,179 +1,184 @@ #import "ClickDrag.h" +#import "ClickDragWindow.h" @implementation ClickDrag + (void) load { [ClickDragWindow poseAsClass:[NSWindow class]]; + gClickDrag = [[ClickDrag alloc] init]; } -@end -@implementation ClickDragWindow -- (void) sendEvent:(NSEvent *)event +- (id) init +{ + mDragging = NO; + mResizing = NO; + return self; +} + +- (BOOL) handleEvent:(NSEvent *)event forWindow:(NSWindow *)window { - static BOOL dragging = NO; - static BOOL resizing = NO; - static int x, y; - static BOOL fromBottom, fromTop, fromRight, fromLeft; NSEventType type = [event type]; NSPoint location; NSRect rect; NSSize size; int deltaWidth; int deltaHeight; - + switch (type) { case NSLeftMouseDown: - if (resizing) - return; - if (([event modifierFlags] & NSAlternateKeyMask) != NSAlternateKeyMask) + if (mResizing) break; - dragging = YES; + if (([event modifierFlags] & NSAlternateKeyMask) != NSAlternateKeyMask) + return NO; + mDragging = YES; location = [event locationInWindow]; - x = location.x; - y = location.y; + mX = location.x; + mY = location.y; [[NSCursor closedHandCursor] push]; - return; + break; case NSLeftMouseUp: - if (dragging) + if (mDragging) { [NSCursor pop]; - dragging = NO; + mDragging = NO; } - break; + return NO; case NSLeftMouseDragged: - if (!dragging) - break; + if (!mDragging) + return NO; location = [NSEvent mouseLocation]; - location.x -= x; - location.y -= y; - [self setFrameOrigin:location]; - return; + location.x -= mX; + location.y -= mY; + [window setFrameOrigin:location]; + break; case NSRightMouseDown: - if (dragging) - return; - if (([self styleMask] & NSResizableWindowMask) + if (mDragging) + break; + if (([window styleMask] & NSResizableWindowMask) != NSResizableWindowMask) { - return; + break; } if (([event modifierFlags] & NSAlternateKeyMask) != NSAlternateKeyMask) - break; - resizing = YES; + return NO; + mResizing = YES; location = [event locationInWindow]; - x = location.x; - y = location.y; - rect = [self frame]; + mX = location.x; + mY = location.y; + rect = [window frame]; if (location.y < rect.size.height / 3) { - fromBottom = YES; - fromTop = NO; + mFromBottom = YES; + mFromTop = NO; } else if (location.y > 2 * rect.size.height / 3) { - fromBottom = NO; - fromTop = YES; + mFromBottom = NO; + mFromTop = YES; } else { - fromBottom = NO; - fromTop = NO; + mFromBottom = NO; + mFromTop = NO; } if (location.x < rect.size.width / 3) { - fromLeft = YES; - fromRight = NO; + mFromLeft = YES; + mFromRight = NO; } else if (location.x > 2 * rect.size.width / 3) { - fromLeft = NO; - fromRight = YES; + mFromLeft = NO; + mFromRight = YES; } else { - fromLeft = NO; - fromRight = NO; + mFromLeft = NO; + mFromRight = NO; } - if (!(fromLeft || fromRight || fromTop || fromBottom)) + if (!(mFromLeft || mFromRight || mFromTop || mFromBottom)) { - fromRight = YES; - fromBottom = YES; + mFromRight = YES; + mFromBottom = YES; } - if (fromTop) + if (mFromTop) { - if (fromLeft || fromRight) + if (mFromLeft || mFromRight) [[NSCursor crosshairCursor] push]; else [[NSCursor resizeUpCursor] push]; } - else if (fromBottom) + else if (mFromBottom) { - if (fromLeft || fromRight) + if (mFromLeft || mFromRight) [[NSCursor crosshairCursor] push]; else [[NSCursor resizeDownCursor] push]; } - else if (fromLeft) + else if (mFromLeft) [[NSCursor resizeLeftCursor] push]; else [[NSCursor resizeRightCursor] push]; - return; + break; case NSRightMouseUp: - if (resizing) + if (mResizing) { - resizing = NO; + mResizing = NO; [NSCursor pop]; } - break; + return NO; case NSRightMouseDragged: - if (!resizing) - break; + if (!mResizing) + return NO; location = [event locationInWindow]; - deltaWidth = location.x - x; - deltaHeight = y - location.y; - size = [self resizeIncrements]; + deltaWidth = location.x - mX; + deltaHeight = mY - location.y; + size = [window resizeIncrements]; deltaWidth /= size.width; deltaWidth *= size.width; deltaHeight /= size.height; deltaHeight *= size.height; - rect = [self frame]; - x = location.x; - y = location.y; - if (fromBottom) + rect = [window frame]; + mX = location.x; + mY = location.y; + if (mFromBottom) { rect.origin.y -= deltaHeight; rect.size.height += deltaHeight; - y += deltaHeight; + mY += deltaHeight; } - else if (fromTop) + else if (mFromTop) rect.size.height -= deltaHeight; - if (fromLeft) + if (mFromLeft) { rect.origin.x += deltaWidth; rect.size.width -= deltaWidth; - x -= deltaWidth; + mX -= deltaWidth; } - else if (fromRight) + else if (mFromRight) rect.size.width += deltaWidth; - size = [self minSize]; + size = [window minSize]; rect.size.height = MAX(rect.size.height, size.height); rect.size.width = MAX(rect.size.width, size.width); - size = [self maxSize]; + size = [window maxSize]; rect.size.height = MIN(rect.size.height, size.height); rect.size.width = MIN(rect.size.width, size.width); - [self setFrame:rect display:YES animate:NO]; - return; - default: + [window setFrame:rect display:YES animate:NO]; break; + default: + return NO; } - [super sendEvent:event]; + return YES; } @end +ClickDrag *gClickDrag; + /* * Copyright (c) 2004 Steve Checkoway * --- NEW FILE: ClickDragWindow.m --- Index: ClickDrag.h =================================================================== RCS file: /cvsroot/clickdrag/ClickDrag/ClickDrag.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- ClickDrag.h 15 Jun 2004 07:41:30 -0000 1.1 +++ ClickDrag.h 15 Jun 2004 12:12:44 -0000 1.2 @@ -1,10 +1,16 @@ #import <Cocoa/Cocoa.h> -@interface ClickDrag : NSObject { } +@interface ClickDrag : NSObject +{ + BOOL mDragging; + BOOL mResizing; + BOOL mFromBottom, mFromTop, mFromRight, mFromLeft; + int mX, mY; +} +- (BOOL) handleEvent:(NSEvent *)event forWindow:(NSWindow *)window; @end -@interface ClickDragWindow : NSWindow { } -@end +extern ClickDrag *gClickDrag; /* * Copyright (c) 2004 Steve Checkoway |