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-devel
mailing list