wine/ windows/scroll.c dlls/x11drv/scroll.c dl ...

Rein Klazes wijn at wanadoo.nl
Mon Mar 28 06:14:44 CST 2005


On Sun, 27 Mar 2005 11:34:12 -0500, you wrote:

> On Fri, Mar 25, 2005 at 11:11:04AM -0600, Alexandre Julliard wrote:
> > Modified files:
> > 	windows        : scroll.c 
> > 	dlls/x11drv    : scroll.c 
> > 	dlls/user/tests: win.c msg.c 
> > 
> > Log message:
> > 	Rein Klazes <wijn at wanadoo.nl>
> > 	ScrollDC and X11DRV_SCROLLDC should scroll only pixels coming from
> > 	within the visible region, clipped to the clipping region if that
> > 	exists. Add the destination of pixels coming from the outside of this
> > 	region to the update region. With tests that depend on this.
> > 
> > Patch: http://cvs.winehq.org/patch.py?id=16854
> 
> Unfortunately, this patch doesn't fix bug 1091:
>     http://bugs.winehq.org/show_bug.cgi?id=1091

If I get this correctly, your bug#1091 has to do with scrolling a window
that already has an invalidated region before the scroll. None of my
patches would affect that (making your deduction more likely true).

Attached is a patch that solves Micha's scroll problem, also discussed
under bug #1091. It also does not change the handling of an existing
invalidated region.


Changelog:

windows		: scroll.c
dlls/user/tests	: msg.c

ScrollWindow should call ScrollWindowEx with the SW_ERASE flag set. With
conformance test.

Rein.
-------------- next part --------------
--- wine/windows/scroll.c	2005-03-25 20:54:05.000000000 +0100
+++ mywine/windows/scroll.c	2005-03-28 13:48:11.000000000 +0200
@@ -182,7 +182,7 @@ BOOL WINAPI ScrollWindow( HWND hwnd, INT
     return
         (ERROR != ScrollWindowEx( hwnd, dx, dy, rect, clipRect, 0, NULL,
                                     (rect ? 0 : SW_SCROLLCHILDREN) |
-                                    SW_INVALIDATE ));
+                                    SW_INVALIDATE | SW_ERASE ));
 }
 
 /*************************************************************************
--- wine/dlls/user/tests/msg.c	2005-03-25 20:52:38.000000000 +0100
+++ mywine/dlls/user/tests/msg.c	2005-03-28 13:54:47.000000000 +0200
@@ -5471,6 +5471,14 @@ static void test_scrollwindowex(void)
     while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
     ok_sequence(ScrollWindowPaint1, "ScrollWindowEx", 0);
 
+    /* now scroll with ScrollWindow() */
+    trace("start scroll with ScrollWindow\n");
+    ScrollWindow( hwnd, 5, 5, NULL, NULL);
+    trace("end scroll\n");
+    flush_sequence();
+    while (PeekMessage( &msg, 0, 0, 0, PM_REMOVE )) DispatchMessage( &msg );
+    ok_sequence(ScrollWindowPaint1, "ScrollWindow", 0);
+
     ok(DestroyWindow(hchild), "failed to destroy window\n");
     ok(DestroyWindow(hwnd), "failed to destroy window\n");
     flush_sequence();


More information about the wine-patches mailing list