Rectangular-block selection. Enabled by Alt+drag, unless you
[sgt/putty] / windlg.c
index 91a2e27..52e092d 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -359,6 +359,7 @@ enum { IDCX_ABOUT =
     IDC_RESIZEFONT,
     IDC_RESIZENONE,
     IDC_SCROLLBAR,
+    IDC_SCROLLBARFULLSCREEN,
     IDC_CLOSEWARN,
     IDC_SAVESTATIC,
     IDC_SAVEEDIT,
@@ -478,6 +479,9 @@ enum { IDCX_ABOUT =
     IDC_MBWINDOWS,
     IDC_MBXTERM,
     IDC_MOUSEOVERRIDE,
+    IDC_SELTYPESTATIC,
+    IDC_SELTYPELEX,
+    IDC_SELTYPERECT,
     IDC_CCSTATIC,
     IDC_CCLIST,
     IDC_CCSET,
@@ -675,6 +679,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
                     cfg.cursor_type == 1 ? IDC_CURUNDER : IDC_CURVERT);
     CheckDlgButton(hwnd, IDC_BLINKCUR, cfg.blink_cur);
     CheckDlgButton(hwnd, IDC_SCROLLBAR, cfg.scrollbar);
+    CheckDlgButton(hwnd, IDC_SCROLLBARFULLSCREEN, cfg.scrollbar_in_fullscreen);
     CheckRadioButton(hwnd, IDC_RESIZETERM, IDC_RESIZENONE,
                     cfg.resize_action == RESIZE_TERM ? IDC_RESIZETERM :
                     cfg.resize_action == RESIZE_FONT ? IDC_RESIZEFONT :
@@ -761,9 +766,10 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
 
     }
 
-
     CheckRadioButton(hwnd, IDC_MBWINDOWS, IDC_MBXTERM,
                     cfg.mouse_is_xterm ? IDC_MBXTERM : IDC_MBWINDOWS);
+    CheckRadioButton(hwnd, IDC_SELTYPELEX, IDC_SELTYPERECT,
+                    cfg.rect_select == 0 ? IDC_SELTYPELEX : IDC_SELTYPERECT);
     CheckDlgButton(hwnd, IDC_MOUSEOVERRIDE, cfg.mouse_override);
     CheckDlgButton(hwnd, IDC_RAWCNP, cfg.rawcnp);
     {
@@ -1040,7 +1046,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
     }
 
     if (panel == windowpanelstart) {
-       /* The Window panel. Accelerators used: [acgo] rmz sdkp w4ylt f */
+       /* The Window panel. Accelerators used: [acgo] rmz sdikp w4ylt f */
        struct ctlpos cp;
        ctlposinit(&cp, hwnd, 80, 3, 13);
        bartitle(&cp, "Options controlling PuTTY's window",
@@ -1059,6 +1065,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
        staticedit(&cp, "Lines of &scrollback",
                   IDC_SAVESTATIC, IDC_SAVEEDIT, 50);
        checkbox(&cp, "&Display scrollbar", IDC_SCROLLBAR);
+       checkbox(&cp, "D&isplay scrollbar in full screen mode", IDC_SCROLLBARFULLSCREEN);
        checkbox(&cp, "Reset scrollback on &keypress", IDC_SCROLLKEY);
        checkbox(&cp, "Reset scrollback on dis&play activity",
                 IDC_SCROLLDISP);
@@ -1138,7 +1145,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
     }
 
     if (panel == selectionpanelstart) {
-       /* The Selection panel. Accelerators used: [acgo] d wxp hst */
+       /* The Selection panel. Accelerators used: [acgo] d wxp hst nr */
        struct ctlpos cp;
        ctlposinit(&cp, hwnd, 80, 3, 13);
        bartitle(&cp, "Options controlling copy and paste",
@@ -1158,6 +1165,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
        checkbox(&cp,
                 "Shift overrides a&pplication's use of mouse",
                 IDC_MOUSEOVERRIDE);
+        radioline(&cp,
+                  "Default selection mode (Alt+drag does the other one):",
+                  IDC_SELTYPESTATIC, 2,
+                 "&Normal", IDC_SELTYPELEX,
+                 "&Rectangular block", IDC_SELTYPERECT, NULL);
        endbox(&cp);
        beginbox(&cp, "Control the select-one-word-at-a-time mode",
                 IDC_BOX_SELECTION3);
@@ -1432,7 +1444,7 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
            r.left = 3;
            r.right = r.left + 75;
            r.top = 13;
-           r.bottom = r.top + 206;
+           r.bottom = r.top + 219;
            MapDialogRect(hwnd, &r);
            treeview = CreateWindowEx(WS_EX_CLIENTEDGE, WC_TREEVIEW, "",
                                      WS_CHILD | WS_VISIBLE |
@@ -2114,6 +2126,12 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
                        cfg.scrollbar =
                        IsDlgButtonChecked(hwnd, IDC_SCROLLBAR);
                break;
+             case IDC_SCROLLBARFULLSCREEN:
+               if (HIWORD(wParam) == BN_CLICKED ||
+                   HIWORD(wParam) == BN_DOUBLECLICKED)
+                   cfg.scrollbar_in_fullscreen =
+                   IsDlgButtonChecked(hwnd, IDC_SCROLLBARFULLSCREEN);
+               break;
              case IDC_RESIZETERM:
              case IDC_RESIZEFONT:
              case IDC_RESIZENONE:
@@ -2398,6 +2416,10 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
              case IDC_MBXTERM:
                cfg.mouse_is_xterm = IsDlgButtonChecked(hwnd, IDC_MBXTERM);
                break;
+             case IDC_SELTYPELEX:
+             case IDC_SELTYPERECT:
+               cfg.rect_select = IsDlgButtonChecked(hwnd, IDC_SELTYPERECT);
+               break;
              case IDC_MOUSEOVERRIDE:
                cfg.mouse_override = IsDlgButtonChecked(hwnd, IDC_MOUSEOVERRIDE);
                break;