X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/57b8bf11164ae575c86b7b739c79d0aa112f28fc..cf6e59d623fbfd4efad0d63795ae5e7f33d5aa5b:/windlg.c?ds=sidebyside diff --git a/windlg.c b/windlg.c index 7cc1de22..57f49436 100644 --- a/windlg.c +++ b/windlg.c @@ -173,6 +173,14 @@ static int CALLBACK AboutProc (HWND hwnd, UINT msg, return 0; } +/* + * Null dialog procedure. + */ +static int CALLBACK NullDlgProc (HWND hwnd, UINT msg, + WPARAM wParam, LPARAM lParam) { + return 0; +} + /* ---------------------------------------------------------------------- * Routines to self-manage the controls in a dialog box. */ @@ -945,6 +953,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_CIPHER3DES, IDC_CIPHERBLOWF, IDC_CIPHERDES, + IDC_BUGGYMAC, IDC_AUTHTIS, IDC_PKSTATIC, IDC_PKEDIT, @@ -1056,7 +1065,7 @@ static void init_dlg_ctrls(HWND hwnd) { cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008); CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT, cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE); - CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCXTERM, + CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCVT400, cfg.funky_type == 0 ? IDC_FUNCTILDE : cfg.funky_type == 1 ? IDC_FUNCLINUX : cfg.funky_type == 2 ? IDC_FUNCXTERM : @@ -1109,6 +1118,7 @@ static void init_dlg_ctrls(HWND hwnd) { SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype); SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username); CheckDlgButton (hwnd, IDC_NOPTY, cfg.nopty); + CheckDlgButton (hwnd, IDC_BUGGYMAC, cfg.buggymac); CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd); CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES, cfg.cipher == CIPHER_BLOWFISH ? IDC_CIPHERBLOWF : @@ -1546,7 +1556,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, } /* The SSH panel. Accelerators used: [acgo] rmakwp123bd */ - { + if (backends[2].backend != NULL) { struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -1575,6 +1585,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, "&3DES", IDC_CIPHER3DES, "&Blowfish", IDC_CIPHERBLOWF, "&DES", IDC_CIPHERDES, NULL); + checkbox(&cp, "Imitate SSH 2 MAC bug in commercial <= v2.3.x", + IDC_BUGGYMAC); endbox(&cp); treeview_insert(&tvfaff, 1, "SSH"); @@ -2059,6 +2071,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY); break; + case IDC_BUGGYMAC: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.buggymac = IsDlgButtonChecked (hwnd, IDC_BUGGYMAC); + break; case IDC_AGENTFWD: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) @@ -2288,6 +2305,21 @@ static int CALLBACK ReconfDlgProc (HWND hwnd, UINT msg, return GenericMainDlgProc (hwnd, msg, wParam, lParam, 1); } +int defuse_showwindow(void) { + /* + * Work around the fact that the app's first call to ShowWindow + * will ignore the default in favour of the shell-provided + * setting. + */ + { + HWND hwnd; + hwnd = CreateDialog (hinst, MAKEINTRESOURCE(IDD_ABOUTBOX), + NULL, NullDlgProc); + ShowWindow(hwnd, SW_HIDE); + DestroyWindow(hwnd); + } +} + int do_config (void) { int ret;