From cb5ca81381886483b4ec2a6ff4560434edde8f80 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 4 Aug 2001 14:59:56 +0000 Subject: [PATCH] Prevent recursive weirdnesses happening when the user selects a system-tray menu option while a passphrase prompt is active. git-svn-id: svn://svn.tartarus.org/sgt/putty@1170 cda61777-01e9-0310-a592-d414129be87e --- pageant.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pageant.c b/pageant.c index 853341ac..fc5e8791 100644 --- a/pageant.c +++ b/pageant.c @@ -168,6 +168,8 @@ static int CALLBACK AboutProc(HWND hwnd, UINT msg, return 0; } +static HWND passphrase_box; + /* * Dialog-box function for the passphrase box. */ @@ -179,6 +181,7 @@ static int CALLBACK PassphraseProc(HWND hwnd, UINT msg, switch (msg) { case WM_INITDIALOG: + passphrase_box = hwnd; /* * Centre the window. */ @@ -324,6 +327,7 @@ static void add_keyfile(char *filename) int dlgret; dlgret = DialogBoxParam(instance, MAKEINTRESOURCE(210), NULL, PassphraseProc, (LPARAM) & pps); + passphrase_box = NULL; if (!dlgret) { if (comment) sfree(comment); @@ -1017,6 +1021,11 @@ static int CALLBACK KeyListProc(HWND hwnd, UINT msg, case 101: /* add key */ if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { + if (passphrase_box) { + MessageBeep(MB_ICONERROR); + SetForegroundWindow(passphrase_box); + break; + } prompt_add_keyfile(); } return 0; @@ -1091,6 +1100,8 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, case WM_SYSCOMMAND: switch (wParam & ~0xF) { /* low 4 bits reserved to Windows */ case IDM_CLOSE: + if (passphrase_box) + SendMessage(passphrase_box, WM_CLOSE, 0, 0); SendMessage(hwnd, WM_CLOSE, 0, 0); break; case IDM_VIEWKEYS: @@ -1108,6 +1119,11 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, } break; case IDM_ADDKEY: + if (passphrase_box) { + MessageBeep(MB_ICONERROR); + SetForegroundWindow(passphrase_box); + break; + } prompt_add_keyfile(); break; case IDM_ABOUT: -- 2.11.0