Set focus to the dialog in EndDialog.
This commit is contained in:
parent
acc19d320b
commit
15c58c4239
|
@ -53,7 +53,11 @@ static BOOL DEFDLG_RestoreFocus( HWND hwnd, DIALOGINFO *infoPtr )
|
||||||
{
|
{
|
||||||
if (!infoPtr->hwndFocus || IsIconic(hwnd)) return FALSE;
|
if (!infoPtr->hwndFocus || IsIconic(hwnd)) return FALSE;
|
||||||
if (!IsWindow( infoPtr->hwndFocus )) return FALSE;
|
if (!IsWindow( infoPtr->hwndFocus )) return FALSE;
|
||||||
DEFDLG_SetFocus( hwnd, infoPtr->hwndFocus );
|
|
||||||
|
/* Don't set the focus back to controls if EndDialog is already called.*/
|
||||||
|
if (!(infoPtr->flags & DF_END))
|
||||||
|
DEFDLG_SetFocus( hwnd, infoPtr->hwndFocus );
|
||||||
|
|
||||||
/* This used to set infoPtr->hwndFocus to NULL for no apparent reason,
|
/* This used to set infoPtr->hwndFocus to NULL for no apparent reason,
|
||||||
sometimes losing focus when receiving WM_SETFOCUS messages. */
|
sometimes losing focus when receiving WM_SETFOCUS messages. */
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
|
@ -1073,6 +1073,11 @@ BOOL WINAPI EndDialog( HWND hwnd, INT retval )
|
||||||
dlgInfo->flags |= DF_END;
|
dlgInfo->flags |= DF_END;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Windows sets the focus to the dialog itself first in EndDialog */
|
||||||
|
|
||||||
|
if (IsChild(hwnd, GetFocus()))
|
||||||
|
SetFocus(wndPtr->hwndSelf);
|
||||||
|
|
||||||
/* Paint Shop Pro 4.14 calls EndDialog for a CreateDialog* dialog,
|
/* Paint Shop Pro 4.14 calls EndDialog for a CreateDialog* dialog,
|
||||||
* which isn't "normal". Only DialogBox* dialogs may be EndDialog()ed.
|
* which isn't "normal". Only DialogBox* dialogs may be EndDialog()ed.
|
||||||
* Just hide the window
|
* Just hide the window
|
||||||
|
@ -1163,6 +1168,7 @@ static BOOL DIALOG_IsAccelerator( HWND hwnd, HWND hwndDlg, WPARAM vKey )
|
||||||
SendMessageA( hwndControl, WM_LBUTTONUP, 0, 0);
|
SendMessageA( hwndControl, WM_LBUTTONUP, 0, 0);
|
||||||
}
|
}
|
||||||
RetVal = TRUE;
|
RetVal = TRUE;
|
||||||
|
WIN_ReleaseWndPtr(wndPtr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1182,6 +1188,10 @@ static BOOL DIALOG_IsAccelerator( HWND hwnd, HWND hwndDlg, WPARAM vKey )
|
||||||
hwndControl = GetParent( hwndControl );
|
hwndControl = GetParent( hwndControl );
|
||||||
if (hwndControl == hwndDlg)
|
if (hwndControl == hwndDlg)
|
||||||
{
|
{
|
||||||
|
if(hwnd==hwndDlg){ /* prevent endless loop */
|
||||||
|
hwndNext=hwnd;
|
||||||
|
break;
|
||||||
|
}
|
||||||
hwndNext = GetWindow( hwndDlg, GW_CHILD );
|
hwndNext = GetWindow( hwndDlg, GW_CHILD );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue