X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/fe8abbf463f798f37ee4f43b3b85583a80fbddf4..3d88e64dfcf5dc0fd361ce0c504c67a9196ce44c:/wincfg.c diff --git a/wincfg.c b/wincfg.c index 5b5bf9a4..896c1bc5 100644 --- a/wincfg.c +++ b/wincfg.c @@ -54,6 +54,41 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help, } /* + * Full-screen mode is a Windows peculiarity; hence + * scrollbar_in_fullscreen is as well. + */ + s = ctrl_getset(b, "Window", "scrollback", + "Control the scrollback in the window"); + ctrl_checkbox(s, "Display scrollbar in full screen mode", 'i', + HELPCTX(window_scrollback), + dlg_stdcheckbox_handler, + I(offsetof(Config,scrollbar_in_fullscreen))); + /* + * Really this wants to go just after `Display scrollbar'. See + * if we can find that control, and do some shuffling. + */ + { + int i; + for (i = 0; i < s->ncontrols; i++) { + c = s->ctrls[i]; + if (c->generic.type == CTRL_CHECKBOX && + c->generic.context.i == offsetof(Config,scrollbar)) { + /* + * Control i is the scrollbar checkbox. + * Control s->ncontrols-1 is the scrollbar-in-FS one. + */ + if (i < s->ncontrols-2) { + c = s->ctrls[s->ncontrols-1]; + memmove(s->ctrls+i+2, s->ctrls+i+1, + (s->ncontrols-i-2)*sizeof(union control *)); + s->ctrls[i+1] = c; + } + break; + } + } + } + + /* * Windows has the AltGr key, which has various Windows- * specific options. */ @@ -93,19 +128,15 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help, assert(c->generic.handler == dlg_stdradiobutton_handler); c->radio.nbuttons++; c->radio.buttons = - srealloc(c->radio.buttons, - c->radio.nbuttons * sizeof(*c->radio.buttons)); + sresize(c->radio.buttons, c->radio.nbuttons, char *); c->radio.buttons[c->radio.nbuttons-1] = dupstr("Play a custom sound file"); c->radio.buttondata = - srealloc(c->radio.buttondata, - c->radio.nbuttons * sizeof(*c->radio.buttondata)); + sresize(c->radio.buttondata, c->radio.nbuttons, intorptr); c->radio.buttondata[c->radio.nbuttons-1] = I(BELL_WAVEFILE); if (c->radio.shortcuts) { c->radio.shortcuts = - srealloc(c->radio.shortcuts, - (c->radio.nbuttons * - sizeof(*c->radio.shortcuts))); + sresize(c->radio.shortcuts, c->radio.nbuttons, char); c->radio.shortcuts[c->radio.nbuttons-1] = NO_SHORTCUT; } break; @@ -166,29 +197,23 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, int has_help, assert(c->generic.handler == dlg_stdradiobutton_handler); c->radio.nbuttons += 2; c->radio.buttons = - srealloc(c->radio.buttons, - c->radio.nbuttons * sizeof(*c->radio.buttons)); + sresize(c->radio.buttons, c->radio.nbuttons, char *); c->radio.buttons[c->radio.nbuttons-2] = dupstr("Use font in both ANSI and OEM modes"); c->radio.buttons[c->radio.nbuttons-1] = dupstr("Use font in OEM mode only"); c->radio.buttondata = - srealloc(c->radio.buttondata, - c->radio.nbuttons * sizeof(*c->radio.buttondata)); + sresize(c->radio.buttondata, c->radio.nbuttons, intorptr); c->radio.buttondata[c->radio.nbuttons-2] = I(VT_OEMANSI); c->radio.buttondata[c->radio.nbuttons-1] = I(VT_OEMONLY); if (!c->radio.shortcuts) { int j; - c->radio.shortcuts = - smalloc((c->radio.nbuttons * - sizeof(*c->radio.shortcuts))); + c->radio.shortcuts = snewn(c->radio.nbuttons, char); for (j = 0; j < c->radio.nbuttons; j++) c->radio.shortcuts[j] = NO_SHORTCUT; } else { - c->radio.shortcuts = - srealloc(c->radio.shortcuts, - (c->radio.nbuttons * - sizeof(*c->radio.shortcuts))); + c->radio.shortcuts = sresize(c->radio.shortcuts, + c->radio.nbuttons, char); } c->radio.shortcuts[c->radio.nbuttons-2] = 'b'; c->radio.shortcuts[c->radio.nbuttons-1] = 'e';