X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/b1549e9eff25e5e63c904e12e12c6522e7ec025b..f5e6a5c6dcefee95163f75ca6121255e22f87a2d:/windlg.c diff --git a/windlg.c b/windlg.c index 97114a5e..af430ecb 100644 --- a/windlg.c +++ b/windlg.c @@ -66,7 +66,7 @@ static int CALLBACK LogProc (HWND hwnd, UINT msg, int *selitems; selcount = SendDlgItemMessage(hwnd, IDN_LIST, LB_GETSELCOUNT, 0, 0); - selitems = malloc(selcount * sizeof(int)); + selitems = smalloc(selcount * sizeof(int)); if (selitems) { int count = SendDlgItemMessage(hwnd, IDN_LIST, LB_GETSELITEMS, @@ -85,7 +85,7 @@ static int CALLBACK LogProc (HWND hwnd, UINT msg, for (i = 0; i < count; i++) size += strlen(events[selitems[i]]) + sizeof(sel_nl); - clipdata = malloc(size); + clipdata = smalloc(size); if (clipdata) { char *p = clipdata; for (i = 0; i < count; i++) { @@ -97,9 +97,9 @@ static int CALLBACK LogProc (HWND hwnd, UINT msg, p += sizeof(sel_nl); } write_clip(clipdata, size, TRUE); - free(clipdata); + sfree(clipdata); } - free(selitems); + sfree(selitems); for (i = 0; i < nevents; i++) SendDlgItemMessage(hwnd, IDN_LIST, LB_SETSEL, @@ -219,7 +219,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_KPNORMAL, IDC_KPAPPLIC, IDC_KPNH, - IDC_NOAPPLIC, + IDC_NOAPPLICK, + IDC_NOAPPLICC, IDC_CURSTATIC, IDC_CURNORMAL, IDC_CURAPPLIC, @@ -257,6 +258,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_ALTONLY, IDC_SCROLLKEY, IDC_SCROLLDISP, + IDC_ALWAYSONTOP, windowpanelend, appearancepanelstart, @@ -324,6 +326,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_AGENTFWD, IDC_CMDSTATIC, IDC_CMDEDIT, + IDC_COMPRESS, sshpanelend, selectionpanelstart, @@ -431,7 +434,8 @@ static void init_dlg_ctrls(HWND hwnd) { cfg.funky_type == 2 ? IDC_FUNCXTERM : cfg.funky_type == 3 ? IDC_FUNCVT400 : IDC_FUNCTILDE ); - CheckDlgButton (hwnd, IDC_NOAPPLIC, cfg.no_applic); + CheckDlgButton (hwnd, IDC_NOAPPLICC, cfg.no_applic_c); + CheckDlgButton (hwnd, IDC_NOAPPLICK, cfg.no_applic_k); CheckRadioButton (hwnd, IDC_CURNORMAL, IDC_CURAPPLIC, cfg.app_cursor ? IDC_CURAPPLIC : IDC_CURNORMAL); CheckRadioButton (hwnd, IDC_KPNORMAL, IDC_KPNH, @@ -442,6 +446,7 @@ static void init_dlg_ctrls(HWND hwnd) { CheckDlgButton (hwnd, IDC_ALTONLY, cfg.alt_only); CheckDlgButton (hwnd, IDC_COMPOSEKEY, cfg.compose_key); CheckDlgButton (hwnd, IDC_LDISCTERM, cfg.ldisc_term); + CheckDlgButton (hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop); CheckDlgButton (hwnd, IDC_SCROLLKEY, cfg.scroll_on_key); CheckDlgButton (hwnd, IDC_SCROLLDISP, cfg.scroll_on_disp); @@ -482,6 +487,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_COMPRESS, cfg.compression); CheckDlgButton (hwnd, IDC_BUGGYMAC, cfg.buggymac); CheckDlgButton (hwnd, IDC_AGENTFWD, cfg.agentfwd); CheckRadioButton (hwnd, IDC_CIPHER3DES, IDC_CIPHERDES, @@ -627,7 +633,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, SendMessage(tvstatic, WM_SETFONT, font, MAKELPARAM(TRUE, 0)); r.left = 3; r.right = r.left + 75; - r.top = 13; r.bottom = r.top + 196; + r.top = 13; r.bottom = r.top + 206; MapDialogRect(hwnd, &r); treeview = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, "", WS_CHILD | WS_VISIBLE | @@ -706,13 +712,13 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, checkbox(&cp, "&Beep enabled", IDC_BEEP); checkbox(&cp, "Use background colour to &erase screen", IDC_BCE); checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT); - checkbox(&cp, "&Use local terminal line discipline", IDC_LDISCTERM); + checkbox(&cp, "&Use local terminal line discipline", IDC_LDISCTERM); endbox(&cp); treeview_insert(&tvfaff, 0, "Terminal"); } - /* The Keyboard panel. Accelerators used: [acgo] h?srvlxvnpmiet */ + /* The Keyboard panel. Accelerators used: [acgo] h?srvlxvnpmietu */ { struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); @@ -735,11 +741,14 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, beginbox(&cp, "Application keypad settings:", IDC_BOX_KEYBOARD2, IDC_BOXT_KEYBOARD2); checkbox(&cp, - "Application ke&ypad and cursor keys totally disabled", - IDC_NOAPPLIC); + "Application c&ursor keys totally disabled", + IDC_NOAPPLICC); radioline(&cp, "Initial state of cursor keys:", IDC_CURSTATIC, 2, "&Normal", IDC_CURNORMAL, "A&pplication", IDC_CURAPPLIC, NULL); + checkbox(&cp, + "Application ke&ypad keys totally disabled", + IDC_NOAPPLICK); radioline(&cp, "Initial state of numeric keypad:", IDC_KPSTATIC, 3, "Nor&mal", IDC_KPNORMAL, "Appl&ication", IDC_KPAPPLIC, @@ -754,7 +763,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, treeview_insert(&tvfaff, 1, "Keyboard"); } - /* The Window panel. Accelerators used: [acgo] bsdkw4ylp */ + /* The Window panel. Accelerators used: [acgo] bsdkw4ylpt */ { struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); @@ -782,6 +791,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, checkbox(&cp, "Window closes on ALT-F&4", IDC_ALTF4); checkbox(&cp, "S&ystem menu appears on ALT-Space", IDC_ALTSPACE); checkbox(&cp, "System menu appears on A< alone", IDC_ALTONLY); + checkbox(&cp, "Ensure window is always on &top", IDC_ALWAYSONTOP); endbox(&cp); treeview_insert(&tvfaff, 0, "Window"); @@ -792,7 +802,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); bartitle(&cp, "Options controlling PuTTY's appearance", - IDC_TITLE_WINDOW); + IDC_TITLE_APPEARANCE); beginbox(&cp, "Adjust the use of the cursor", IDC_BOX_APPEARANCE1, IDC_BOXT_APPEARANCE1); checkbox(&cp, "Cursor &blinks", IDC_BLINKCUR); @@ -964,6 +974,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, beginbox(&cp, "Protocol options", IDC_BOX_SSH3, IDC_BOXT_SSH3); checkbox(&cp, "Don't allocate a &pseudo-terminal", IDC_NOPTY); + checkbox(&cp, "Enable compr&ession", IDC_COMPRESS); radioline(&cp, "Preferred SSH protocol version:", IDC_SSHPROTSTATIC, 2, "&1", IDC_SSHPROT1, "&2", IDC_SSHPROT2, NULL); @@ -1153,6 +1164,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, init_dlg_ctrls(hwnd); if (!isdef) SetDlgItemText(hwnd, IDC_SESSEDIT, sessions[n]); + else + SetDlgItemText(hwnd, IDC_SESSEDIT, ""); } if (LOWORD(wParam) == IDC_SESSLIST) { /* @@ -1240,10 +1253,15 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.app_cursor = IsDlgButtonChecked (hwnd, IDC_CURAPPLIC); break; - case IDC_NOAPPLIC: + case IDC_NOAPPLICC: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.no_applic_c = IsDlgButtonChecked (hwnd, IDC_NOAPPLICC); + break; + case IDC_NOAPPLICK: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.no_applic = IsDlgButtonChecked (hwnd, IDC_NOAPPLIC); + cfg.no_applic_k = IsDlgButtonChecked (hwnd, IDC_NOAPPLICK); break; case IDC_ALTF4: if (HIWORD(wParam) == BN_CLICKED || @@ -1265,6 +1283,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.ldisc_term = IsDlgButtonChecked (hwnd, IDC_LDISCTERM); break; + case IDC_ALWAYSONTOP: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.alwaysontop = IsDlgButtonChecked (hwnd, IDC_ALWAYSONTOP); + break; case IDC_SCROLLKEY: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) @@ -1479,6 +1502,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.nopty = IsDlgButtonChecked (hwnd, IDC_NOPTY); break; + case IDC_COMPRESS: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.compression = IsDlgButtonChecked (hwnd, IDC_COMPRESS); + break; case IDC_BUGGYMAC: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED)