Make dialogs update the UI state

svn path=/trunk/; revision=30613
This commit is contained in:
Thomas Bluemel 2007-11-21 09:12:20 +00:00
parent 6e7848434b
commit fc02f8d454
2 changed files with 9 additions and 1 deletions

View file

@ -1683,7 +1683,7 @@ User32DefWindowProc(HWND hWnd,
{
/* We're a child window and we need to pass this message down until
we reach the root */
hWnd = UserHMGetHandle(Wnd->Parent);
hWnd = UserHMGetHandle((PWINDOW)DesktopPtrToUser(Wnd->Parent));
}
else
{

View file

@ -816,6 +816,8 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
SetFocus( dlgInfo->hwndFocus );
}
SendMessageW( hwnd, WM_CHANGEUISTATE, MAKEWPARAM(UIS_INITIALIZE, 0), 0);
if (template.style & WS_VISIBLE && !(GetWindowLongW( hwnd, GWL_STYLE ) & WS_VISIBLE))
{
ShowWindow( hwnd, SW_SHOWNORMAL ); /* SW_SHOW doesn't always work */
@ -2207,6 +2209,8 @@ IsDialogMessageW(
case VK_TAB:
if (!(dlgCode & DLGC_WANTTAB))
{
SendMessageW(hDlg, WM_CHANGEUISTATE, MAKEWPARAM(UIS_CLEAR, UISF_HIDEFOCUS), 0);
/* I am not sure under which circumstances the TAB is handled
* each way. All I do know is that it does not always simply
* send WM_NEXTDLGCTL. (Personally I have never yet seen it
@ -2306,6 +2310,10 @@ IsDialogMessageW(
return TRUE;
}
break;
case WM_SYSKEYDOWN:
SendMessageW(hDlg, WM_CHANGEUISTATE, MAKEWPARAM(UIS_CLEAR, UISF_HIDEFOCUS), 0);
break;
}
TranslateMessage( lpMsg );