From f56411fde197481c00ad950e1a545452d47efa55 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Wed, 2 Nov 2016 09:34:40 -0400 Subject: [PATCH] Use performWindowDragWithEvent: if available. --- darwin/winmoveresize.m | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/darwin/winmoveresize.m b/darwin/winmoveresize.m index 4b307016..9145b7bb 100644 --- a/darwin/winmoveresize.m +++ b/darwin/winmoveresize.m @@ -41,7 +41,6 @@ void onMoveDrag(struct onMoveDragParams *p, NSEvent *e) [p->w setFrameOrigin:frame.origin]; } -// LONGTERM FUTURE -[NSWindow performWindowDragWithEvent:] would be better but that's 10.11-only void doManualMove(NSWindow *w, NSEvent *initialEvent) { __block struct onMoveDragParams mdp; @@ -49,6 +48,13 @@ void doManualMove(NSWindow *w, NSEvent *initialEvent) BOOL (^handleEvent)(NSEvent *e); __block BOOL done; + // this is only available on 10.11 and newer (LONGTERM FUTURE) + // but use it if available; this lets us use the real OS dragging code, which means we can take advantage of OS features like Spaces + if ([w respondsToSelector:@selector(performWindowDragWithEvent:)]) { + [((id) w) performWindowDragWithEvent:initialEvent]; + return; + } + mdp.w = w; mdp.initialFrame = [mdp.w frame]; mdp.initialPoint = makeIndependent([initialEvent locationInWindow], mdp.w);