user32: Fix for finding nested default buttons.
This commit is contained in:
parent
327eb31325
commit
a355121414
|
@ -502,7 +502,6 @@ static void test_custom_default_button(void)
|
|||
}
|
||||
}
|
||||
|
||||
todo_wine
|
||||
ok(add_button_has_been_pressed, "The Add button has not been pressed!\n");
|
||||
|
||||
DestroyWindow(hdlg);
|
||||
|
|
|
@ -1119,6 +1119,38 @@ static void DIALOG_FixChildrenOnChangeFocus (HWND hwndDlg, HWND hwndNext)
|
|||
}
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* DIALOG_IdToHwnd
|
||||
*
|
||||
* A recursive version of GetDlgItem
|
||||
*
|
||||
* RETURNS
|
||||
* The HWND for a Child ID.
|
||||
*/
|
||||
static HWND DIALOG_IdToHwnd( HWND hwndDlg, INT id )
|
||||
{
|
||||
int i;
|
||||
HWND *list = WIN_ListChildren( hwndDlg );
|
||||
HWND ret = 0;
|
||||
|
||||
if (!list) return 0;
|
||||
|
||||
for (i = 0; list[i]; i++)
|
||||
{
|
||||
if (GetWindowLongPtrW( list[i], GWLP_ID ) == id)
|
||||
{
|
||||
ret = list[i];
|
||||
break;
|
||||
}
|
||||
|
||||
/* Recurse into every child */
|
||||
if ((ret = DIALOG_IdToHwnd( list[i], id ))) break;
|
||||
}
|
||||
|
||||
HeapFree( GetProcessHeap(), 0, list );
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* IsDialogMessageW (USER32.@)
|
||||
*/
|
||||
|
@ -1227,7 +1259,7 @@ BOOL WINAPI IsDialogMessageW( HWND hwndDlg, LPMSG msg )
|
|||
}
|
||||
else if (DC_HASDEFID == HIWORD(dw = SendMessageW (hwndDlg, DM_GETDEFID, 0, 0)))
|
||||
{
|
||||
HWND hwndDef = GetDlgItem(hwndDlg, LOWORD(dw));
|
||||
HWND hwndDef = DIALOG_IdToHwnd(hwndDlg, LOWORD(dw));
|
||||
if (hwndDef ? IsWindowEnabled(hwndDef) : LOWORD(dw)==IDOK)
|
||||
SendMessageW( hwndDlg, WM_COMMAND, MAKEWPARAM( LOWORD(dw), BN_CLICKED ), (LPARAM)hwndDef);
|
||||
}
|
||||
|
|
|
@ -709,7 +709,7 @@ static void test_WM_NEXTDLGCTL(void)
|
|||
g_bReceivedCommand = FALSE;
|
||||
FormEnterMsg (&msg, child3);
|
||||
ok(IsDialogMessage (g_hwndTestDlg, &msg), "Did not handle the ENTER\n");
|
||||
todo_wine ok(g_bReceivedCommand, "Did not trigger the default Button action\n");
|
||||
ok(g_bReceivedCommand, "Did not trigger the default Button action\n");
|
||||
|
||||
DestroyWindow(child3);
|
||||
DestroyWindow(child2);
|
||||
|
|
Loading…
Reference in New Issue