Andrew Eikum : comctl32: Correctly assign focus and default button in property sheet wizards.
Alexandre Julliard
julliard at winehq.org
Fri Aug 14 08:59:21 CDT 2009
Module: wine
Branch: master
Commit: ac34e22ef36e865a2a85153d6f469cf9027d3a47
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ac34e22ef36e865a2a85153d6f469cf9027d3a47
Author: Andrew Eikum <aeikum at codeweavers.com>
Date: Thu Aug 13 17:36:35 2009 -0500
comctl32: Correctly assign focus and default button in property sheet wizards.
---
dlls/comctl32/propsheet.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index 0d76297..e767444 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -1549,6 +1549,7 @@ static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
{
HWND hwndTabCtrl;
HWND hwndLineHeader;
+ HWND control;
LPCPROPSHEETPAGEW ppshpage;
TRACE("active_page %d, index %d\n", psInfo->active_page, index);
@@ -1569,6 +1570,10 @@ static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
{
PROPSHEET_SetTitleW(hwndDlg, psInfo->ppshheader.dwFlags,
psInfo->proppage[index].pszText);
+
+ control = GetNextDlgTabItem(psInfo->proppage[index].hwndPage, NULL, FALSE);
+ if(control != NULL)
+ SetFocus(control);
}
if (psInfo->active_page != -1)
@@ -1631,7 +1636,11 @@ static BOOL PROPSHEET_Back(HWND hwndDlg)
if (idx >= 0 && idx < psInfo->nPages)
{
if (PROPSHEET_CanSetCurSel(hwndDlg))
+ {
+ SetFocus(GetDlgItem(hwndDlg, IDC_BACK_BUTTON));
+ SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0);
PROPSHEET_SetCurSel(hwndDlg, idx, -1, 0);
+ }
}
return TRUE;
}
@@ -1669,7 +1678,11 @@ static BOOL PROPSHEET_Next(HWND hwndDlg)
if (idx < psInfo->nPages )
{
if (PROPSHEET_CanSetCurSel(hwndDlg) != FALSE)
+ {
+ SetFocus(GetDlgItem(hwndDlg, IDC_NEXT_BUTTON));
+ SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0);
PROPSHEET_SetCurSel(hwndDlg, idx, 1, 0);
+ }
}
return TRUE;
@@ -3408,6 +3421,7 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
/* set up the Next and Back buttons by default */
PROPSHEET_SetWizButtons(hwnd, PSWIZB_BACK|PSWIZB_NEXT);
+ SetFocus(GetDlgItem(hwnd, IDC_NEXT_BUTTON));
/* Set up fonts */
SystemParametersInfoW (SPI_GETICONTITLELOGFONT, 0, &logFont, 0);
@@ -3494,6 +3508,10 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
PROPSHEET_UnChanged(hwnd, NULL);
+ /* wizards set their focus during init */
+ if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
+ return FALSE;
+
return TRUE;
}
More information about the wine-cvs
mailing list