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