[PATCH 1/2] user32/tests: Add test for RedrawWindow with RDW_VALIDATE flag.
Roman Pišl
rpisl at seznam.cz
Wed Apr 22 07:21:21 CDT 2020
Signed-off-by: Roman Pišl <rpisl at seznam.cz>
---
dlls/user32/tests/msg.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/msg.c b/dlls/user32/tests/msg.c
index 93ab7b4a27..4df10a8300 100644
--- a/dlls/user32/tests/msg.c
+++ b/dlls/user32/tests/msg.c
@@ -136,7 +136,8 @@ typedef enum {
optional=0x80,
hook=0x100,
winevent_hook=0x200,
- kbd_hook=0x400
+ kbd_hook=0x400,
+ has_update=0x800
} msg_flags_t;
struct message {
@@ -2547,6 +2548,11 @@ static void ok_sequence_(const struct message *expected_list, const char *contex
context, count, expected->message);
if ((expected->flags & kbd_hook) != (actual->flags & kbd_hook)) dump++;
+ todo_wine_if(line==8239)
+ ok_( file, line) (!(expected->flags & has_update) || (actual->flags & has_update),
+ "%s: %u: the msg 0x%04x should have update region\n",
+ context, count, expected->message);
+
expected++;
actual++;
}
@@ -7858,6 +7864,11 @@ static const struct message WmPaint[] = {
{ 0 }
};
+static const struct message WmPaintUpdate[] = {
+ { WM_PAINT, sent|has_update },
+ { 0 }
+};
+
static const struct message WmParentOnlyPaint[] = {
{ WM_PAINT, sent|parent },
{ 0 }
@@ -8217,6 +8228,16 @@ static void test_paint_messages(void)
}
ok_sequence( WmGetUpdateRect, "GetUpdateRect", FALSE );
+ /* RedrawWindow with RDW_VALIDATE triggers WM_PAINT with non-empty update region */
+ flush_sequence();
+ InvalidateRect( hwnd, NULL, FALSE );
+ GetClientRect( hwnd, &rect );
+ SetRectRgn(hrgn, rect.left, rect.top, rect.right, rect.bottom );
+ check_update_rgn( hwnd, hrgn );
+ RedrawWindow( hwnd, &rect, NULL, RDW_INTERNALPAINT|RDW_NOERASE|RDW_NOFRAME|RDW_UPDATENOW|RDW_VALIDATE );
+ check_update_rgn( hwnd, 0 );
+ ok_sequence( WmPaintUpdate, "PaintUpdate", FALSE );
+
DestroyWindow( hwnd );
/* now test with a child window */
@@ -9531,6 +9552,9 @@ static LRESULT MsgCheckProc (BOOL unicode, HWND hwnd, UINT message,
msg.flags = sent|wparam|lparam;
if (defwndproc_counter) msg.flags |= defwinproc;
if (beginpaint_counter) msg.flags |= beginpaint;
+
+ if (message == WM_PAINT && GetUpdateRect(hwnd, NULL, FALSE)) msg.flags |= has_update;
+
msg.wParam = wParam;
msg.lParam = lParam;
msg.descr = "MsgCheckProc";
--
2.20.1
More information about the wine-devel
mailing list