From 3944cb3b689ec439602554369f2d259e3994c396 Mon Sep 17 00:00:00 2001 From: Zach Gorman Date: Thu, 19 Aug 2004 01:03:12 +0000 Subject: [PATCH] When searching for the DEFPUSHBUTTON in a dialog, recurse into child windows with the WS_EX_CONTROLPARENT style (if they are visible and enabled). --- windows/defdlg.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/windows/defdlg.c b/windows/defdlg.c index def5b8af7b8..e6b1da8ab00 100644 --- a/windows/defdlg.c +++ b/windows/defdlg.c @@ -115,11 +115,22 @@ static void DEFDLG_RestoreFocus( HWND hwnd ) */ static HWND DEFDLG_FindDefButton( HWND hwndDlg ) { - HWND hwndChild = GetWindow( hwndDlg, GW_CHILD ); + HWND hwndChild, hwndTmp; + + hwndChild = GetWindow( hwndDlg, GW_CHILD ); while (hwndChild) { if (SendMessageW( hwndChild, WM_GETDLGCODE, 0, 0 ) & DLGC_DEFPUSHBUTTON) break; + + /* Recurse into WS_EX_CONTROLPARENT controls */ + if (GetWindowLongA( hwndChild, GWL_EXSTYLE ) & WS_EX_CONTROLPARENT) + { + LONG dsStyle = GetWindowLongA( hwndChild, GWL_STYLE ); + if ((dsStyle & WS_VISIBLE) && !(dsStyle & WS_DISABLED) && + (hwndTmp = DEFDLG_FindDefButton(hwndChild)) != NULL) + return hwndTmp; + } hwndChild = GetWindow( hwndChild, GW_HWNDNEXT ); } return hwndChild;