This reverts Matts patch. The messaging needs double checking.
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index bff8274..6416bfd 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -1080,45 +1080,49 @@
*/
static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
{
- PSHNOTIFY psn;
- HWND hwndTabCtrl;
-
if (index == psInfo->active_page)
- {
- if (GetTopWindow(hwndDlg) != psInfo->proppage[index].hwndPage)
+ {
+ if (GetTopWindow(hwndDlg) != psInfo->proppage[index].hwndPage)
SetWindowPos(psInfo->proppage[index].hwndPage, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
- return TRUE;
- }
-
- /* Synchronize current selection with tab control */
- hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
- SendMessageA(hwndTabCtrl, TCM_SETCURSEL, index, 0);
+ return TRUE;
+ }
if (psInfo->proppage[index].hwndPage == 0)
{
LPCPROPSHEETPAGEA ppshpage;
+ PSHNOTIFY psn;
ppshpage = (LPCPROPSHEETPAGEA)psInfo->proppage[index].hpage;
PROPSHEET_CreatePage(hwndDlg, index, psInfo, ppshpage);
+
+ psn.hdr.hwndFrom = hwndDlg;
+ psn.hdr.code = PSN_SETACTIVE;
+ psn.hdr.idFrom = 0;
+ psn.lParam = 0;
+
+ /* Send the notification before showing the page. */
+ SendMessageA(psInfo->proppage[index].hwndPage,
+ WM_NOTIFY, 0, (LPARAM) &psn);
+
+ /*
+ * TODO: check return value.
+ */
}
- psn.hdr.hwndFrom = hwndDlg;
- psn.hdr.code = PSN_SETACTIVE;
- psn.hdr.idFrom = 0;
- psn.lParam = 0;
-
- /* Send the notification before showing the page. */
- SendMessageA(psInfo->proppage[index].hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
-
- /*
- * TODO: check return value.
- */
-
if (psInfo->active_page != -1)
ShowWindow(psInfo->proppage[psInfo->active_page].hwndPage, SW_HIDE);
ShowWindow(psInfo->proppage[index].hwndPage, SW_SHOW);
+ if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
+ {
+ HWND hwndTabCtrl;
+
+ /* Synchronize current selection with tab control */
+ hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
+ SendMessageA(hwndTabCtrl, TCM_SETCURSEL, index, 0);
+ }
+
psInfo->active_page = index;
psInfo->activeValid = TRUE;
@@ -1517,6 +1521,27 @@
hwndPage = psInfo->proppage[index].hwndPage;
/*
+ * Notify the new page if it's already created.
+ * If not it will get created and notified in PROPSHEET_ShowPage.
+ */
+ if (hwndPage)
+ {
+ int result;
+ PSHNOTIFY psn;
+
+ psn.hdr.code = PSN_SETACTIVE;
+ psn.hdr.hwndFrom = hwndDlg;
+ psn.hdr.idFrom = 0;
+ psn.lParam = 0;
+
+ result = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
+
+ /*
+ * TODO: check return value.
+ */
+ }
+
+ /*
* Display the new page.
*/
PROPSHEET_ShowPage(hwndDlg, index, psInfo);
@@ -2110,7 +2135,8 @@
PROPSHEET_SetCurSel(hwnd, idx, psInfo->proppage[idx].hpage);
- SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
+ if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
+ SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
if (!HIWORD(psInfo->ppshheader->pszCaption) &&
psInfo->ppshheader->hInstance)