Fixed scroll bug in ScrollWindowEx32 which caused garbage on screen
outside desktop window with gtwin.exe (Dutch banking program).
diff --git a/windows/scroll.c b/windows/scroll.c
index b67d00a..9f9062d 100644
--- a/windows/scroll.c
+++ b/windows/scroll.c
@@ -354,16 +354,18 @@
if( dy > 0 ) dst.y = (src.y = dc->w.DCOrgY + cliprc.top) + dy;
else src.y = (dst.y = dc->w.DCOrgY + cliprc.top) - dy;
- if( bUpdate ) /* handles non-Wine windows hanging over the scrolled area */
- TSXSetGraphicsExposures( display, dc->u.x.gc, True );
-
- TSXSetFunction( display, dc->u.x.gc, GXcopy );
- TSXCopyArea( display, dc->u.x.drawable, dc->u.x.drawable, dc->u.x.gc,
- src.x, src.y, cliprc.right - cliprc.left - abs(dx),
- cliprc.bottom - cliprc.top - abs(dy), dst.x, dst.y );
-
- if( bUpdate )
- TSXSetGraphicsExposures( display, dc->u.x.gc, False );
+ if ((cliprc.right - cliprc.left > abs(dx)) &&
+ (cliprc.bottom - cliprc.top > abs(dy)))
+ {
+ if (bUpdate) /* handles non-Wine windows hanging over the scrolled area */
+ TSXSetGraphicsExposures( display, dc->u.x.gc, True );
+ TSXSetFunction( display, dc->u.x.gc, GXcopy );
+ TSXCopyArea( display, dc->u.x.drawable, dc->u.x.drawable, dc->u.x.gc,
+ src.x, src.y, cliprc.right - cliprc.left - abs(dx),
+ cliprc.bottom - cliprc.top - abs(dy), dst.x, dst.y );
+ if (bUpdate)
+ TSXSetGraphicsExposures( display, dc->u.x.gc, False );
+ }
if( dc->w.hVisRgn && bUpdate )
{