diff --git a/gdk/quartz/gdkdrawable-quartz.c b/gdk/quartz/gdkdrawable-quartz.c index ac4887a58..1bbf7c92a 100644 --- a/gdk/quartz/gdkdrawable-quartz.c +++ b/gdk/quartz/gdkdrawable-quartz.c @@ -359,10 +359,17 @@ gdk_quartz_draw_drawable (GdkDrawable *drawable, */ if (drawable == (GdkDrawable *)window_impl) { - [window_impl->view scrollRect:NSMakeRect (xsrc, ysrc, width, height) - by:NSMakeSize (xdest - xsrc, ydest - ysrc)]; + NSRect rect = NSMakeRect (xsrc, ysrc, width, height); + NSSize offset = NSMakeSize (xdest - xsrc, ydest - ysrc); + [window_impl->view scrollRect:rect by:offset]; + /* The scrollRect only "takes effect" on the next redraw, we must + * set that the offset rectangle needs display. + */ + rect.origin.x += offset.width; + rect.origin.y += offset.height; + [window_impl->view setNeedsDisplayInRect:rect]; } else g_warning ("Drawing with window source != dest is not supported");