diff --git a/base/system/winlogon/wlx.c b/base/system/winlogon/wlx.c index 5b719e0c70f..edcdd6d91be 100644 --- a/base/system/winlogon/wlx.c +++ b/base/system/winlogon/wlx.c @@ -104,7 +104,7 @@ CloseAllDialogWindows(VOID) DIALOG_LIST_ENTRY, Entry); - PostMessage(Current->hWnd, WLX_WM_SAS, 0, 0); + PostMessage(Current->hWnd, WLX_WM_SAS, WLX_SAS_TYPE_TIMEOUT, 0); ListEntry = ListEntry->Flink; } @@ -141,8 +141,25 @@ DefaultWlxWindowProc( if (uMsg == WLX_WM_SAS) { - EndDialog(hwndDlg, WLX_DLG_SAS); - return 0; + /* Determine which result to return */ + switch (wParam) + { + case WLX_SAS_TYPE_CTRL_ALT_DEL: + default: + ret = WLX_DLG_SAS; + break; + case WLX_SAS_TYPE_TIMEOUT: + ret = WLX_DLG_INPUT_TIMEOUT; + break; + case WLX_SAS_TYPE_SCRNSVR_TIMEOUT: + ret = WLX_DLG_SCREEN_SAVER_TIMEOUT; + break; + case WLX_SAS_TYPE_USER_LOGOFF: + ret = WLX_DLG_USER_LOGOFF; + break; + } + EndDialog(hwndDlg, ret); + return TRUE; } ret = ListEntry->DlgProc(hwndDlg, uMsg, wParam, lParam);