diff --git a/ChangeLog b/ChangeLog index cf54f103b1..217054a9d1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-12-20 Richard Hult + + Merged from trunk: + + * gdk/quartz/GdkQuartzWindow.c: + * gdk/quartz/GdkQuartzWindow.h: Make manual resizing smoother by + processing events after changing the size. + 2007-12-17 Kristian Rietveld Merge from trunk. diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzWindow.c index 220531604f..b5c751d443 100644 --- a/gdk/quartz/GdkQuartzWindow.c +++ b/gdk/quartz/GdkQuartzWindow.c @@ -301,9 +301,11 @@ float dx, dy; NSSize min_size; - if (!inManualResize) + if (!inManualResize || inTrackManualResize) return NO; + inTrackManualResize = YES; + currentLocation = [self convertBaseToScreen:[self mouseLocationOutsideOfEventStream]]; currentLocation.x -= initialResizeFrame.origin.x; currentLocation.y -= initialResizeFrame.origin.y; @@ -332,6 +334,12 @@ [self setFrame:newFrame display:YES]; + /* Let the resizing be handled by GTK+. */ + if (g_main_context_pending (NULL)) + g_main_context_iteration (NULL, FALSE); + + inTrackManualResize = NO; + return YES; } diff --git a/gdk/quartz/GdkQuartzWindow.h b/gdk/quartz/GdkQuartzWindow.h index 14c4d5a7aa..37271790aa 100644 --- a/gdk/quartz/GdkQuartzWindow.h +++ b/gdk/quartz/GdkQuartzWindow.h @@ -28,6 +28,7 @@ /* Manually triggered move/resize (not by the window manager) */ BOOL inManualMove; BOOL inManualResize; + BOOL inTrackManualResize; NSPoint initialMoveLocation; NSPoint initialResizeLocation; NSRect initialResizeFrame;