1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 09:27:59 +00:00

Macro wrapper on ctrl_radiobuttons to fill in the NULL.

ctrl_radiobuttons has a variadic argument list that it expects to be
terminated by a null pointer where a const char * should be. So the
terminating NULL at each call site ought to be cast to const char *,
for the usual reason (NULL might expand literally to something not the
same size as a pointer and get mis-marshalled in the variadic argument
list). It wasn't being.

Fixed in the same way as dupcat: I've turned ctrl_radiobuttons into a
macro wrapper on the underlying function, which adds the NULL
automatically with its correct cast. This also saves verbiage at every
call site, because now I can leave out all the NULLs there.
This commit is contained in:
Simon Tatham 2022-06-01 11:14:21 +01:00
parent 5a28658a6d
commit e0959d4647
4 changed files with 47 additions and 55 deletions

View File

@ -1844,7 +1844,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
ctrl_columns(s, 2, 62, 38); ctrl_columns(s, 2, 62, 38);
c = ctrl_radiobuttons(s, NULL, NO_SHORTCUT, 3, c = ctrl_radiobuttons(s, NULL, NO_SHORTCUT, 3,
HELPCTX(session_hostname), HELPCTX(session_hostname),
config_protocols_handler, P(hp), NULL); config_protocols_handler, P(hp));
c->column = 0; c->column = 0;
hp->protradio = c; hp->protradio = c;
c->radio.buttons = sresize(c->radio.buttons, PROTOCOL_LIMIT, char *); c->radio.buttons = sresize(c->radio.buttons, PROTOCOL_LIMIT, char *);
@ -1944,7 +1944,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_close_on_exit), I(CONF_close_on_exit),
"Always", I(FORCE_ON), "Always", I(FORCE_ON),
"Never", I(FORCE_OFF), "Never", I(FORCE_OFF),
"Only on clean exit", I(AUTO), NULL); "Only on clean exit", I(AUTO));
/* /*
* The Session/Logging panel. * The Session/Logging panel.
@ -1974,8 +1974,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
"Printable output", 'p', I(LGTYP_ASCII), "Printable output", 'p', I(LGTYP_ASCII),
"All session output", 'l', I(LGTYP_DEBUG), "All session output", 'l', I(LGTYP_DEBUG),
sshlogname, 's', I(LGTYP_PACKETS), sshlogname, 's', I(LGTYP_PACKETS),
sshrawlogname, 'r', I(LGTYP_SSHRAW), sshrawlogname, 'r', I(LGTYP_SSHRAW));
NULL);
} }
ctrl_filesel(s, "Log file name:", 'f', ctrl_filesel(s, "Log file name:", 'f',
NULL, true, "Select session log file name", NULL, true, "Select session log file name",
@ -1989,7 +1988,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler, I(CONF_logxfovr), conf_radiobutton_handler, I(CONF_logxfovr),
"Always overwrite it", I(LGXF_OVR), "Always overwrite it", I(LGXF_OVR),
"Always append to the end of it", I(LGXF_APN), "Always append to the end of it", I(LGXF_APN),
"Ask the user every time", I(LGXF_ASK), NULL); "Ask the user every time", I(LGXF_ASK));
ctrl_checkbox(s, "Flush log file frequently", 'u', ctrl_checkbox(s, "Flush log file frequently", 'u',
HELPCTX(logging_flush), HELPCTX(logging_flush),
conf_checkbox_handler, I(CONF_logflush)); conf_checkbox_handler, I(CONF_logflush));
@ -2043,13 +2042,13 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler,I(CONF_localecho), conf_radiobutton_handler,I(CONF_localecho),
"Auto", I(AUTO), "Auto", I(AUTO),
"Force on", I(FORCE_ON), "Force on", I(FORCE_ON),
"Force off", I(FORCE_OFF), NULL); "Force off", I(FORCE_OFF));
ctrl_radiobuttons(s, "Local line editing:", 't', 3, ctrl_radiobuttons(s, "Local line editing:", 't', 3,
HELPCTX(terminal_localedit), HELPCTX(terminal_localedit),
conf_radiobutton_handler,I(CONF_localedit), conf_radiobutton_handler,I(CONF_localedit),
"Auto", I(AUTO), "Auto", I(AUTO),
"Force on", I(FORCE_ON), "Force on", I(FORCE_ON),
"Force off", I(FORCE_OFF), NULL); "Force off", I(FORCE_OFF));
s = ctrl_getset(b, "Terminal", "printing", "Remote-controlled printing"); s = ctrl_getset(b, "Terminal", "printing", "Remote-controlled printing");
ctrl_combobox(s, "Printer to send ANSI printer output to:", 'p', 100, ctrl_combobox(s, "Printer to send ANSI printer output to:", 'p', 100,
@ -2068,12 +2067,12 @@ void setup_config_box(struct controlbox *b, bool midsession,
HELPCTX(keyboard_backspace), HELPCTX(keyboard_backspace),
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_bksp_is_delete), I(CONF_bksp_is_delete),
"Control-H", I(0), "Control-? (127)", I(1), NULL); "Control-H", I(0), "Control-? (127)", I(1));
ctrl_radiobuttons(s, "The Home and End keys", 'e', 2, ctrl_radiobuttons(s, "The Home and End keys", 'e', 2,
HELPCTX(keyboard_homeend), HELPCTX(keyboard_homeend),
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_rxvt_homeend), I(CONF_rxvt_homeend),
"Standard", I(false), "rxvt", I(true), NULL); "Standard", I(false), "rxvt", I(true));
ctrl_radiobuttons(s, "The Function keys and keypad", 'f', 4, ctrl_radiobuttons(s, "The Function keys and keypad", 'f', 4,
HELPCTX(keyboard_funkeys), HELPCTX(keyboard_funkeys),
conf_radiobutton_handler, conf_radiobutton_handler,
@ -2084,14 +2083,13 @@ void setup_config_box(struct controlbox *b, bool midsession,
"VT400", I(FUNKY_VT400), "VT400", I(FUNKY_VT400),
"VT100+", I(FUNKY_VT100P), "VT100+", I(FUNKY_VT100P),
"SCO", I(FUNKY_SCO), "SCO", I(FUNKY_SCO),
"Xterm 216+", I(FUNKY_XTERM_216), "Xterm 216+", I(FUNKY_XTERM_216));
NULL);
ctrl_radiobuttons(s, "Shift/Ctrl/Alt with the arrow keys", 'w', 2, ctrl_radiobuttons(s, "Shift/Ctrl/Alt with the arrow keys", 'w', 2,
HELPCTX(keyboard_sharrow), HELPCTX(keyboard_sharrow),
conf_radiobutton_handler, conf_radiobutton_handler,
I(CONF_sharrow_type), I(CONF_sharrow_type),
"Ctrl toggles app mode", I(SHARROW_APPLICATION), "Ctrl toggles app mode", I(SHARROW_APPLICATION),
"xterm-style bitmap", I(SHARROW_BITMAP), NULL); "xterm-style bitmap", I(SHARROW_BITMAP));
s = ctrl_getset(b, "Terminal/Keyboard", "appkeypad", s = ctrl_getset(b, "Terminal/Keyboard", "appkeypad",
"Application keypad settings:"); "Application keypad settings:");
@ -2099,12 +2097,11 @@ void setup_config_box(struct controlbox *b, bool midsession,
HELPCTX(keyboard_appcursor), HELPCTX(keyboard_appcursor),
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_app_cursor), I(CONF_app_cursor),
"Normal", I(0), "Application", I(1), NULL); "Normal", I(0), "Application", I(1));
ctrl_radiobuttons(s, "Initial state of numeric keypad:", 'n', 3, ctrl_radiobuttons(s, "Initial state of numeric keypad:", 'n', 3,
HELPCTX(keyboard_appkeypad), HELPCTX(keyboard_appkeypad),
numeric_keypad_handler, P(NULL), numeric_keypad_handler, P(NULL),
"Normal", I(0), "Application", I(1), "NetHack", I(2), "Normal", I(0), "Application", I(1), "NetHack", I(2));
NULL);
/* /*
* The Terminal/Bell panel. * The Terminal/Bell panel.
@ -2118,7 +2115,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler, I(CONF_beep), conf_radiobutton_handler, I(CONF_beep),
"None (bell disabled)", I(BELL_DISABLED), "None (bell disabled)", I(BELL_DISABLED),
"Make default system alert sound", I(BELL_DEFAULT), "Make default system alert sound", I(BELL_DEFAULT),
"Visual bell (flash window)", I(BELL_VISUAL), NULL); "Visual bell (flash window)", I(BELL_VISUAL));
s = ctrl_getset(b, "Terminal/Bell", "overload", s = ctrl_getset(b, "Terminal/Bell", "overload",
"Control the bell overload behaviour"); "Control the bell overload behaviour");
@ -2172,7 +2169,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_remote_qtitle_action), I(CONF_remote_qtitle_action),
"None", I(TITLE_NONE), "None", I(TITLE_NONE),
"Empty string", I(TITLE_EMPTY), "Empty string", I(TITLE_EMPTY),
"Window title", I(TITLE_REAL), NULL); "Window title", I(TITLE_REAL));
ctrl_checkbox(s, "Disable remote-controlled clearing of scrollback", 'e', ctrl_checkbox(s, "Disable remote-controlled clearing of scrollback", 'e',
HELPCTX(features_clearscroll), HELPCTX(features_clearscroll),
conf_checkbox_handler, conf_checkbox_handler,
@ -2249,7 +2246,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_cursor_type), I(CONF_cursor_type),
"Block", 'l', I(0), "Block", 'l', I(0),
"Underline", 'u', I(1), "Underline", 'u', I(1),
"Vertical line", 'v', I(2), NULL); "Vertical line", 'v', I(2));
ctrl_checkbox(s, "Cursor blinks", 'b', ctrl_checkbox(s, "Cursor blinks", 'b',
HELPCTX(appearance_cursor), HELPCTX(appearance_cursor),
conf_checkbox_handler, I(CONF_blink_cur)); conf_checkbox_handler, I(CONF_blink_cur));
@ -2315,13 +2312,12 @@ void setup_config_box(struct controlbox *b, bool midsession,
str = dupprintf("Adjust how %s handles line drawing characters", appname); str = dupprintf("Adjust how %s handles line drawing characters", appname);
s = ctrl_getset(b, "Window/Translation", "linedraw", str); s = ctrl_getset(b, "Window/Translation", "linedraw", str);
sfree(str); sfree(str);
ctrl_radiobuttons(s, "Handling of line drawing characters:", NO_SHORTCUT,1, ctrl_radiobuttons(
HELPCTX(translation_linedraw), s, "Handling of line drawing characters:", NO_SHORTCUT,1,
conf_radiobutton_handler, HELPCTX(translation_linedraw),
I(CONF_vtmode), conf_radiobutton_handler, I(CONF_vtmode),
"Use Unicode line drawing code points",'u',I(VT_UNICODE), "Use Unicode line drawing code points",'u',I(VT_UNICODE),
"Poor man's line drawing (+, - and |)",'p',I(VT_POORMAN), "Poor man's line drawing (+, - and |)",'p',I(VT_POORMAN));
NULL);
ctrl_checkbox(s, "Copy and paste line drawing characters as lqqqk",'d', ctrl_checkbox(s, "Copy and paste line drawing characters as lqqqk",'d',
HELPCTX(selection_linedraw), HELPCTX(selection_linedraw),
conf_checkbox_handler, I(CONF_rawcnp)); conf_checkbox_handler, I(CONF_rawcnp));
@ -2346,7 +2342,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_rect_select), I(CONF_rect_select),
"Normal", 'n', I(false), "Normal", 'n', I(false),
"Rectangular block", 'r', I(true), NULL); "Rectangular block", 'r', I(true));
s = ctrl_getset(b, "Window/Selection", "clipboards", s = ctrl_getset(b, "Window/Selection", "clipboards",
"Assign copy/paste actions to clipboards"); "Assign copy/paste actions to clipboards");
@ -2422,8 +2418,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler, I(CONF_bold_style), conf_radiobutton_handler, I(CONF_bold_style),
"The font", I(1), "The font", I(1),
"The colour", I(2), "The colour", I(2),
"Both", I(3), "Both", I(3));
NULL);
str = dupprintf("Adjust the precise colours %s displays", appname); str = dupprintf("Adjust the precise colours %s displays", appname);
s = ctrl_getset(b, "Window/Colours", "adjust", str); s = ctrl_getset(b, "Window/Colours", "adjust", str);
@ -2488,8 +2483,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_addressfamily), I(CONF_addressfamily),
"Auto", 'u', I(ADDRTYPE_UNSPEC), "Auto", 'u', I(ADDRTYPE_UNSPEC),
"IPv4", '4', I(ADDRTYPE_IPV4), "IPv4", '4', I(ADDRTYPE_IPV4),
"IPv6", '6', I(ADDRTYPE_IPV6), "IPv6", '6', I(ADDRTYPE_IPV6));
NULL);
#endif #endif
{ {
@ -2528,8 +2522,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_username_from_env), I(CONF_username_from_env),
"Prompt", I(false), "Prompt", I(false),
userlabel, I(true), userlabel, I(true));
NULL);
sfree(userlabel); sfree(userlabel);
} }
@ -2613,7 +2606,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_proxy_dns), I(CONF_proxy_dns),
"No", I(FORCE_OFF), "No", I(FORCE_OFF),
"Auto", I(AUTO), "Auto", I(AUTO),
"Yes", I(FORCE_ON), NULL); "Yes", I(FORCE_ON));
ctrl_editbox(s, "Username", 'u', 60, ctrl_editbox(s, "Username", 'u', 60,
HELPCTX(proxy_auth), HELPCTX(proxy_auth),
conf_editbox_handler, conf_editbox_handler,
@ -2635,7 +2628,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_proxy_log_to_term), I(CONF_proxy_log_to_term),
"No", I(FORCE_OFF), "No", I(FORCE_OFF),
"Yes", I(FORCE_ON), "Yes", I(FORCE_ON),
"Only until session starts", I(AUTO), NULL); "Only until session starts", I(AUTO));
} }
/* /*
@ -2722,7 +2715,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler, conf_radiobutton_handler,
I(CONF_sshprot), I(CONF_sshprot),
"2", '2', I(3), "2", '2', I(3),
"1 (INSECURE)", '1', I(0), NULL); "1 (INSECURE)", '1', I(0));
} }
/* /*
@ -3022,8 +3015,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
ttymodes_handler, P(td), ttymodes_handler, P(td),
"Auto", NO_SHORTCUT, P(NULL), "Auto", NO_SHORTCUT, P(NULL),
"Nothing", NO_SHORTCUT, P(NULL), "Nothing", NO_SHORTCUT, P(NULL),
"This:", NO_SHORTCUT, P(NULL), "This:", NO_SHORTCUT, P(NULL));
NULL);
td->valradio->column = 0; td->valradio->column = 0;
td->valbox = ctrl_editbox(s, NULL, NO_SHORTCUT, 100, td->valbox = ctrl_editbox(s, NULL, NO_SHORTCUT, 100,
HELPCTX(ssh_ttymodes), HELPCTX(ssh_ttymodes),
@ -3052,7 +3044,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_handler, conf_radiobutton_handler,
I(CONF_x11_auth), I(CONF_x11_auth),
"MIT-Magic-Cookie-1", I(X11_MIT), "MIT-Magic-Cookie-1", I(X11_MIT),
"XDM-Authorization-1", I(X11_XDM), NULL); "XDM-Authorization-1", I(X11_XDM));
} }
/* /*
@ -3112,8 +3104,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
portfwd_handler, P(pfd), portfwd_handler, P(pfd),
"Local", 'l', P(NULL), "Local", 'l', P(NULL),
"Remote", 'm', P(NULL), "Remote", 'm', P(NULL),
"Dynamic", 'y', P(NULL), "Dynamic", 'y', P(NULL));
NULL);
#ifndef NO_IPV6 #ifndef NO_IPV6
pfd->addressfamily = pfd->addressfamily =
ctrl_radiobuttons(s, NULL, NO_SHORTCUT, 3, ctrl_radiobuttons(s, NULL, NO_SHORTCUT, 3,
@ -3121,8 +3112,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
portfwd_handler, P(pfd), portfwd_handler, P(pfd),
"Auto", 'u', I(ADDRTYPE_UNSPEC), "Auto", 'u', I(ADDRTYPE_UNSPEC),
"IPv4", '4', I(ADDRTYPE_IPV4), "IPv4", '4', I(ADDRTYPE_IPV4),
"IPv6", '6', I(ADDRTYPE_IPV6), "IPv6", '6', I(ADDRTYPE_IPV6));
NULL);
#endif #endif
ctrl_tabdelay(s, pfd->addbutton); ctrl_tabdelay(s, pfd->addbutton);
ctrl_columns(s, 1, 100); ctrl_columns(s, 1, 100);
@ -3251,12 +3241,12 @@ void setup_config_box(struct controlbox *b, bool midsession,
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_rfc_environ), I(CONF_rfc_environ),
"BSD (commonplace)", 'b', I(false), "BSD (commonplace)", 'b', I(false),
"RFC 1408 (unusual)", 'f', I(true), NULL); "RFC 1408 (unusual)", 'f', I(true));
ctrl_radiobuttons(s, "Telnet negotiation mode:", 't', 2, ctrl_radiobuttons(s, "Telnet negotiation mode:", 't', 2,
HELPCTX(telnet_passive), HELPCTX(telnet_passive),
conf_radiobutton_bool_handler, conf_radiobutton_bool_handler,
I(CONF_passive_telnet), I(CONF_passive_telnet),
"Passive", I(true), "Active", I(false), NULL); "Passive", I(true), "Active", I(false));
} }
ctrl_checkbox(s, "Keyboard sends Telnet special commands", 'k', ctrl_checkbox(s, "Keyboard sends Telnet special commands", 'k',
HELPCTX(telnet_specialkeys), HELPCTX(telnet_specialkeys),
@ -3303,7 +3293,7 @@ void setup_config_box(struct controlbox *b, bool midsession,
I(CONF_supdup_ascii_set), I(CONF_supdup_ascii_set),
"None", I(SUPDUP_CHARSET_ASCII), "None", I(SUPDUP_CHARSET_ASCII),
"ITS", I(SUPDUP_CHARSET_ITS), "ITS", I(SUPDUP_CHARSET_ITS),
"WAITS", I(SUPDUP_CHARSET_WAITS), NULL); "WAITS", I(SUPDUP_CHARSET_WAITS));
ctrl_checkbox(s, "**MORE** processing", 'm', ctrl_checkbox(s, "**MORE** processing", 'm',
HELPCTX(supdup_more), HELPCTX(supdup_more),

View File

@ -282,9 +282,9 @@ dlgcontrol *ctrl_combobox(struct controlset *s, const char *label,
* title is expected to be followed by a shortcut _iff_ `shortcut' * title is expected to be followed by a shortcut _iff_ `shortcut'
* is NO_SHORTCUT. * is NO_SHORTCUT.
*/ */
dlgcontrol *ctrl_radiobuttons(struct controlset *s, const char *label, dlgcontrol *ctrl_radiobuttons_fn(struct controlset *s, const char *label,
char shortcut, int ncolumns, intorptr helpctx, char shortcut, int ncolumns, intorptr helpctx,
handler_fn handler, intorptr context, ...) handler_fn handler, intorptr context, ...)
{ {
va_list ap; va_list ap;
int i; int i;

View File

@ -532,9 +532,11 @@ dlgcontrol *ctrl_combobox(struct controlset *, const char *label,
* title is expected to be followed by a shortcut _iff_ `shortcut' * title is expected to be followed by a shortcut _iff_ `shortcut'
* is NO_SHORTCUT. * is NO_SHORTCUT.
*/ */
dlgcontrol *ctrl_radiobuttons(struct controlset *, const char *label, dlgcontrol *ctrl_radiobuttons_fn(struct controlset *, const char *label,
char shortcut, int ncolumns, intorptr helpctx, char shortcut, int ncolumns, intorptr helpctx,
handler_fn handler, intorptr context, ...); handler_fn handler, intorptr context, ...);
#define ctrl_radiobuttons(...) \
ctrl_radiobuttons_fn(__VA_ARGS__, (const char *)NULL)
dlgcontrol *ctrl_pushbutton(struct controlset *, const char *label, dlgcontrol *ctrl_pushbutton(struct controlset *, const char *label,
char shortcut, intorptr helpctx, char shortcut, intorptr helpctx,
handler_fn handler, intorptr context); handler_fn handler, intorptr context);

View File

@ -173,7 +173,7 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, bool has_help,
I(CONF_beep_ind), I(CONF_beep_ind),
"Disabled", I(B_IND_DISABLED), "Disabled", I(B_IND_DISABLED),
"Flashing", I(B_IND_FLASH), "Flashing", I(B_IND_FLASH),
"Steady", I(B_IND_STEADY), NULL); "Steady", I(B_IND_STEADY));
/* /*
* The sunken-edge border is a Windows GUI feature. * The sunken-edge border is a Windows GUI feature.
@ -198,7 +198,7 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, bool has_help,
"Antialiased", I(FQ_ANTIALIASED), "Antialiased", I(FQ_ANTIALIASED),
"Non-Antialiased", I(FQ_NONANTIALIASED), "Non-Antialiased", I(FQ_NONANTIALIASED),
"ClearType", I(FQ_CLEARTYPE), "ClearType", I(FQ_CLEARTYPE),
"Default", I(FQ_DEFAULT), NULL); "Default", I(FQ_DEFAULT));
/* /*
* Cyrillic Lock is a horrid misfeature even on Windows, and * Cyrillic Lock is a horrid misfeature even on Windows, and
@ -289,7 +289,7 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, bool has_help,
I(CONF_mouse_is_xterm), I(CONF_mouse_is_xterm),
"Windows (Middle extends, Right brings up menu)", I(2), "Windows (Middle extends, Right brings up menu)", I(2),
"Compromise (Middle extends, Right pastes)", I(0), "Compromise (Middle extends, Right pastes)", I(0),
"xterm (Right extends, Middle pastes)", I(1), NULL); "xterm (Right extends, Middle pastes)", I(1));
/* /*
* This really ought to go at the _top_ of its box, not the * This really ought to go at the _top_ of its box, not the
* bottom, so we'll just do some shuffling now we've set it * bottom, so we'll just do some shuffling now we've set it
@ -328,7 +328,7 @@ void win_setup_config_box(struct controlbox *b, HWND *hwndp, bool has_help,
"Change the number of rows and columns", I(RESIZE_TERM), "Change the number of rows and columns", I(RESIZE_TERM),
"Change the size of the font", I(RESIZE_FONT), "Change the size of the font", I(RESIZE_FONT),
"Change font size only when maximised", I(RESIZE_EITHER), "Change font size only when maximised", I(RESIZE_EITHER),
"Forbid resizing completely", I(RESIZE_DISABLED), NULL); "Forbid resizing completely", I(RESIZE_DISABLED));
} }
/* /*