diff --git a/gdk/quartz/GdkQuartzNSWindow.c b/gdk/quartz/GdkQuartzNSWindow.c index fafc2a8238..76a759ccc0 100644 --- a/gdk/quartz/GdkQuartzNSWindow.c +++ b/gdk/quartz/GdkQuartzNSWindow.c @@ -114,10 +114,15 @@ switch ([event type]) { case NSLeftMouseUp: + { + double time = ((double)[event timestamp]) * 1000.0; + + _gdk_quartz_events_break_all_grabs (time); inManualMove = NO; inManualResize = NO; inMove = NO; break; + } case NSLeftMouseDragged: if ([self trackManualMove] || [self trackManualResize]) @@ -313,6 +318,11 @@ return YES; } +-(BOOL)isInManualResize +{ + return inManualResize; +} + -(void)beginManualMove { NSRect frame = [self frame]; diff --git a/gdk/quartz/GdkQuartzNSWindow.h b/gdk/quartz/GdkQuartzNSWindow.h index df691ffe18..b456ff7c71 100644 --- a/gdk/quartz/GdkQuartzNSWindow.h +++ b/gdk/quartz/GdkQuartzNSWindow.h @@ -36,6 +36,7 @@ -(BOOL)isInMove; -(void)beginManualMove; -(BOOL)trackManualMove; +-(BOOL)isInManualResize; -(void)beginManualResize; -(BOOL)trackManualResize; -(void)showAndMakeKey:(BOOL)makeKey; diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index 3cb249f1bc..94064c0de9 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -1241,6 +1241,12 @@ gdk_event_translate (GdkEvent *event, return FALSE; } + /* Also when in a manual resize, we ignore events so that these are + * pushed to GdkQuartzWindow's sendEvent handler. + */ + if ([(GdkQuartzWindow *)nswindow isInManualResize]) + return FALSE; + /* Find the right GDK window to send the event to, taking grabs and * event masks into consideration. */