The UK Kalender program was crashing when a new event was created as stated in the bug report. The fix is to create all the property sheet pages from the beginning instead of when they are selected.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54861
-- v5: comctl32/propsheet: Create pages with PSP_PREMATURE on initialization. comctl32/tests: Add test for propsheet page creation when propsheet gets initialized.
From: Jacob Czekalla jczekalla@codeweavers.com
--- dlls/comctl32/tests/propsheet.c | 41 +++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+)
diff --git a/dlls/comctl32/tests/propsheet.c b/dlls/comctl32/tests/propsheet.c index 9bd1c08bd6a..ea02f715260 100644 --- a/dlls/comctl32/tests/propsheet.c +++ b/dlls/comctl32/tests/propsheet.c @@ -1388,6 +1388,46 @@ static void test_invalid_hpropsheetpage(void) DestroyWindow(hdlg); }
+static void test_init_page_creation(void) +{ + PROPSHEETPAGEA psp[3]; + PROPSHEETHEADERA psh; + HWND hp; + HWND page; + + memset(&psh, 0, sizeof(psh)); + memset(psp, 0, sizeof(psp)); + + for (int p = 0; p < 3; p++) + { + psp[p].dwSize = sizeof(PROPSHEETPAGEA); + psp[p].dwFlags = PSP_USETITLE; + psp[p].hInstance = GetModuleHandleA(NULL); + psp[p].pszTemplate = (const char *)MAKEINTRESOURCE(IDD_PROP_PAGE_EDIT); + psp[p].pszIcon = NULL; + psp[p].pfnDlgProc = (DLGPROC) page_dlg_proc; + psp[p].pszTitle = "page title"; + psp[p].lParam = 0; + } + + psh.dwSize = sizeof(PROPSHEETHEADERA); + psh.dwFlags = PSH_PROPSHEETPAGE | PSH_MODELESS; + psh.hwndParent = GetDesktopWindow(); + psh.pszCaption = "test caption"; + psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGEA); + psh.ppsp = (LPCPROPSHEETPAGEA)&psp; + + hp = (HWND)pPropertySheetA(&psh); + + for (int p = 0; p < 3; p++) + { + page = (HWND)SendMessageA(hp, PSM_INDEXTOHWND, p, 0); + todo_wine ok(page != NULL, "Page %d not created.\n", p); + } + + DestroyWindow(hp); +} + static void init_comctl32_functions(void) { HMODULE hComCtl32 = LoadLibraryA("comctl32.dll"); @@ -1442,6 +1482,7 @@ START_TEST(propsheet) test_CreatePropertySheetPage(); test_page_dialog_texture(); test_invalid_hpropsheetpage(); + test_init_page_creation();
if (!load_v6_module(&ctx_cookie, &ctx)) return;
From: Jacob Czekalla jczekalla@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54861 --- dlls/comctl32/propsheet.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c index b530a1a8094..230c3218510 100644 --- a/dlls/comctl32/propsheet.c +++ b/dlls/comctl32/propsheet.c @@ -3625,6 +3625,14 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) psInfo->ppshheader.pszCaption); }
+ for (int index = 0; index < psInfo->nPages;) + { + DWORD premature = HPSP_get_flags(psInfo->proppage[index].hpage) & PSP_PREMATURE; + if (premature && !PROPSHEET_CreatePage(hwnd, index, psInfo, psInfo->proppage[index].hpage)) + PROPSHEET_RemovePage(hwnd, index, NULL); + else + index++; + }
if (psInfo->useCallback) (*(psInfo->ppshheader.pfnCallback))(hwnd, PSCB_INITIALIZED, 0);
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=147484
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w7u_adm (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w7u_el (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w8 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w8adm (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w864 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064v1507 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064v1809 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064_tsign (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64_en_AE_u8 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w11pro64 (32 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w7pro64 (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w864 (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064v1507 (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064v1809 (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064_2qxl (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064_adm (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w1064_tsign (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64 (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64_ar (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64_ja (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w10pro64_zh_CN (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== w11pro64_amd (64 bit report) ===
comctl32: propsheet.c:1425: Test failed: Page 1 not created. propsheet.c:1425: Test failed: Page 2 not created.
=== debian11 (32 bit report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit ar:MA report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit de report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit fr report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit he:IL report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit hi:IN report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit ja:JP report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11 (32 bit zh:CN report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11b (32 bit WoW report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
=== debian11b (64 bit WoW report) ===
comctl32: propsheet.c:1425: Test succeeded inside todo block: Page 0 not created.
kernel32: comm.c:1586: Test failed: Unexpected time 1001, expected around 500
user32: input.c:4305: Test succeeded inside todo block: button_down_hwnd_todo 1: got MSG_TEST_WIN hwnd 0000000001CF00E8, msg WM_LBUTTONDOWN, wparam 0x1, lparam 0x320032 input.c:733: Test failed: peek: raw_legacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey F, message WM_KEYDOWN, extra 0 input.c:733: Test failed: peek: raw_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0x46, lparam 0x10001 input.c:733: Test failed: peek: raw_legacy: 0: test->expect 2 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_CHAR, wparam 0x66, lparam 0x10001 input.c:734: Test failed: peek: raw_legacy: 0: got F: 0 input.c:733: Test failed: peek: raw_legacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey F, message WM_KEYUP, extra 0 input.c:733: Test failed: peek: raw_legacy: 1: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0x46, lparam 0xffffffffc0020001 input.c:733: Test failed: peek: raw_vk_packet_legacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey 0xe7, message WM_KEYDOWN, extra 0 input.c:733: Test failed: peek: raw_vk_packet_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0xe7, lparam 0x10001 input.c:734: Test failed: peek: raw_vk_packet_legacy: 0: got 0xe7: 0 input.c:733: Test failed: peek: raw_vk_packet_legacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey 0xe7, message WM_KEYUP, extra 0 input.c:733: Test failed: peek: raw_vk_packet_legacy: 1: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0xe7, lparam 0xffffffffc0020001 input.c:733: Test failed: peek: raw_unicode_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_CHAR, wparam 0x3c0, lparam 0x1 input.c:734: Test failed: peek: raw_unicode_legacy: 0: got 0xe7: 0 input.c:733: Test failed: peek: raw_unicode_vkey_ctrl_legacy: 0: test->expect 0 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0x11, lparam 0xc00001 input.c:734: Test failed: peek: raw_unicode_vkey_ctrl_legacy: 0: got VK_CONTROL: 0 input.c:734: Test failed: peek: raw_unicode_vkey_ctrl_legacy: 0: got VK_LCONTROL: 0 input.c:733: Test failed: peek: raw_unicode_vkey_ctrl_legacy: 1: test->expect 0 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0x11, lparam 0xffffffffc0c00001 input.c:733: Test failed: peek: raw_nolegacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey F, message WM_KEYDOWN, extra 0 input.c:733: Test failed: peek: raw_nolegacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey F, message WM_KEYUP, extra 0 input.c:733: Test failed: peek: raw_vk_packet_nolegacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey 0xe7, message WM_KEYDOWN, extra 0 input.c:733: Test failed: peek: raw_vk_packet_nolegacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey 0xe7, message WM_KEYUP, extra 0 input.c:733: Test failed: receive: raw_legacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey F, message WM_KEYDOWN, extra 0 input.c:733: Test failed: receive: raw_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0x46, lparam 0x10001 input.c:733: Test failed: receive: raw_legacy: 0: test->expect 2 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_CHAR, wparam 0x66, lparam 0x10001 input.c:734: Test failed: receive: raw_legacy: 0: got F: 0 input.c:733: Test failed: receive: raw_legacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey F, message WM_KEYUP, extra 0 input.c:733: Test failed: receive: raw_legacy: 1: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0x46, lparam 0xffffffffc0020001 input.c:733: Test failed: receive: raw_vk_packet_legacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey 0xe7, message WM_KEYDOWN, extra 0 input.c:733: Test failed: receive: raw_vk_packet_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0xe7, lparam 0x10001 input.c:734: Test failed: receive: raw_vk_packet_legacy: 0: got 0xe7: 0 input.c:733: Test failed: receive: raw_vk_packet_legacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey 0xe7, message WM_KEYUP, extra 0 input.c:733: Test failed: receive: raw_vk_packet_legacy: 1: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0xe7, lparam 0xffffffffc0020001 input.c:733: Test failed: receive: raw_unicode_legacy: 0: test->expect 1 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_CHAR, wparam 0x3c0, lparam 0x1 input.c:734: Test failed: receive: raw_unicode_legacy: 0: got 0xe7: 0 input.c:733: Test failed: receive: raw_unicode_vkey_ctrl_legacy: 0: test->expect 0 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYDOWN, wparam 0x11, lparam 0xc00001 input.c:734: Test failed: receive: raw_unicode_vkey_ctrl_legacy: 0: got VK_CONTROL: 0 input.c:734: Test failed: receive: raw_unicode_vkey_ctrl_legacy: 0: got VK_LCONTROL: 0 input.c:733: Test failed: receive: raw_unicode_vkey_ctrl_legacy: 1: test->expect 0 (missing): MSG_TEST_WIN hwnd 0000000000000000, WM_KEYUP, wparam 0x11, lparam 0xffffffffc0c00001 input.c:733: Test failed: receive: raw_nolegacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey F, message WM_KEYDOWN, extra 0 input.c:733: Test failed: receive: raw_nolegacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey F, message WM_KEYUP, extra 0 input.c:733: Test failed: receive: raw_vk_packet_nolegacy: 0: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x1, flags 0, vkey 0xe7, message WM_KEYDOWN, extra 0 input.c:733: Test failed: receive: raw_vk_packet_nolegacy: 1: test->expect 0 (missing): got WM_INPUT key hwnd 0000000000000000, code 0, make_code 0x2, flags 0x1, vkey 0xe7, message WM_KEYUP, extra 0
The Gitlab CI test stage test-linux-32, test-win10-21h2-32, and test-win10-21h2-64 are all failing. Also see https://testbot.winehq.org/JobDetails.pl?Key=147484#k201