From e1f67b99bb9cf929c0b7482bcacaba42e1fe0ef1 Mon Sep 17 00:00:00 2001 From: NF Stevens Date: Sun, 8 Nov 1998 16:44:41 +0000 Subject: [PATCH] Fixed keystroke accelerators in dialogs which have controls containing other controls as child windows. --- windows/dialog.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/windows/dialog.c b/windows/dialog.c index c4f763d5c49..a55263608e6 100644 --- a/windows/dialog.c +++ b/windows/dialog.c @@ -1010,6 +1010,7 @@ BOOL32 WINAPI EndDialog32( HWND32 hwnd, INT32 retval ) static BOOL32 DIALOG_IsAccelerator( HWND32 hwnd, HWND32 hwndDlg, WPARAM32 vKey ) { HWND32 hwndControl = hwnd; + HWND32 hwndNext; WND *wndPtr; BOOL32 RetVal = FALSE; INT32 dlgCode; @@ -1075,11 +1076,24 @@ static BOOL32 DIALOG_IsAccelerator( HWND32 hwnd, HWND32 hwndDlg, WPARAM32 vKey ) } } } - hwndControl = GetWindow32( hwndControl, GW_HWNDNEXT ); - if (!hwndControl) - { - hwndControl = GetWindow32( hwndDlg, GW_CHILD ); - } + hwndNext = GetWindow32( hwndControl, GW_CHILD ); + if (!hwndNext) + { + hwndNext = GetWindow32( hwndControl, GW_HWNDNEXT ); + } + while (!hwndNext) + { + hwndControl = GetParent32( hwndControl ); + if (hwndControl == hwndDlg) + { + hwndNext = GetWindow32( hwndDlg, GW_CHILD ); + } + else + { + hwndNext = GetWindow32( hwndControl, GW_HWNDNEXT ); + } + } + hwndControl = hwndNext; } while (hwndControl != hwnd); } -- 2.11.4.GIT