|
|
@@ -36,7 +36,8 @@ |
|
|
|
defer:(BOOL)flag; |
|
|
|
- (void) setPuglview:(PuglView*)view; |
|
|
|
- (BOOL) windowShouldClose:(id)sender; |
|
|
|
- (BOOL) canBecomeKeyWindow; |
|
|
|
- (void) becomeKeyWindow:(id)sender; |
|
|
|
- (BOOL) canBecomeKeyWindow:(id)sender; |
|
|
|
@end |
|
|
|
|
|
|
|
@implementation PuglWindow |
|
|
@@ -50,7 +51,8 @@ |
|
|
|
styleMask:(NSClosableWindowMask | |
|
|
|
NSTitledWindowMask | |
|
|
|
NSResizableWindowMask) |
|
|
|
backing:NSBackingStoreBuffered defer:NO]; |
|
|
|
backing:NSBackingStoreBuffered |
|
|
|
defer:NO]; |
|
|
|
|
|
|
|
[result setAcceptsMouseMovedEvents:YES]; |
|
|
|
[result setLevel: CGShieldingWindowLevel() + 1]; |
|
|
@@ -71,21 +73,19 @@ |
|
|
|
return YES; |
|
|
|
} |
|
|
|
|
|
|
|
- (BOOL)canBecomeKeyWindow |
|
|
|
- (void)becomeKeyWindow:(id)sender |
|
|
|
{ |
|
|
|
return YES; |
|
|
|
printf("becomeKeyWindow\n"); |
|
|
|
} |
|
|
|
|
|
|
|
@end |
|
|
|
|
|
|
|
void |
|
|
|
puglDisplay(PuglView* view) |
|
|
|
// this allows spacebar (for example) to start/stop the transport |
|
|
|
- (BOOL) canBecomeKeyWindow |
|
|
|
{ |
|
|
|
if (view->displayFunc) { |
|
|
|
view->displayFunc(view); |
|
|
|
} |
|
|
|
return NO; |
|
|
|
} |
|
|
|
|
|
|
|
@end |
|
|
|
|
|
|
|
@interface PuglOpenGLView : NSOpenGLView |
|
|
|
{ |
|
|
|
int colorBits; |
|
|
@@ -105,6 +105,7 @@ puglDisplay(PuglView* view) |
|
|
|
- (void) mouseDragged:(NSEvent*)event; |
|
|
|
- (void) mouseDown:(NSEvent*)event; |
|
|
|
- (void) mouseUp:(NSEvent*)event; |
|
|
|
- (void) rightMouseDragged:(NSEvent*)event; |
|
|
|
- (void) rightMouseDown:(NSEvent*)event; |
|
|
|
- (void) rightMouseUp:(NSEvent*)event; |
|
|
|
- (void) keyDown:(NSEvent*)event; |
|
|
@@ -187,6 +188,10 @@ getModifiers(PuglView* view, NSEvent* ev) |
|
|
|
|
|
|
|
view->event_timestamp_ms = fmod([ev timestamp] * 1000.0, UINT32_MAX); |
|
|
|
|
|
|
|
double ts = [ev timestamp] * 1000.0; |
|
|
|
ts = (uint32)ts % 500000; //ridiculously large vals won't fit |
|
|
|
view->event_timestamp_ms = ts; |
|
|
|
|
|
|
|
unsigned mods = 0; |
|
|
|
mods |= (modifierFlags & NSShiftKeyMask) ? PUGL_MOD_SHIFT : 0; |
|
|
|
mods |= (modifierFlags & NSControlKeyMask) ? PUGL_MOD_CTRL : 0; |
|
|
@@ -239,6 +244,15 @@ getModifiers(PuglView* view, NSEvent* ev) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
- (void) rightMouseDragged:(NSEvent*)event |
|
|
|
{ |
|
|
|
if (puglview->motionFunc) { |
|
|
|
NSPoint loc = [event locationInWindow]; |
|
|
|
puglview->mods = getModifiers(puglview, event); |
|
|
|
puglview->motionFunc(puglview, loc.x, puglview->height - loc.y); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
- (void) mouseDown:(NSEvent*)event |
|
|
|
{ |
|
|
|
if (puglview->mouseFunc) { |
|
|
@@ -385,6 +399,14 @@ puglDestroy(PuglView* view) |
|
|
|
free(view); |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|
puglDisplay(PuglView* view) |
|
|
|
{ |
|
|
|
if (view->displayFunc) { |
|
|
|
view->displayFunc(view); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
PuglStatus |
|
|
|
puglProcessEvents(PuglView* view) |
|
|
|
{ |
|
|
|