Module: wine Branch: master Commit: 4bb337fb635fc16edf08b513d283a746185795d1 URL: https://source.winehq.org/git/wine.git/?a=commit;h=4bb337fb635fc16edf08b513d...
Author: Piotr Caban piotr@codeweavers.com Date: Thu Mar 18 16:06:47 2021 +0100
user32: Add clipping region tests on window resize.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/tests/dce.c | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/dce.c b/dlls/user32/tests/dce.c index b76f8fac45b..861150f9a88 100644 --- a/dlls/user32/tests/dce.c +++ b/dlls/user32/tests/dce.c @@ -384,7 +384,7 @@ static void test_dc_visrgn(void) static void test_begin_paint(void) { HDC old_hdc, hdc; - RECT rect, parent_rect; + RECT rect, parent_rect, client_rect; PAINTSTRUCT ps; COLORREF cr;
@@ -401,6 +401,33 @@ static void test_begin_paint(void) "invalid clip box %s\n", wine_dbgstr_rect( &rect )); EndPaint( hwnd_cache, &ps );
+ SetWindowPos( hwnd_cache, 0, 0, 0, 100, 100, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + RedrawWindow( hwnd_cache, NULL, 0, RDW_VALIDATE|RDW_NOFRAME|RDW_NOERASE ); + SetRect( &rect, 0, 0, 150, 150 ); + RedrawWindow( hwnd_cache, &rect, 0, RDW_INVALIDATE|RDW_NOFRAME|RDW_NOERASE ); + hdc = BeginPaint( hwnd_cache, &ps ); + GetClipBox( hdc, &rect ); + GetClientRect( hwnd_cache, &client_rect ); + ok( EqualRect( &rect, &client_rect ), "clip box = %s, expected %s\n", + wine_dbgstr_rect( &rect ), wine_dbgstr_rect( &client_rect )); + SetWindowPos( hwnd_cache, 0, 0, 0, 200, 200, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + GetClipBox( hdc, &rect ); + GetClientRect( hwnd_cache, &client_rect ); + todo_wine ok( (!rect.left && !rect.top && rect.right == 150 && rect.bottom == 150) || + broken( EqualRect( &rect, &client_rect )), + "clip box = %s\n", wine_dbgstr_rect( &rect )); + EndPaint( hwnd_cache, &ps ); + + SetWindowPos( hwnd_cache, 0, 0, 0, 100, 100, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + RedrawWindow( hwnd_cache, NULL, 0, RDW_INVALIDATE|RDW_NOFRAME|RDW_NOERASE ); + hdc = BeginPaint( hwnd_cache, &ps ); + SetWindowPos( hwnd_cache, 0, 0, 0, 200, 200, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + GetClipBox( hdc, &rect ); + GetClientRect( hwnd_cache, &client_rect ); + todo_wine ok( EqualRect( &rect, &client_rect ), "clip box = %s, expected %s\n", + wine_dbgstr_rect( &rect ), wine_dbgstr_rect( &client_rect )); + EndPaint( hwnd_cache, &ps ); + /* window DC */
RedrawWindow( hwnd_owndc, NULL, 0, RDW_VALIDATE|RDW_NOFRAME|RDW_NOERASE ); @@ -440,6 +467,21 @@ static void test_begin_paint(void) ok( !(rect.left >= 10 && rect.top >= 10 && rect.right <= 20 && rect.bottom <= 20), "clip box should still be the whole window %s\n", wine_dbgstr_rect( &rect ));
+ SetWindowPos( hwnd_owndc, 0, 0, 0, 100, 100, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + RedrawWindow( hwnd_owndc, NULL, 0, RDW_VALIDATE|RDW_NOFRAME|RDW_NOERASE ); + SetRect( &rect, 0, 0, 50, 50 ); + RedrawWindow( hwnd_owndc, &rect, 0, RDW_INVALIDATE|RDW_ERASE ); + hdc = BeginPaint( hwnd_owndc, &ps ); + GetClipBox( hdc, &rect ); + ok( !rect.left && !rect.top && rect.right == 50 && rect.bottom == 50, + "clip box = %s\n", wine_dbgstr_rect( &rect )); + SetWindowPos( hwnd_owndc, 0, 0, 0, 200, 200, SWP_NOZORDER|SWP_NOMOVE|SWP_NOACTIVATE ); + GetClipBox( hdc, &rect ); + GetClientRect( hwnd_owndc, &client_rect ); + ok( EqualRect( &rect, &client_rect ), "clip box = %s, expected %s\n", + wine_dbgstr_rect( &rect ), wine_dbgstr_rect( &client_rect )); + EndPaint( hwnd_owndc, &ps ); + /* class DC */
RedrawWindow( hwnd_classdc, NULL, 0, RDW_VALIDATE|RDW_NOFRAME|RDW_NOERASE );