user32/tests: Add tests for LockWindowUpdate.
Signed-off-by: Lauri Kenttä <lauri.kentta@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
c0f77b4a4a
commit
26be29138f
|
@ -9325,6 +9325,76 @@ todo_wine
|
||||||
ok(ret, "got %d\n", ret);
|
ok(ret, "got %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_LockWindowUpdate(HWND parent)
|
||||||
|
{
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
HWND hwnd_lock, hwnd_draw;
|
||||||
|
BOOL allow_drawing;
|
||||||
|
BOOL expect_valid;
|
||||||
|
} TEST;
|
||||||
|
|
||||||
|
int i;
|
||||||
|
HWND child = CreateWindowA("static", 0, WS_CHILD | WS_VISIBLE, 0, 0, 20, 20, parent, 0, 0, 0);
|
||||||
|
|
||||||
|
TEST tests[] = {
|
||||||
|
{child, child, 0, 0},
|
||||||
|
{child, child, 1, 1},
|
||||||
|
{child, parent, 0, 1},
|
||||||
|
{child, parent, 1, 1},
|
||||||
|
{parent, child, 0, 0},
|
||||||
|
{parent, child, 1, 1},
|
||||||
|
{parent, parent, 0, 0},
|
||||||
|
{parent, parent, 1, 1}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!child)
|
||||||
|
{
|
||||||
|
skip("CreateWindow failed, skipping LockWindowUpdate tests\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ShowWindow(parent, SW_SHOW);
|
||||||
|
UpdateWindow(parent);
|
||||||
|
flush_events(TRUE);
|
||||||
|
|
||||||
|
for (i = 0; i < sizeof(tests) / sizeof(tests[0]); ++i)
|
||||||
|
{
|
||||||
|
HDC hdc;
|
||||||
|
POINT p = {10, 10};
|
||||||
|
BOOL ret;
|
||||||
|
const DWORD dc_flags = DCX_USESTYLE | (tests[i].allow_drawing ? DCX_LOCKWINDOWUPDATE : 0);
|
||||||
|
const COLORREF c1 = 0x111100, c2 = 0x222200;
|
||||||
|
|
||||||
|
trace("hwnd_lock = %s, hwnd_draw = %s, allow_drawing = %d\n",
|
||||||
|
tests[i].hwnd_lock == parent ? "parent" : "child",
|
||||||
|
tests[i].hwnd_draw == parent ? "parent" : "child",
|
||||||
|
tests[i].allow_drawing);
|
||||||
|
|
||||||
|
hdc = GetDCEx(tests[i].hwnd_draw, 0, dc_flags);
|
||||||
|
|
||||||
|
#define TEST_PIXEL(c_valid, c_invalid) \
|
||||||
|
do { \
|
||||||
|
COLORREF c = GetPixel(hdc, p.x, p.y); \
|
||||||
|
COLORREF e = tests[i].expect_valid ? (c_valid) : (c_invalid); \
|
||||||
|
todo_wine_if(!tests[i].expect_valid) \
|
||||||
|
ok(c == e, "GetPixel: got %08x, expected %08x\n", c, e); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
SetPixel(hdc, p.x, p.y, c1);
|
||||||
|
ret = LockWindowUpdate(tests[i].hwnd_lock);
|
||||||
|
ok(ret, "LockWindowUpdate failed\n");
|
||||||
|
TEST_PIXEL(c1, CLR_INVALID);
|
||||||
|
SetPixel(hdc, p.x, p.y, c2);
|
||||||
|
TEST_PIXEL(c2, CLR_INVALID);
|
||||||
|
LockWindowUpdate(0);
|
||||||
|
TEST_PIXEL(c2, c1);
|
||||||
|
ReleaseDC(tests[i].hwnd_draw, hdc);
|
||||||
|
#undef TEST_PIXEL
|
||||||
|
}
|
||||||
|
DestroyWindow(child);
|
||||||
|
}
|
||||||
|
|
||||||
START_TEST(win)
|
START_TEST(win)
|
||||||
{
|
{
|
||||||
char **argv;
|
char **argv;
|
||||||
|
@ -9470,6 +9540,7 @@ START_TEST(win)
|
||||||
test_activateapp(hwndMain);
|
test_activateapp(hwndMain);
|
||||||
test_winproc_handles(argv[0]);
|
test_winproc_handles(argv[0]);
|
||||||
test_deferwindowpos();
|
test_deferwindowpos();
|
||||||
|
test_LockWindowUpdate(hwndMain);
|
||||||
|
|
||||||
/* add the tests above this line */
|
/* add the tests above this line */
|
||||||
if (hhook) UnhookWindowsHookEx(hhook);
|
if (hhook) UnhookWindowsHookEx(hhook);
|
||||||
|
|
Loading…
Reference in New Issue