Commit a3551214 authored by André Hentschel's avatar André Hentschel Committed by Alexandre Julliard

user32: Fix for finding nested default buttons.

parent 327eb313
......@@ -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);
......
......@@ -1120,6 +1120,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.@)
*/
BOOL WINAPI IsDialogMessageW( HWND hwndDlg, LPMSG msg )
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment