menu.c revision 5307cd1a
15307cd1aSmrg/* $XTermId: menu.c,v 1.369.1.1 2022/10/07 08:00:53 Ben.Wong Exp $ */ 2d522f475Smrg 3d522f475Smrg/* 45307cd1aSmrg * Copyright 1999-2021,2022 by Thomas E. Dickey 520d2c4d2Smrg * 620d2c4d2Smrg * All Rights Reserved 720d2c4d2Smrg * 820d2c4d2Smrg * Permission is hereby granted, free of charge, to any person obtaining a 920d2c4d2Smrg * copy of this software and associated documentation files (the 1020d2c4d2Smrg * "Software"), to deal in the Software without restriction, including 1120d2c4d2Smrg * without limitation the rights to use, copy, modify, merge, publish, 1220d2c4d2Smrg * distribute, sublicense, and/or sell copies of the Software, and to 1320d2c4d2Smrg * permit persons to whom the Software is furnished to do so, subject to 1420d2c4d2Smrg * the following conditions: 1520d2c4d2Smrg * 1620d2c4d2Smrg * The above copyright notice and this permission notice shall be included 1720d2c4d2Smrg * in all copies or substantial portions of the Software. 1820d2c4d2Smrg * 1920d2c4d2Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2020d2c4d2Smrg * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2120d2c4d2Smrg * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2220d2c4d2Smrg * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 2320d2c4d2Smrg * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2420d2c4d2Smrg * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2520d2c4d2Smrg * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2620d2c4d2Smrg * 2720d2c4d2Smrg * Except as contained in this notice, the name(s) of the above copyright 2820d2c4d2Smrg * holders shall not be used in advertising or otherwise to promote the 2920d2c4d2Smrg * sale, use or other dealings in this Software without prior written 3020d2c4d2Smrg * authorization. 3120d2c4d2Smrg * 32a1f3da82Smrg * 33f2e35a3aSmrg * Copyright 1989 X Consortium 3420d2c4d2Smrg * 3520d2c4d2Smrg * Permission to use, copy, modify, distribute, and sell this software and its 3620d2c4d2Smrg * documentation for any purpose is hereby granted without fee, provided that 3720d2c4d2Smrg * the above copyright notice appear in all copies and that both that 3820d2c4d2Smrg * copyright notice and this permission notice appear in supporting 3920d2c4d2Smrg * documentation. 4020d2c4d2Smrg * 4120d2c4d2Smrg * The above copyright notice and this permission notice shall be included in 4220d2c4d2Smrg * all copies or substantial portions of the Software. 4320d2c4d2Smrg * 4420d2c4d2Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 4520d2c4d2Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 4620d2c4d2Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 4720d2c4d2Smrg * OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 4820d2c4d2Smrg * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 4920d2c4d2Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 5020d2c4d2Smrg * 51f2e35a3aSmrg * Except as contained in this notice, the name of the X Consortium shall not be 5220d2c4d2Smrg * used in advertising or otherwise to promote the sale, use or other dealings 53f2e35a3aSmrg * in this Software without prior written authorization from the X Consortium. 5420d2c4d2Smrg */ 55d522f475Smrg 56d522f475Smrg#include <xterm.h> 57d522f475Smrg#include <data.h> 58d522f475Smrg#include <menu.h> 59d522f475Smrg#include <fontutils.h> 60d522f475Smrg#include <xstrings.h> 61d522f475Smrg 62d522f475Smrg#include <X11/Xmu/CharSet.h> 63d522f475Smrg 64d522f475Smrg#define app_con Xaw_app_con /* quiet a warning from SimpleMenu.h */ 65d522f475Smrg 66d522f475Smrg#if defined(HAVE_LIB_XAW) 67d522f475Smrg 68d522f475Smrg#include <X11/Xaw/SimpleMenu.h> 69d522f475Smrg#include <X11/Xaw/Box.h> 70d522f475Smrg#include <X11/Xaw/SmeBSB.h> 71d522f475Smrg#include <X11/Xaw/SmeLine.h> 72d522f475Smrg 73d522f475Smrg#if OPT_TOOLBAR 74d522f475Smrg#include <X11/Xaw/MenuButton.h> 75d522f475Smrg#include <X11/Xaw/Form.h> 76d522f475Smrg#endif 77d522f475Smrg 78d522f475Smrg#elif defined(HAVE_LIB_XAW3D) 79d522f475Smrg 80d522f475Smrg#include <X11/Xaw3d/SimpleMenu.h> 81d522f475Smrg#include <X11/Xaw3d/Box.h> 82d522f475Smrg#include <X11/Xaw3d/SmeBSB.h> 83d522f475Smrg#include <X11/Xaw3d/SmeLine.h> 84d522f475Smrg 85d522f475Smrg#if OPT_TOOLBAR 86d522f475Smrg#include <X11/Xaw3d/MenuButton.h> 87d522f475Smrg#include <X11/Xaw3d/Form.h> 88d522f475Smrg#endif 89d522f475Smrg 9001037d57Smrg#elif defined(HAVE_LIB_XAW3DXFT) 9101037d57Smrg 9201037d57Smrg#include <X11/Xaw3dxft/SimpleMenu.h> 9301037d57Smrg#include <X11/Xaw3dxft/Box.h> 9401037d57Smrg#include <X11/Xaw3dxft/SmeBSB.h> 9501037d57Smrg#include <X11/Xaw3dxft/SmeLine.h> 9601037d57Smrg 9701037d57Smrg#if OPT_TOOLBAR 9801037d57Smrg#include <X11/Xaw3dxft/MenuButton.h> 9901037d57Smrg#include <X11/Xaw3dxft/Form.h> 10001037d57Smrg#endif 10101037d57Smrg 102d522f475Smrg#elif defined(HAVE_LIB_NEXTAW) 103d522f475Smrg 104d522f475Smrg#include <X11/neXtaw/SimpleMenu.h> 105d522f475Smrg#include <X11/neXtaw/Box.h> 106d522f475Smrg#include <X11/neXtaw/SmeBSB.h> 107d522f475Smrg#include <X11/neXtaw/SmeLine.h> 108d522f475Smrg 109d522f475Smrg#if OPT_TOOLBAR 110d522f475Smrg#include <X11/neXtaw/MenuButton.h> 111d522f475Smrg#include <X11/neXtaw/Form.h> 112d522f475Smrg#endif 113d522f475Smrg 114d522f475Smrg#elif defined(HAVE_LIB_XAWPLUS) 115d522f475Smrg 116d522f475Smrg#include <X11/XawPlus/SimpleMenu.h> 117d522f475Smrg#include <X11/XawPlus/Box.h> 118d522f475Smrg#include <X11/XawPlus/SmeBSB.h> 119d522f475Smrg#include <X11/XawPlus/SmeLine.h> 120d522f475Smrg 121d522f475Smrg#if OPT_TOOLBAR 122d522f475Smrg#include <X11/XawPlus/MenuButton.h> 123d522f475Smrg#include <X11/XawPlus/Form.h> 124d522f475Smrg#endif 125d522f475Smrg 126d522f475Smrg#endif 127d522f475Smrg 128d522f475Smrg#undef app_con 129d522f475Smrg 130d522f475Smrg#include <stdio.h> 131d522f475Smrg#include <signal.h> 132956cc18dSsnj 133a1f3da82Smrg#if OPT_TRACE 134a1f3da82Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(func, mn, mi, val) 135a1f3da82Smrg#else 136a1f3da82Smrg#define UpdateCheckbox(func, mn, mi, val) UpdateMenuItem(mn, mi, val) 137a1f3da82Smrg#endif 138a1f3da82Smrg 139956cc18dSsnj#define ToggleFlag(flag) flag = (Boolean) !flag 140d522f475Smrg/* *INDENT-OFF* */ 141d522f475Smrgstatic void do_8bit_control PROTO_XT_CALLBACK_ARGS; 142d522f475Smrgstatic void do_allow132 PROTO_XT_CALLBACK_ARGS; 143e39b573cSmrgstatic void do_allowBoldFonts PROTO_XT_CALLBACK_ARGS; 144d522f475Smrgstatic void do_allowsends PROTO_XT_CALLBACK_ARGS; 145d522f475Smrgstatic void do_altscreen PROTO_XT_CALLBACK_ARGS; 146d522f475Smrgstatic void do_appcursor PROTO_XT_CALLBACK_ARGS; 147d522f475Smrgstatic void do_appkeypad PROTO_XT_CALLBACK_ARGS; 148d522f475Smrgstatic void do_autolinefeed PROTO_XT_CALLBACK_ARGS; 149d522f475Smrgstatic void do_autowrap PROTO_XT_CALLBACK_ARGS; 150d522f475Smrgstatic void do_backarrow PROTO_XT_CALLBACK_ARGS; 151d522f475Smrgstatic void do_bellIsUrgent PROTO_XT_CALLBACK_ARGS; 152d522f475Smrgstatic void do_continue PROTO_XT_CALLBACK_ARGS; 153d522f475Smrgstatic void do_delete_del PROTO_XT_CALLBACK_ARGS; 1542e4f8982Smrg#if OPT_SCREEN_DUMPS 1552e4f8982Smrgstatic void do_dump_html PROTO_XT_CALLBACK_ARGS; 1562e4f8982Smrgstatic void do_dump_svg PROTO_XT_CALLBACK_ARGS; 1572e4f8982Smrg#endif 158d522f475Smrgstatic void do_interrupt PROTO_XT_CALLBACK_ARGS; 159d522f475Smrgstatic void do_jumpscroll PROTO_XT_CALLBACK_ARGS; 1602e4f8982Smrgstatic void do_keepClipboard PROTO_XT_CALLBACK_ARGS; 161e39b573cSmrgstatic void do_keepSelection PROTO_XT_CALLBACK_ARGS; 162d522f475Smrgstatic void do_kill PROTO_XT_CALLBACK_ARGS; 163d522f475Smrgstatic void do_old_fkeys PROTO_XT_CALLBACK_ARGS; 164d522f475Smrgstatic void do_poponbell PROTO_XT_CALLBACK_ARGS; 165d522f475Smrgstatic void do_print PROTO_XT_CALLBACK_ARGS; 166d522f475Smrgstatic void do_print_redir PROTO_XT_CALLBACK_ARGS; 167d522f475Smrgstatic void do_redraw PROTO_XT_CALLBACK_ARGS; 168d522f475Smrgstatic void do_reversevideo PROTO_XT_CALLBACK_ARGS; 169d522f475Smrgstatic void do_reversewrap PROTO_XT_CALLBACK_ARGS; 170d522f475Smrgstatic void do_scrollbar PROTO_XT_CALLBACK_ARGS; 171d522f475Smrgstatic void do_scrollkey PROTO_XT_CALLBACK_ARGS; 172d522f475Smrgstatic void do_scrollttyoutput PROTO_XT_CALLBACK_ARGS; 173d522f475Smrgstatic void do_securekbd PROTO_XT_CALLBACK_ARGS; 174d522f475Smrgstatic void do_selectClipboard PROTO_XT_CALLBACK_ARGS; 175d522f475Smrgstatic void do_suspend PROTO_XT_CALLBACK_ARGS; 176d522f475Smrgstatic void do_terminate PROTO_XT_CALLBACK_ARGS; 177d522f475Smrgstatic void do_titeInhibit PROTO_XT_CALLBACK_ARGS; 178d522f475Smrgstatic void do_visualbell PROTO_XT_CALLBACK_ARGS; 179d522f475Smrgstatic void do_vtfont PROTO_XT_CALLBACK_ARGS; 180d522f475Smrg 181ad37e533Smrgstatic GCC_NORETURN void do_clearsavedlines PROTO_XT_CALLBACK_ARGS; 182ad37e533Smrgstatic GCC_NORETURN void do_hardreset PROTO_XT_CALLBACK_ARGS; 183ad37e533Smrgstatic GCC_NORETURN void do_quit PROTO_XT_CALLBACK_ARGS; 184ad37e533Smrgstatic GCC_NORETURN void do_softreset PROTO_XT_CALLBACK_ARGS; 185ad37e533Smrg 186d522f475Smrg#ifdef ALLOWLOGGING 187d522f475Smrgstatic void do_logging PROTO_XT_CALLBACK_ARGS; 188d522f475Smrg#endif 189d522f475Smrg 190d522f475Smrg#ifndef NO_ACTIVE_ICON 191d522f475Smrgstatic void do_activeicon PROTO_XT_CALLBACK_ARGS; 192d522f475Smrg#endif /* NO_ACTIVE_ICON */ 193d522f475Smrg 194956cc18dSsnj#if OPT_ALLOW_XXX_OPS 195956cc18dSsnjstatic void enable_allow_xxx_ops (Bool); 19620d2c4d2Smrgstatic void do_allowColorOps PROTO_XT_CALLBACK_ARGS; 197956cc18dSsnjstatic void do_allowFontOps PROTO_XT_CALLBACK_ARGS; 198913cc679Smrgstatic void do_allowMouseOps PROTO_XT_CALLBACK_ARGS; 19920d2c4d2Smrgstatic void do_allowTcapOps PROTO_XT_CALLBACK_ARGS; 200956cc18dSsnjstatic void do_allowTitleOps PROTO_XT_CALLBACK_ARGS; 201956cc18dSsnjstatic void do_allowWindowOps PROTO_XT_CALLBACK_ARGS; 202956cc18dSsnj#endif 203956cc18dSsnj 204d522f475Smrg#if OPT_BLINK_CURS 205d522f475Smrgstatic void do_cursorblink PROTO_XT_CALLBACK_ARGS; 206d522f475Smrg#endif 207d522f475Smrg 208d522f475Smrg#if OPT_BOX_CHARS 209d522f475Smrgstatic void do_font_boxchars PROTO_XT_CALLBACK_ARGS; 21020d2c4d2Smrgstatic void do_font_packed PROTO_XT_CALLBACK_ARGS; 211d522f475Smrg#endif 212d522f475Smrg 213d522f475Smrg#if OPT_DEC_CHRSET 214d522f475Smrgstatic void do_font_doublesize PROTO_XT_CALLBACK_ARGS; 215d522f475Smrg#endif 216d522f475Smrg 217d522f475Smrg#if OPT_DEC_SOFTFONT 218d522f475Smrgstatic void do_font_loadable PROTO_XT_CALLBACK_ARGS; 219d522f475Smrg#endif 220d522f475Smrg 221d522f475Smrg#if OPT_HP_FUNC_KEYS 222d522f475Smrgstatic void do_hp_fkeys PROTO_XT_CALLBACK_ARGS; 223d522f475Smrg#endif 224d522f475Smrg 225a1f3da82Smrg#if OPT_MAXIMIZE 226a1f3da82Smrgstatic void do_fullscreen PROTO_XT_CALLBACK_ARGS; 227a1f3da82Smrg#endif 228a1f3da82Smrg 229d522f475Smrg#if OPT_NUM_LOCK 230d522f475Smrgstatic void do_alt_esc PROTO_XT_CALLBACK_ARGS; 231d522f475Smrgstatic void do_num_lock PROTO_XT_CALLBACK_ARGS; 232d522f475Smrgstatic void do_meta_esc PROTO_XT_CALLBACK_ARGS; 233d522f475Smrg#endif 234d522f475Smrg 235e39b573cSmrg#if OPT_PRINT_ON_EXIT 236e39b573cSmrgstatic void do_write_now PROTO_XT_CALLBACK_ARGS; 237e39b573cSmrgstatic void do_write_error PROTO_XT_CALLBACK_ARGS; 238e39b573cSmrg#endif 239e39b573cSmrg 240d522f475Smrg#if OPT_RENDERFONT 241d522f475Smrgstatic void do_font_renderfont PROTO_XT_CALLBACK_ARGS; 242d522f475Smrg#endif 243d522f475Smrg 244d522f475Smrg#if OPT_SCO_FUNC_KEYS 245d522f475Smrgstatic void do_sco_fkeys PROTO_XT_CALLBACK_ARGS; 246d522f475Smrg#endif 247d522f475Smrg 248e0a2b6dfSmrg#if OPT_SIXEL_GRAPHICS 249e0a2b6dfSmrgstatic void do_sixelscrolling PROTO_XT_CALLBACK_ARGS; 250e0a2b6dfSmrg#endif 251e0a2b6dfSmrg 252894e0ac8Smrg#if OPT_GRAPHICS 253894e0ac8Smrgstatic void do_privatecolorregisters PROTO_XT_CALLBACK_ARGS; 254894e0ac8Smrg#endif 255894e0ac8Smrg 256d522f475Smrg#if OPT_SUN_FUNC_KEYS 257d522f475Smrgstatic void do_sun_fkeys PROTO_XT_CALLBACK_ARGS; 258d522f475Smrg#endif 259d522f475Smrg 260d522f475Smrg#if OPT_SUNPC_KBD 261d522f475Smrgstatic void do_sun_kbd PROTO_XT_CALLBACK_ARGS; 262d522f475Smrg#endif 263d522f475Smrg 264d522f475Smrg#if OPT_TCAP_FKEYS 265d522f475Smrgstatic void do_tcap_fkeys PROTO_XT_CALLBACK_ARGS; 266d522f475Smrg#endif 267d522f475Smrg 268d522f475Smrg#if OPT_TEK4014 269d522f475Smrgstatic void do_tekcopy PROTO_XT_CALLBACK_ARGS; 270d522f475Smrgstatic void do_tekhide PROTO_XT_CALLBACK_ARGS; 271d522f475Smrgstatic void do_tekmode PROTO_XT_CALLBACK_ARGS; 272d522f475Smrgstatic void do_tekonoff PROTO_XT_CALLBACK_ARGS; 273d522f475Smrgstatic void do_tekpage PROTO_XT_CALLBACK_ARGS; 274d522f475Smrgstatic void do_tekreset PROTO_XT_CALLBACK_ARGS; 275d522f475Smrgstatic void do_tekshow PROTO_XT_CALLBACK_ARGS; 276d522f475Smrgstatic void do_tektext2 PROTO_XT_CALLBACK_ARGS; 277d522f475Smrgstatic void do_tektext3 PROTO_XT_CALLBACK_ARGS; 278d522f475Smrgstatic void do_tektextlarge PROTO_XT_CALLBACK_ARGS; 279d522f475Smrgstatic void do_tektextsmall PROTO_XT_CALLBACK_ARGS; 280d522f475Smrgstatic void do_vthide PROTO_XT_CALLBACK_ARGS; 281d522f475Smrgstatic void do_vtmode PROTO_XT_CALLBACK_ARGS; 282d522f475Smrgstatic void do_vtonoff PROTO_XT_CALLBACK_ARGS; 283d522f475Smrgstatic void do_vtshow PROTO_XT_CALLBACK_ARGS; 284d522f475Smrgstatic void handle_tekshow (Widget gw, Bool allowswitch); 285d522f475Smrgstatic void handle_vtshow (Widget gw, Bool allowswitch); 286d522f475Smrg#endif 287d522f475Smrg 288d522f475Smrg#if OPT_TOOLBAR 289d522f475Smrgstatic void do_toolbar PROTO_XT_CALLBACK_ARGS; 290d522f475Smrg#endif 291d522f475Smrg 292d522f475Smrg#if OPT_WIDE_CHARS 293d522f475Smrgstatic void do_font_utf8_mode PROTO_XT_CALLBACK_ARGS; 294e39b573cSmrgstatic void do_font_utf8_fonts PROTO_XT_CALLBACK_ARGS; 295d522f475Smrgstatic void do_font_utf8_title PROTO_XT_CALLBACK_ARGS; 296d522f475Smrg#endif 297d522f475Smrg 298d522f475Smrg/* 299d522f475Smrg * The order of entries MUST match the values given in menu.h 300d522f475Smrg */ 301d522f475SmrgMenuEntry mainMenuEntries[] = { 302d522f475Smrg#if OPT_TOOLBAR 303d522f475Smrg { "toolbar", do_toolbar, NULL }, 304a1f3da82Smrg#endif 305a1f3da82Smrg#if OPT_MAXIMIZE 306a1f3da82Smrg { "fullscreen", do_fullscreen, NULL }, 307d522f475Smrg#endif 308d522f475Smrg { "securekbd", do_securekbd, NULL }, 309d522f475Smrg { "allowsends", do_allowsends, NULL }, 310d522f475Smrg { "redraw", do_redraw, NULL }, 311d522f475Smrg { "line1", NULL, NULL }, 312d522f475Smrg#ifdef ALLOWLOGGING 313d522f475Smrg { "logging", do_logging, NULL }, 314e39b573cSmrg#endif 3155307cd1aSmrg#if OPT_PRINT_ON_EXIT 316e39b573cSmrg { "print-immediate", do_write_now, NULL }, 317e39b573cSmrg { "print-on-error", do_write_error, NULL }, 318d522f475Smrg#endif 319d522f475Smrg { "print", do_print, NULL }, 320d522f475Smrg { "print-redir", do_print_redir, NULL }, 3212e4f8982Smrg#if OPT_SCREEN_DUMPS 3222e4f8982Smrg { "dump-html", do_dump_html, NULL }, 3232e4f8982Smrg { "dump-svg", do_dump_svg, NULL }, 3242e4f8982Smrg#endif 325d522f475Smrg { "line2", NULL, NULL }, 326d522f475Smrg { "8-bit control", do_8bit_control,NULL }, 327d522f475Smrg { "backarrow key", do_backarrow, NULL }, 328d522f475Smrg#if OPT_NUM_LOCK 329d522f475Smrg { "num-lock", do_num_lock, NULL }, 330d522f475Smrg { "alt-esc", do_alt_esc, NULL }, 331d522f475Smrg { "meta-esc", do_meta_esc, NULL }, 332d522f475Smrg#endif 333d522f475Smrg { "delete-is-del", do_delete_del, NULL }, 334d522f475Smrg { "oldFunctionKeys",do_old_fkeys, NULL }, 335d522f475Smrg#if OPT_TCAP_FKEYS 336d522f475Smrg { "tcapFunctionKeys",do_tcap_fkeys, NULL }, 337d522f475Smrg#endif 338d522f475Smrg#if OPT_HP_FUNC_KEYS 339d522f475Smrg { "hpFunctionKeys", do_hp_fkeys, NULL }, 340d522f475Smrg#endif 341d522f475Smrg#if OPT_SCO_FUNC_KEYS 342d522f475Smrg { "scoFunctionKeys",do_sco_fkeys, NULL }, 343d522f475Smrg#endif 344d522f475Smrg#if OPT_SUN_FUNC_KEYS 345d522f475Smrg { "sunFunctionKeys",do_sun_fkeys, NULL }, 346d522f475Smrg#endif 347d522f475Smrg#if OPT_SUNPC_KBD 348d522f475Smrg { "sunKeyboard", do_sun_kbd, NULL }, 349d522f475Smrg#endif 350d522f475Smrg { "line3", NULL, NULL }, 351d522f475Smrg { "suspend", do_suspend, NULL }, 352d522f475Smrg { "continue", do_continue, NULL }, 353d522f475Smrg { "interrupt", do_interrupt, NULL }, 354d522f475Smrg { "hangup", do_hangup, NULL }, 355d522f475Smrg { "terminate", do_terminate, NULL }, 356d522f475Smrg { "kill", do_kill, NULL }, 357d522f475Smrg { "line4", NULL, NULL }, 358d522f475Smrg { "quit", do_quit, NULL }}; 359d522f475Smrg 360d522f475SmrgMenuEntry vtMenuEntries[] = { 361d522f475Smrg { "scrollbar", do_scrollbar, NULL }, 362d522f475Smrg { "jumpscroll", do_jumpscroll, NULL }, 363d522f475Smrg { "reversevideo", do_reversevideo, NULL }, 364d522f475Smrg { "autowrap", do_autowrap, NULL }, 365d522f475Smrg { "reversewrap", do_reversewrap, NULL }, 366d522f475Smrg { "autolinefeed", do_autolinefeed, NULL }, 367d522f475Smrg { "appcursor", do_appcursor, NULL }, 368d522f475Smrg { "appkeypad", do_appkeypad, NULL }, 369d522f475Smrg { "scrollkey", do_scrollkey, NULL }, 370d522f475Smrg { "scrollttyoutput",do_scrollttyoutput, NULL }, 371d522f475Smrg { "allow132", do_allow132, NULL }, 372d522f475Smrg { "keepSelection", do_keepSelection, NULL }, 373f2e35a3aSmrg#if OPT_MENU_KEEPCLIPBOARD 374f2e35a3aSmrg { "keepClipboard", do_keepClipboard, NULL }, 375f2e35a3aSmrg#endif 376d522f475Smrg { "selectToClipboard",do_selectClipboard, NULL }, 377d522f475Smrg { "visualbell", do_visualbell, NULL }, 378d522f475Smrg { "bellIsUrgent", do_bellIsUrgent, NULL }, 379d522f475Smrg { "poponbell", do_poponbell, NULL }, 380d522f475Smrg#if OPT_BLINK_CURS 381d522f475Smrg { "cursorblink", do_cursorblink, NULL }, 382d522f475Smrg#endif 383d522f475Smrg { "titeInhibit", do_titeInhibit, NULL }, 384d522f475Smrg#ifndef NO_ACTIVE_ICON 385d522f475Smrg { "activeicon", do_activeicon, NULL }, 386d522f475Smrg#endif /* NO_ACTIVE_ICON */ 387d522f475Smrg { "line1", NULL, NULL }, 388d522f475Smrg { "softreset", do_softreset, NULL }, 389d522f475Smrg { "hardreset", do_hardreset, NULL }, 390d522f475Smrg { "clearsavedlines",do_clearsavedlines, NULL }, 391d522f475Smrg { "line2", NULL, NULL }, 392d522f475Smrg#if OPT_TEK4014 393d522f475Smrg { "tekshow", do_tekshow, NULL }, 394d522f475Smrg { "tekmode", do_tekmode, NULL }, 395d522f475Smrg { "vthide", do_vthide, NULL }, 396d522f475Smrg#endif 397d522f475Smrg { "altscreen", do_altscreen, NULL }, 398e0a2b6dfSmrg#if OPT_SIXEL_GRAPHICS 399e0a2b6dfSmrg { "sixelScrolling", do_sixelscrolling, NULL }, 400894e0ac8Smrg#endif 401894e0ac8Smrg#if OPT_GRAPHICS 402e0a2b6dfSmrg { "privateColorRegisters", do_privatecolorregisters, NULL }, 403e0a2b6dfSmrg#endif 404d522f475Smrg }; 405d522f475Smrg 406d522f475SmrgMenuEntry fontMenuEntries[] = { 407d522f475Smrg { "fontdefault", do_vtfont, NULL }, 408d522f475Smrg { "font1", do_vtfont, NULL }, 409d522f475Smrg { "font2", do_vtfont, NULL }, 410d522f475Smrg { "font3", do_vtfont, NULL }, 411d522f475Smrg { "font4", do_vtfont, NULL }, 412d522f475Smrg { "font5", do_vtfont, NULL }, 413d522f475Smrg { "font6", do_vtfont, NULL }, 414f2e35a3aSmrg { "font7", do_vtfont, NULL }, 415d522f475Smrg /* this is after the last builtin font; the other entries are special */ 416d522f475Smrg { "fontescape", do_vtfont, NULL }, 417d522f475Smrg { "fontsel", do_vtfont, NULL }, 418d522f475Smrg /* down to here should match NMENUFONTS in ptyx.h */ 419d522f475Smrg 420d522f475Smrg#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 421d522f475Smrg { "line1", NULL, NULL }, 422e39b573cSmrg { "allow-bold-fonts", do_allowBoldFonts, NULL }, 423d522f475Smrg#if OPT_BOX_CHARS 424d522f475Smrg { "font-linedrawing",do_font_boxchars,NULL }, 42520d2c4d2Smrg { "font-packed", do_font_packed,NULL }, 426d522f475Smrg#endif 427d522f475Smrg#if OPT_DEC_CHRSET 428d522f475Smrg { "font-doublesize",do_font_doublesize,NULL }, 429d522f475Smrg#endif 430d522f475Smrg#if OPT_DEC_SOFTFONT 431d522f475Smrg { "font-loadable", do_font_loadable,NULL }, 432d522f475Smrg#endif 433d522f475Smrg#endif /* toggles for DEC font extensions */ 434d522f475Smrg 435d522f475Smrg#if OPT_RENDERFONT || OPT_WIDE_CHARS 436d522f475Smrg { "line2", NULL, NULL }, 437d522f475Smrg#if OPT_RENDERFONT 438d522f475Smrg { "render-font", do_font_renderfont,NULL }, 439d522f475Smrg#endif 440d522f475Smrg#if OPT_WIDE_CHARS 441d522f475Smrg { "utf8-mode", do_font_utf8_mode,NULL }, 442e39b573cSmrg { "utf8-fonts", do_font_utf8_fonts,NULL }, 443d522f475Smrg { "utf8-title", do_font_utf8_title,NULL }, 444d522f475Smrg#endif 445d522f475Smrg#endif /* toggles for other font extensions */ 446d522f475Smrg 447956cc18dSsnj#if OPT_ALLOW_XXX_OPS 448956cc18dSsnj { "line3", NULL, NULL }, 44920d2c4d2Smrg { "allow-color-ops",do_allowColorOps,NULL }, 450956cc18dSsnj { "allow-font-ops", do_allowFontOps,NULL }, 451913cc679Smrg { "allow-mouse-ops",do_allowMouseOps,NULL }, 45220d2c4d2Smrg { "allow-tcap-ops", do_allowTcapOps,NULL }, 453956cc18dSsnj { "allow-title-ops",do_allowTitleOps,NULL }, 454956cc18dSsnj { "allow-window-ops",do_allowWindowOps,NULL }, 455956cc18dSsnj#endif 456956cc18dSsnj 457d522f475Smrg }; 458d522f475Smrg 459d522f475Smrg#if OPT_TEK4014 460d522f475SmrgMenuEntry tekMenuEntries[] = { 461d522f475Smrg { "tektextlarge", do_tektextlarge, NULL }, 462d522f475Smrg { "tektext2", do_tektext2, NULL }, 463d522f475Smrg { "tektext3", do_tektext3, NULL }, 464d522f475Smrg { "tektextsmall", do_tektextsmall, NULL }, 465d522f475Smrg { "line1", NULL, NULL }, 466d522f475Smrg { "tekpage", do_tekpage, NULL }, 467d522f475Smrg { "tekreset", do_tekreset, NULL }, 468d522f475Smrg { "tekcopy", do_tekcopy, NULL }, 469d522f475Smrg { "line2", NULL, NULL }, 470d522f475Smrg { "vtshow", do_vtshow, NULL }, 471d522f475Smrg { "vtmode", do_vtmode, NULL }, 472d522f475Smrg { "tekhide", do_tekhide, NULL }}; 473d522f475Smrg#endif 474d522f475Smrg 475d522f475Smrgtypedef struct { 476d522f475Smrg char *internal_name; 477d522f475Smrg MenuEntry *entry_list; 478d522f475Smrg Cardinal entry_len; 479d522f475Smrg} MenuHeader; 480d522f475Smrg 481d522f475Smrg /* This table is ordered to correspond with MenuIndex */ 482f2e35a3aSmrg#define DATA(name) { (char *)#name, name ## Entries, XtNumber(name ## Entries ) } 48301037d57Smrgstatic const MenuHeader menu_names[] = { 484f2e35a3aSmrg DATA( mainMenu), 485f2e35a3aSmrg DATA( vtMenu), 486f2e35a3aSmrg DATA( fontMenu), 487d522f475Smrg#if OPT_TEK4014 488f2e35a3aSmrg DATA( tekMenu), 489d522f475Smrg#endif 490f2e35a3aSmrg { NULL, 0, 0 }, 491d522f475Smrg}; 492f2e35a3aSmrg#undef DATA 493d522f475Smrg/* *INDENT-ON* */ 494d522f475Smrg 495d522f475Smrg/* 496d522f475Smrg * FIXME: These are global data rather than in the xterm widget because they 497d522f475Smrg * are initialized before the widget is created. 498d522f475Smrg */ 499d522f475Smrgtypedef struct { 500d522f475Smrg Widget b; /* the toolbar's buttons */ 501d522f475Smrg Widget w; /* the popup shell activated by the button */ 502d522f475Smrg Cardinal entries; 503d522f475Smrg} MenuList; 504d522f475Smrg 505d522f475Smrgstatic MenuList vt_shell[NUM_POPUP_MENUS]; 506d522f475Smrg 507d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 508d522f475Smrgstatic MenuList tek_shell[NUM_POPUP_MENUS]; 509d522f475Smrg#endif 510d522f475Smrg 511d522f475Smrg/* 512d522f475Smrg * Returns a pointer to the MenuList entry that matches the popup menu. 513d522f475Smrg */ 514d522f475Smrgstatic MenuList * 515f2e35a3aSmrgselect_menu(Widget w, MenuIndex num) 516d522f475Smrg{ 517d522f475Smrg#if OPT_TEK4014 && OPT_TOOLBAR 518d522f475Smrg while (w != 0) { 519d522f475Smrg if (w == tekshellwidget) { 520d522f475Smrg return &tek_shell[num]; 521d522f475Smrg } 522d522f475Smrg w = XtParent(w); 523d522f475Smrg } 524f2e35a3aSmrg#else 525f2e35a3aSmrg (void) w; 526d522f475Smrg#endif 527d522f475Smrg return &vt_shell[num]; 528d522f475Smrg} 529d522f475Smrg 530d522f475Smrg/* 531d522f475Smrg * Returns a pointer to the given popup menu shell 532d522f475Smrg */ 533d522f475Smrgstatic Widget 534d522f475Smrgobtain_menu(Widget w, MenuIndex num) 535d522f475Smrg{ 536d522f475Smrg return select_menu(w, num)->w; 537d522f475Smrg} 538d522f475Smrg 539d522f475Smrg/* 540d522f475Smrg * Returns the number of entries in the given popup menu shell 541d522f475Smrg */ 542d522f475Smrgstatic Cardinal 543d522f475Smrgsizeof_menu(Widget w, MenuIndex num) 544d522f475Smrg{ 545d522f475Smrg return select_menu(w, num)->entries; 546d522f475Smrg} 547d522f475Smrg 548d522f475Smrg/* 549e39b573cSmrg * Return an array of flags telling if a given menu item is never going to 550e39b573cSmrg * be used, so we can reduce the size of menus. 551d522f475Smrg */ 552e39b573cSmrgstatic Boolean * 553e39b573cSmrgunusedEntries(XtermWidget xw, MenuIndex num) 554e39b573cSmrg{ 555e39b573cSmrg static Boolean result[XtNumber(mainMenuEntries) 556e39b573cSmrg + XtNumber(vtMenuEntries) 557e39b573cSmrg + XtNumber(fontMenuEntries) 558e39b573cSmrg#if OPT_TEK4014 559e39b573cSmrg + XtNumber(tekMenuEntries) 560e39b573cSmrg#endif 561e39b573cSmrg ]; 562e39b573cSmrg TScreen *screen = TScreenOf(xw); 563d522f475Smrg 564e39b573cSmrg memset(result, 0, sizeof(result)); 565e39b573cSmrg switch (num) { 566e39b573cSmrg case mainMenu: 5670bd37d32Smrg#if OPT_MAXIMIZE 568e39b573cSmrg if (resource.fullscreen > 1) { 569e39b573cSmrg result[mainMenu_fullscreen] = True; 570e39b573cSmrg } 5710bd37d32Smrg#endif 572e39b573cSmrg#if OPT_NUM_LOCK 573e39b573cSmrg if (!screen->alt_is_not_meta) { 574e39b573cSmrg result[mainMenu_alt_esc] = True; 575e39b573cSmrg } 576e39b573cSmrg#endif 577e39b573cSmrg if (!xtermHasPrinter(xw)) { 578e39b573cSmrg result[mainMenu_print] = True; 579e39b573cSmrg result[mainMenu_print_redir] = True; 580e39b573cSmrg } 581e39b573cSmrg if (screen->terminal_id < 200) { 582e39b573cSmrg result[mainMenu_8bit_ctrl] = True; 583e39b573cSmrg } 584e39b573cSmrg#if !defined(SIGTSTP) 585e39b573cSmrg result[mainMenu_suspend] = True; 586e39b573cSmrg#endif 587e39b573cSmrg#if !defined(SIGCONT) 588e39b573cSmrg result[mainMenu_continue] = True; 589e39b573cSmrg#endif 590e39b573cSmrg#ifdef ALLOWLOGGING 591e39b573cSmrg if (screen->inhibit & I_LOG) { 592e39b573cSmrg result[mainMenu_logging] = True; 593e39b573cSmrg } 594e39b573cSmrg#endif 595e39b573cSmrg if (screen->inhibit & I_SIGNAL) { 596e39b573cSmrg int n; 597e39b573cSmrg for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) { 598e39b573cSmrg result[n] = True; 599e39b573cSmrg } 600e39b573cSmrg } 601e39b573cSmrg break; 602e39b573cSmrg case vtMenu: 603f2e35a3aSmrg#if !defined(NO_ACTIVE_ICON) && !OPT_TOOLBAR 604913cc679Smrg if (!getIconicFont(screen)->fs || !screen->iconVwin.window) { 605e39b573cSmrg result[vtMenu_activeicon] = True; 606e39b573cSmrg } 607e39b573cSmrg#endif /* NO_ACTIVE_ICON */ 608e39b573cSmrg#if OPT_TEK4014 609e39b573cSmrg if (screen->inhibit & I_TEK) { 610e39b573cSmrg int n; 611e39b573cSmrg for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) { 612e39b573cSmrg result[n] = True; 613e39b573cSmrg } 614e39b573cSmrg } 615e39b573cSmrg#endif 616e39b573cSmrg break; 617e39b573cSmrg case fontMenu: 618e39b573cSmrg break; 619e39b573cSmrg#if OPT_TEK4014 620e39b573cSmrg case tekMenu: 621e39b573cSmrg break; 622e39b573cSmrg#endif 623e39b573cSmrg case noMenu: 624e39b573cSmrg break; 625e39b573cSmrg } 626e39b573cSmrg return result; 627e39b573cSmrg} 628e39b573cSmrg 629f2e35a3aSmrg/* 630f2e35a3aSmrg * When using the toolbar configuration, some systems (seen with Solaris 11) 631f2e35a3aSmrg * give a warning that (Xt) cannot find a usable font-set. This does not stop 632f2e35a3aSmrg * the toolbars from working - ignore for now. 633f2e35a3aSmrg */ 634f2e35a3aSmrg#if OPT_TOOLBAR 635f2e35a3aSmrgstatic void 636f2e35a3aSmrgignoreWarning( 637f2e35a3aSmrg String p_name, 638f2e35a3aSmrg String p_type, 639f2e35a3aSmrg String p_class, 640f2e35a3aSmrg String p_default, 641f2e35a3aSmrg String *p_params, 642f2e35a3aSmrg Cardinal *p_num_params) 643f2e35a3aSmrg{ 644f2e35a3aSmrg (void) p_name; 645f2e35a3aSmrg (void) p_type; 646f2e35a3aSmrg (void) p_class; 647f2e35a3aSmrg (void) p_default; 648f2e35a3aSmrg (void) p_params; 649f2e35a3aSmrg (void) p_num_params; 650f2e35a3aSmrg} 651f2e35a3aSmrg#endif 652f2e35a3aSmrg 653e39b573cSmrg/* 654e39b573cSmrg * create_menu - create a popup shell and stuff the menu into it. 655e39b573cSmrg */ 656d522f475Smrgstatic Widget 657e39b573cSmrgcreate_menu(Widget w, XtermWidget xw, MenuIndex num) 658d522f475Smrg{ 659d522f475Smrg static XtCallbackRec cb[2] = 660d522f475Smrg { 661d522f475Smrg {NULL, NULL}, 662d522f475Smrg {NULL, NULL}}; 663d522f475Smrg static Arg arg = 664d522f475Smrg {XtNcallback, (XtArgVal) cb}; 665d522f475Smrg 666e39b573cSmrg TScreen *screen = TScreenOf(xw); 66701037d57Smrg const MenuHeader *data = &menu_names[num]; 668d522f475Smrg MenuList *list = select_menu(w, num); 669d522f475Smrg struct _MenuEntry *entries = data->entry_list; 670956cc18dSsnj Cardinal nentries = data->entry_len; 671d522f475Smrg#if !OPT_TOOLBAR 672f2e35a3aSmrg char *saveLocale; 673d522f475Smrg#endif 674d522f475Smrg 675d522f475Smrg if (screen->menu_item_bitmap == None) { 676d522f475Smrg /* 677d522f475Smrg * we really want to do these dynamically 678d522f475Smrg */ 679d522f475Smrg#define check_width 9 680d522f475Smrg#define check_height 8 681d522f475Smrg static unsigned char check_bits[] = 682d522f475Smrg { 683d522f475Smrg 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0x60, 0x00, 684d522f475Smrg 0x31, 0x00, 0x1b, 0x00, 0x0e, 0x00, 0x04, 0x00 685d522f475Smrg }; 686d522f475Smrg 687d522f475Smrg screen->menu_item_bitmap = 688e39b573cSmrg XCreateBitmapFromData(XtDisplay(xw), 689e39b573cSmrg RootWindowOfScreen(XtScreen(xw)), 690d522f475Smrg (char *) check_bits, check_width, check_height); 691d522f475Smrg } 692d522f475Smrg#if !OPT_TOOLBAR 693f2e35a3aSmrg saveLocale = xtermSetLocale(LC_CTYPE, resource.menuLocale); 694d522f475Smrg list->w = XtCreatePopupShell(data->internal_name, 695d522f475Smrg simpleMenuWidgetClass, 696d522f475Smrg toplevel, 697d522f475Smrg NULL, 0); 698ae137402Smrg TRACE(("created popupShell(%s) widget %p, window %#lx\n", 699ae137402Smrg data->internal_name, list->w, XtWindow(list->w))); 700d522f475Smrg#endif 701d522f475Smrg if (list->w != 0) { 702e39b573cSmrg Boolean *unused = unusedEntries(xw, num); 703e39b573cSmrg Cardinal n; 704f2e35a3aSmrg#if OPT_TOOLBAR 705f2e35a3aSmrg Boolean useLocale = !strcmp(resource.menuLocale, ""); 706f2e35a3aSmrg XtErrorMsgHandler warningHandler = 0; 707f2e35a3aSmrg if (!useLocale) 708f2e35a3aSmrg warningHandler = XtAppSetWarningMsgHandler(app_con, ignoreWarning); 709f2e35a3aSmrg#endif 710e39b573cSmrg 711e39b573cSmrg list->entries = 0; 712e39b573cSmrg 713e39b573cSmrg for (n = 0; n < nentries; ++n) { 714e39b573cSmrg if (!unused[n]) { 715e39b573cSmrg cb[0].callback = (XtCallbackProc) entries[n].function; 7160bd37d32Smrg cb[0].closure = (XtPointer) entries[n].name; 717e39b573cSmrg entries[n].widget = XtCreateManagedWidget(entries[n].name, 718e39b573cSmrg (entries[n].function 719e39b573cSmrg ? smeBSBObjectClass 720e39b573cSmrg : smeLineObjectClass), 721e39b573cSmrg list->w, 722e39b573cSmrg &arg, (Cardinal) 1); 723ae137402Smrg TRACE(("created menuEntry[%d] widget %p, window %#lx\n", 724ae137402Smrg n, (void *) entries[n].widget, XtWindow(entries[n].widget))); 725e39b573cSmrg list->entries++; 726e39b573cSmrg } 727d522f475Smrg } 728f2e35a3aSmrg#if OPT_TOOLBAR 729f2e35a3aSmrg if (!useLocale) 730f2e35a3aSmrg XtAppSetWarningMsgHandler(app_con, warningHandler); 731f2e35a3aSmrg#endif 732d522f475Smrg } 733d522f475Smrg#if !OPT_TOOLBAR 734f2e35a3aSmrg xtermResetLocale(LC_CTYPE, saveLocale); 735d522f475Smrg#endif 736d522f475Smrg 737d522f475Smrg /* do not realize at this point */ 738d522f475Smrg return list->w; 739d522f475Smrg} 740d522f475Smrg 741d522f475Smrgstatic MenuIndex 742d522f475SmrgindexOfMenu(String menuName) 743d522f475Smrg{ 744d522f475Smrg MenuIndex me; 745d522f475Smrg switch (*menuName) { 746d522f475Smrg case 'm': 747d522f475Smrg me = mainMenu; 748d522f475Smrg break; 749d522f475Smrg case 'v': 750d522f475Smrg me = vtMenu; 751d522f475Smrg break; 752d522f475Smrg case 'f': 753d522f475Smrg me = fontMenu; 754d522f475Smrg break; 755d522f475Smrg#if OPT_TEK4014 756d522f475Smrg case 't': 757d522f475Smrg me = tekMenu; 758d522f475Smrg break; 759d522f475Smrg#endif 760d522f475Smrg default: 761d522f475Smrg me = noMenu; 762d522f475Smrg } 763d522f475Smrg return (me); 764d522f475Smrg} 765d522f475Smrg 766d522f475Smrg/* ARGSUSED */ 767d522f475Smrgstatic Bool 768d522f475Smrgdomenu(Widget w, 769894e0ac8Smrg XEvent *event GCC_UNUSED, 770894e0ac8Smrg String *params, /* mainMenu, vtMenu, or tekMenu */ 771d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 772d522f475Smrg{ 77320d2c4d2Smrg XtermWidget xw = term; 77420d2c4d2Smrg TScreen *screen = TScreenOf(xw); 775d522f475Smrg MenuIndex me; 776d522f475Smrg Bool created = False; 777d522f475Smrg Widget mw; 778d522f475Smrg 779d522f475Smrg if (*param_count != 1) { 78020d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 781d522f475Smrg return False; 782d522f475Smrg } 783d522f475Smrg 784d522f475Smrg if ((me = indexOfMenu(params[0])) == noMenu) { 78520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 786d522f475Smrg return False; 787d522f475Smrg } 788d522f475Smrg 789d522f475Smrg if ((mw = obtain_menu(w, me)) == 0 790d522f475Smrg || sizeof_menu(w, me) == 0) { 79120d2c4d2Smrg mw = create_menu(w, xw, me); 792d522f475Smrg created = (mw != 0); 793d522f475Smrg } 794d522f475Smrg if (mw == 0) 795d522f475Smrg return False; 796d522f475Smrg 797d522f475Smrg TRACE(("domenu(%s) %s\n", params[0], created ? "create" : "update")); 798d522f475Smrg switch (me) { 799d522f475Smrg case mainMenu: 800d522f475Smrg if (created) { 801d522f475Smrg update_toolbar(); 802a1f3da82Smrg update_fullscreen(); 803d522f475Smrg update_securekbd(); 804d522f475Smrg update_allowsends(); 805d522f475Smrg update_logging(); 806d522f475Smrg update_print_redir(); 807d522f475Smrg update_8bit_control(); 808d522f475Smrg update_decbkm(); 809d522f475Smrg update_num_lock(); 810d522f475Smrg update_alt_esc(); 811d522f475Smrg update_meta_esc(); 812d522f475Smrg update_delete_del(); 813d522f475Smrg update_keyboard_type(); 8145307cd1aSmrg#if OPT_PRINT_ON_EXIT 8152e4f8982Smrg screen->write_error = !IsEmpty(resource.printFileOnXError); 816f2e35a3aSmrg SetItemSensitivity(mainMenuEntries[mainMenu_write_now].widget, True); 817e39b573cSmrg SetItemSensitivity(mainMenuEntries[mainMenu_write_error].widget, screen->write_error); 818d522f475Smrg#endif 819d522f475Smrg } 820d522f475Smrg break; 821d522f475Smrg 822d522f475Smrg case vtMenu: 823d522f475Smrg if (created) { 824d522f475Smrg update_scrollbar(); 825d522f475Smrg update_jumpscroll(); 826d522f475Smrg update_reversevideo(); 827d522f475Smrg update_autowrap(); 828d522f475Smrg update_reversewrap(); 829d522f475Smrg update_autolinefeed(); 830d522f475Smrg update_appcursor(); 831d522f475Smrg update_appkeypad(); 832d522f475Smrg update_scrollkey(); 833d522f475Smrg update_scrollttyoutput(); 834d522f475Smrg update_allow132(); 835d522f475Smrg update_cursesemul(); 836d522f475Smrg update_keepSelection(); 837d522f475Smrg update_selectToClipboard(); 838d522f475Smrg update_visualbell(); 839d522f475Smrg update_poponbell(); 840d522f475Smrg update_bellIsUrgent(); 841d522f475Smrg update_cursorblink(); 842d522f475Smrg update_altscreen(); 843e0a2b6dfSmrg update_decsdm(); /* Sixel Display Mode */ 844d522f475Smrg update_titeInhibit(); 845d522f475Smrg#ifndef NO_ACTIVE_ICON 846e39b573cSmrg update_activeicon(); 847d522f475Smrg#endif /* NO_ACTIVE_ICON */ 848e0a2b6dfSmrg update_privatecolorregisters(); 849d522f475Smrg } 850d522f475Smrg break; 851d522f475Smrg 852d522f475Smrg case fontMenu: 853d522f475Smrg if (created) { 854e39b573cSmrg int n; 855e39b573cSmrg 856d522f475Smrg set_menu_font(True); 857f2e35a3aSmrg for (n = fontMenu_font1; n <= fontMenu_font7; ++n) { 858e39b573cSmrg if (IsEmpty(screen->menu_font_names[n][fNorm])) 859e39b573cSmrg SetItemSensitivity(fontMenuEntries[n].widget, False); 860e39b573cSmrg } 86101037d57Smrg update_font_escape(); 862e39b573cSmrg update_menu_allowBoldFonts(); 863d522f475Smrg#if OPT_BOX_CHARS 864d522f475Smrg update_font_boxchars(); 86520d2c4d2Smrg update_font_packed(); 86620d2c4d2Smrg SetItemSensitivity( 86720d2c4d2Smrg fontMenuEntries[fontMenu_font_packedfont].widget, 86820d2c4d2Smrg True); 869d522f475Smrg#endif 870d522f475Smrg#if OPT_DEC_SOFTFONT /* FIXME: not implemented */ 871d522f475Smrg update_font_loadable(); 872d522f475Smrg SetItemSensitivity( 873d522f475Smrg fontMenuEntries[fontMenu_font_loadable].widget, 874d522f475Smrg False); 875d522f475Smrg#endif 876d522f475Smrg#if OPT_DEC_CHRSET 877d522f475Smrg update_font_doublesize(); 87820d2c4d2Smrg if (TScreenOf(xw)->cache_doublesize == 0) 879d522f475Smrg SetItemSensitivity( 880d522f475Smrg fontMenuEntries[fontMenu_font_doublesize].widget, 881d522f475Smrg False); 882d522f475Smrg#endif 883d522f475Smrg#if OPT_RENDERFONT 884d522f475Smrg update_font_renderfont(); 885d522f475Smrg#endif 886d522f475Smrg#if OPT_WIDE_CHARS 887d522f475Smrg update_font_utf8_mode(); 888e39b573cSmrg update_font_utf8_fonts(); 889d522f475Smrg update_font_utf8_title(); 890956cc18dSsnj#endif 891956cc18dSsnj#if OPT_ALLOW_XXX_OPS 89220d2c4d2Smrg update_menu_allowColorOps(); 893956cc18dSsnj update_menu_allowFontOps(); 894913cc679Smrg update_menu_allowMouseOps(); 89520d2c4d2Smrg update_menu_allowTcapOps(); 896956cc18dSsnj update_menu_allowTitleOps(); 897956cc18dSsnj update_menu_allowWindowOps(); 898956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 899d522f475Smrg#endif 900d522f475Smrg } 901894e0ac8Smrg#if OPT_TOOLBAR 902894e0ac8Smrg /* menus for toolbar are initialized once only */ 903894e0ac8Smrg SetItemSensitivity(fontMenuEntries[fontMenu_fontsel].widget, True); 904894e0ac8Smrg#else 90520d2c4d2Smrg FindFontSelection(xw, NULL, True); 90601037d57Smrg SetItemSensitivity(fontMenuEntries[fontMenu_fontsel].widget, 90701037d57Smrg (screen->SelectFontName() 90801037d57Smrg ? True 90901037d57Smrg : False)); 910894e0ac8Smrg#endif 911d522f475Smrg break; 912d522f475Smrg 913d522f475Smrg#if OPT_TEK4014 914d522f475Smrg case tekMenu: 915d522f475Smrg if (created && tekWidget) { 91620d2c4d2Smrg set_tekfont_menu_item(TekScreenOf(tekWidget)->cur.fontsize, True); 917d522f475Smrg update_vtshow(); 918d522f475Smrg } 919d522f475Smrg break; 920d522f475Smrg#endif 921d522f475Smrg case noMenu: 922d522f475Smrg default: 923d522f475Smrg break; 924d522f475Smrg } 925d522f475Smrg 926d522f475Smrg return True; 927d522f475Smrg} 928d522f475Smrg 929d522f475Smrg/* 930d522f475Smrg * public interfaces 931d522f475Smrg */ 932d522f475Smrg 933d522f475Smrgvoid 934d522f475SmrgHandleCreateMenu(Widget w, 935894e0ac8Smrg XEvent *event, 936894e0ac8Smrg String *params, /* mainMenu, vtMenu, or tekMenu */ 937d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 938d522f475Smrg{ 939d522f475Smrg TRACE(("HandleCreateMenu\n")); 940d522f475Smrg (void) domenu(w, event, params, param_count); 941d522f475Smrg} 942d522f475Smrg 943d522f475Smrgvoid 944d522f475SmrgHandlePopupMenu(Widget w, 945894e0ac8Smrg XEvent *event, 946894e0ac8Smrg String *params, /* mainMenu, vtMenu, or tekMenu */ 947d522f475Smrg Cardinal *param_count) /* 0 or 1 */ 948d522f475Smrg{ 949d522f475Smrg TRACE(("HandlePopupMenu\n")); 950d522f475Smrg if (domenu(w, event, params, param_count)) { 951e39b573cSmrg XtermWidget xw = term; 952e39b573cSmrg TScreen *screen = TScreenOf(xw); 953e39b573cSmrg 954d522f475Smrg#if OPT_TOOLBAR 955d522f475Smrg w = select_menu(w, mainMenu)->w; 956d522f475Smrg#endif 957e39b573cSmrg /* 958e39b573cSmrg * The action procedure in SimpleMenu.c, PositionMenu does not expect a 959e39b573cSmrg * key translation event when we are popping up a menu. In particular, 960e39b573cSmrg * if the pointer is outside the menu, then the action procedure will 961e39b573cSmrg * fail in its attempt to determine the location of the pointer within 962e39b573cSmrg * the menu. Anticipate that by warping the pointer into the menu when 963e39b573cSmrg * a key event is detected. 964e39b573cSmrg */ 965e39b573cSmrg switch (event->type) { 966e39b573cSmrg case KeyPress: 967e39b573cSmrg case KeyRelease: 968e39b573cSmrg XWarpPointer(screen->display, None, XtWindow(w), 0, 0, 0, 0, 0, 0); 969e39b573cSmrg break; 970e39b573cSmrg default: 971e39b573cSmrg XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1); 972e39b573cSmrg break; 973e39b573cSmrg } 974d522f475Smrg XtCallActionProc(w, "MenuPopup", event, params, 1); 975d522f475Smrg } 976d522f475Smrg} 977d522f475Smrg 978d522f475Smrg/* 979d522f475Smrg * private interfaces - keep out! 980d522f475Smrg */ 981d522f475Smrg 982d522f475Smrg/* ARGSUSED */ 983d522f475Smrgstatic void 984d522f475Smrghandle_send_signal(Widget gw GCC_UNUSED, int sig) 985d522f475Smrg{ 986d522f475Smrg#ifndef VMS 987d522f475Smrg TScreen *screen = TScreenOf(term); 988d522f475Smrg 989d522f475Smrg if (hold_screen > 1) 990d522f475Smrg hold_screen = 0; 991d522f475Smrg if (screen->pid > 1) 992d522f475Smrg kill_process_group(screen->pid, sig); 993d522f475Smrg#endif 994d522f475Smrg} 995d522f475Smrg 996f2e35a3aSmrg#if OPT_VT52_MODE 997f2e35a3aSmrgstatic void 998f2e35a3aSmrgDisableIfVT52(MenuEntry * menu, int which) 999f2e35a3aSmrg{ 1000f2e35a3aSmrg Widget mi = menu[which].widget; 1001f2e35a3aSmrg SetItemSensitivity(mi, TScreenOf(term)->vtXX_level != 0); 1002f2e35a3aSmrg} 1003f2e35a3aSmrg 1004f2e35a3aSmrg#else 1005f2e35a3aSmrg#define DisableIfVT52(which,val) /* nothing */ 1006f2e35a3aSmrg#endif 1007f2e35a3aSmrg 1008a1f3da82Smrgstatic void 1009a1f3da82SmrgUpdateMenuItem( 1010a1f3da82Smrg#if OPT_TRACE 1011a1f3da82Smrg const char *func, 1012a1f3da82Smrg#endif 1013a1f3da82Smrg MenuEntry * menu, 1014a1f3da82Smrg int which, 1015a1f3da82Smrg Bool val) 1016a1f3da82Smrg{ 1017a1f3da82Smrg static Arg menuArgs = 1018a1f3da82Smrg {XtNleftBitmap, (XtArgVal) 0}; 1019a1f3da82Smrg Widget mi = menu[which].widget; 1020a1f3da82Smrg 1021a1f3da82Smrg if (mi) { 1022a1f3da82Smrg menuArgs.value = (XtArgVal) ((val) 1023a1f3da82Smrg ? TScreenOf(term)->menu_item_bitmap 1024a1f3da82Smrg : None); 1025a1f3da82Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 1026a1f3da82Smrg } 102701037d57Smrg TRACE(("%s(%d): %s\n", func, which, MtoS(val))); 1028a1f3da82Smrg} 1029a1f3da82Smrg 1030a1f3da82Smrgvoid 1031a1f3da82SmrgSetItemSensitivity(Widget mi, Bool val) 1032a1f3da82Smrg{ 1033a1f3da82Smrg static Arg menuArgs = 1034a1f3da82Smrg {XtNsensitive, (XtArgVal) 0}; 1035a1f3da82Smrg 1036a1f3da82Smrg if (mi) { 1037a1f3da82Smrg menuArgs.value = (XtArgVal) (val); 1038a1f3da82Smrg XtSetValues(mi, &menuArgs, (Cardinal) 1); 1039a1f3da82Smrg } 1040a1f3da82Smrg} 1041a1f3da82Smrg 1042d522f475Smrg/* 1043d522f475Smrg * action routines 1044d522f475Smrg */ 1045d522f475Smrg 1046d522f475Smrgstatic void 1047d522f475Smrgdo_securekbd(Widget gw GCC_UNUSED, 1048d522f475Smrg XtPointer closure GCC_UNUSED, 1049d522f475Smrg XtPointer data GCC_UNUSED) 1050d522f475Smrg{ 105120d2c4d2Smrg XtermWidget xw = term; 105220d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1053d522f475Smrg Time now = CurrentTime; /* XXX - wrong */ 1054d522f475Smrg 1055d522f475Smrg if (screen->grabbedKbd) { 1056d522f475Smrg XUngrabKeyboard(screen->display, now); 105720d2c4d2Smrg ReverseVideo(xw); 1058d522f475Smrg screen->grabbedKbd = False; 1059d522f475Smrg } else { 1060d522f475Smrg if (XGrabKeyboard(screen->display, XtWindow(CURRENT_EMU()), 1061d522f475Smrg True, GrabModeAsync, GrabModeAsync, now) 1062d522f475Smrg != GrabSuccess) { 106320d2c4d2Smrg Bell(xw, XkbBI_MinorError, 100); 1064d522f475Smrg } else { 106520d2c4d2Smrg ReverseVideo(xw); 1066d522f475Smrg screen->grabbedKbd = True; 1067d522f475Smrg } 1068d522f475Smrg } 1069d522f475Smrg update_securekbd(); 1070d522f475Smrg} 1071d522f475Smrg 1072d522f475Smrg/* ARGSUSED */ 1073d522f475Smrgvoid 1074d522f475SmrgHandleSecure(Widget w GCC_UNUSED, 1075894e0ac8Smrg XEvent *event GCC_UNUSED, /* unused */ 1076894e0ac8Smrg String *params GCC_UNUSED, /* [0] = volume */ 1077d522f475Smrg Cardinal *param_count GCC_UNUSED) /* 0 or 1 */ 1078d522f475Smrg{ 1079d522f475Smrg do_securekbd(vt_shell[mainMenu].w, (XtPointer) 0, (XtPointer) 0); 1080d522f475Smrg} 1081d522f475Smrg 1082d522f475Smrgstatic void 1083d522f475Smrgdo_allowsends(Widget gw GCC_UNUSED, 1084d522f475Smrg XtPointer closure GCC_UNUSED, 1085d522f475Smrg XtPointer data GCC_UNUSED) 1086d522f475Smrg{ 1087d522f475Smrg TScreen *screen = TScreenOf(term); 1088d522f475Smrg 1089956cc18dSsnj ToggleFlag(screen->allowSendEvents); 1090d522f475Smrg update_allowsends(); 1091956cc18dSsnj#if OPT_ALLOW_XXX_OPS 1092956cc18dSsnj enable_allow_xxx_ops(!(screen->allowSendEvents)); 1093956cc18dSsnj#endif 1094d522f475Smrg} 1095d522f475Smrg 1096d522f475Smrgstatic void 1097d522f475Smrgdo_visualbell(Widget gw GCC_UNUSED, 1098d522f475Smrg XtPointer closure GCC_UNUSED, 1099d522f475Smrg XtPointer data GCC_UNUSED) 1100d522f475Smrg{ 1101d522f475Smrg TScreen *screen = TScreenOf(term); 1102d522f475Smrg 1103956cc18dSsnj ToggleFlag(screen->visualbell); 1104d522f475Smrg update_visualbell(); 1105d522f475Smrg} 1106d522f475Smrg 1107d522f475Smrgstatic void 1108d522f475Smrgdo_bellIsUrgent(Widget gw GCC_UNUSED, 1109d522f475Smrg XtPointer closure GCC_UNUSED, 1110d522f475Smrg XtPointer data GCC_UNUSED) 1111d522f475Smrg{ 1112d522f475Smrg TScreen *screen = TScreenOf(term); 1113d522f475Smrg 1114956cc18dSsnj ToggleFlag(screen->bellIsUrgent); 1115d522f475Smrg update_bellIsUrgent(); 1116d522f475Smrg} 1117d522f475Smrg 1118d522f475Smrgstatic void 1119d522f475Smrgdo_poponbell(Widget gw GCC_UNUSED, 1120d522f475Smrg XtPointer closure GCC_UNUSED, 1121d522f475Smrg XtPointer data GCC_UNUSED) 1122d522f475Smrg{ 1123d522f475Smrg TScreen *screen = TScreenOf(term); 1124d522f475Smrg 1125956cc18dSsnj ToggleFlag(screen->poponbell); 1126d522f475Smrg update_poponbell(); 1127d522f475Smrg} 1128d522f475Smrg 1129d522f475Smrg#ifdef ALLOWLOGGING 1130d522f475Smrgstatic void 1131d522f475Smrgdo_logging(Widget gw GCC_UNUSED, 1132d522f475Smrg XtPointer closure GCC_UNUSED, 1133d522f475Smrg XtPointer data GCC_UNUSED) 1134d522f475Smrg{ 113520d2c4d2Smrg XtermWidget xw = term; 113620d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1137d522f475Smrg 1138d522f475Smrg if (screen->logging) { 113920d2c4d2Smrg CloseLog(xw); 1140d522f475Smrg } else { 114120d2c4d2Smrg StartLog(xw); 1142d522f475Smrg } 1143d522f475Smrg /* update_logging done by CloseLog and StartLog */ 1144d522f475Smrg} 1145d522f475Smrg#endif 1146d522f475Smrg 11475307cd1aSmrg#if OPT_PRINT_ON_EXIT 1148e39b573cSmrgstatic void 1149e39b573cSmrgdo_write_now(Widget gw GCC_UNUSED, 1150e39b573cSmrg XtPointer closure GCC_UNUSED, 1151e39b573cSmrg XtPointer data GCC_UNUSED) 1152e39b573cSmrg{ 1153e39b573cSmrg XtermWidget xw = term; 1154e39b573cSmrg 1155e39b573cSmrg xtermPrintImmediately(xw, 1156e39b573cSmrg (IsEmpty(resource.printFileNow) 1157894e0ac8Smrg ? (String) "XTerm" 1158e39b573cSmrg : resource.printFileNow), 1159e39b573cSmrg resource.printOptsNow, 1160e39b573cSmrg resource.printModeNow); 1161e39b573cSmrg} 1162e39b573cSmrg 1163f2e35a3aSmrgvoid 1164f2e35a3aSmrgHandlePrintImmediate(Widget w GCC_UNUSED, 1165f2e35a3aSmrg XEvent *event GCC_UNUSED, 1166f2e35a3aSmrg String *params GCC_UNUSED, 1167f2e35a3aSmrg Cardinal *param_count GCC_UNUSED) 1168f2e35a3aSmrg{ 1169f2e35a3aSmrg do_write_now((Widget) 0, (XtPointer) 0, (XtPointer) 0); 1170f2e35a3aSmrg} 1171f2e35a3aSmrg 1172e39b573cSmrgstatic void 1173e39b573cSmrgdo_write_error(Widget gw GCC_UNUSED, 1174e39b573cSmrg XtPointer closure GCC_UNUSED, 1175e39b573cSmrg XtPointer data GCC_UNUSED) 1176e39b573cSmrg{ 1177e39b573cSmrg XtermWidget xw = term; 1178e39b573cSmrg 1179e39b573cSmrg if (IsEmpty(resource.printFileOnXError)) { 1180e39b573cSmrg resource.printFileOnXError = "XTermError"; 1181e39b573cSmrg } 1182e39b573cSmrg TScreenOf(xw)->write_error = (Boolean) (!TScreenOf(xw)->write_error); 1183e39b573cSmrg update_write_error(); 1184e39b573cSmrg} 1185f2e35a3aSmrg 1186f2e35a3aSmrgvoid 1187f2e35a3aSmrgHandlePrintOnError(Widget w GCC_UNUSED, 1188f2e35a3aSmrg XEvent *event GCC_UNUSED, 1189f2e35a3aSmrg String *params GCC_UNUSED, 1190f2e35a3aSmrg Cardinal *param_count GCC_UNUSED) 1191f2e35a3aSmrg{ 1192f2e35a3aSmrg do_write_error((Widget) 0, (XtPointer) 0, (XtPointer) 0); 1193f2e35a3aSmrg} 1194e39b573cSmrg#endif 1195e39b573cSmrg 1196d522f475Smrgstatic void 1197d522f475Smrgdo_print(Widget gw GCC_UNUSED, 1198d522f475Smrg XtPointer closure GCC_UNUSED, 1199d522f475Smrg XtPointer data GCC_UNUSED) 1200d522f475Smrg{ 120120d2c4d2Smrg xtermPrintScreen(term, True, getPrinterFlags(term, NULL, 0)); 1202d522f475Smrg} 1203d522f475Smrg 1204d522f475Smrgstatic void 1205d522f475Smrgdo_print_redir(Widget gw GCC_UNUSED, 1206d522f475Smrg XtPointer closure GCC_UNUSED, 1207d522f475Smrg XtPointer data GCC_UNUSED) 1208d522f475Smrg{ 1209e39b573cSmrg setPrinterControlMode(term, 1210e39b573cSmrg (PrinterOf(TScreenOf(term)).printer_controlmode 1211e39b573cSmrg ? 0 1212e39b573cSmrg : 2)); 1213d522f475Smrg} 1214d522f475Smrg 12152e4f8982Smrg#if OPT_SCREEN_DUMPS 12162e4f8982Smrgstatic void 12172e4f8982Smrgdo_dump_html(Widget gw GCC_UNUSED, 12182e4f8982Smrg XtPointer closure GCC_UNUSED, 12192e4f8982Smrg XtPointer data GCC_UNUSED) 12202e4f8982Smrg{ 12212e4f8982Smrg xtermDumpHtml(term); 12222e4f8982Smrg} 12232e4f8982Smrg 12242e4f8982Smrgstatic void 12252e4f8982Smrgdo_dump_svg(Widget gw GCC_UNUSED, 12262e4f8982Smrg XtPointer closure GCC_UNUSED, 12272e4f8982Smrg XtPointer data GCC_UNUSED) 12282e4f8982Smrg{ 12292e4f8982Smrg xtermDumpSvg(term); 12302e4f8982Smrg} 12312e4f8982Smrg#endif 12322e4f8982Smrg 1233d522f475Smrgstatic void 1234d522f475Smrgdo_redraw(Widget gw GCC_UNUSED, 1235d522f475Smrg XtPointer closure GCC_UNUSED, 1236d522f475Smrg XtPointer data GCC_UNUSED) 1237d522f475Smrg{ 1238d522f475Smrg Redraw(); 1239d522f475Smrg} 1240d522f475Smrg 1241d522f475Smrgvoid 1242d522f475Smrgshow_8bit_control(Bool value) 1243d522f475Smrg{ 124420d2c4d2Smrg if (TScreenOf(term)->control_eight_bits != value) { 124520d2c4d2Smrg TScreenOf(term)->control_eight_bits = (Boolean) value; 1246d522f475Smrg update_8bit_control(); 1247d522f475Smrg } 1248d522f475Smrg} 1249d522f475Smrg 1250d522f475Smrgstatic void 1251d522f475Smrgdo_8bit_control(Widget gw GCC_UNUSED, 1252d522f475Smrg XtPointer closure GCC_UNUSED, 1253d522f475Smrg XtPointer data GCC_UNUSED) 1254d522f475Smrg{ 125520d2c4d2Smrg show_8bit_control(!TScreenOf(term)->control_eight_bits); 1256d522f475Smrg} 1257d522f475Smrg 1258d522f475Smrgstatic void 1259d522f475Smrgdo_backarrow(Widget gw GCC_UNUSED, 1260d522f475Smrg XtPointer closure GCC_UNUSED, 1261d522f475Smrg XtPointer data GCC_UNUSED) 1262d522f475Smrg{ 1263d522f475Smrg term->keyboard.flags ^= MODE_DECBKM; 1264d522f475Smrg update_decbkm(); 1265d522f475Smrg} 1266d522f475Smrg 1267d522f475Smrg#if OPT_NUM_LOCK 1268d522f475Smrgstatic void 1269d522f475Smrgdo_num_lock(Widget gw GCC_UNUSED, 1270d522f475Smrg XtPointer closure GCC_UNUSED, 1271d522f475Smrg XtPointer data GCC_UNUSED) 1272d522f475Smrg{ 1273956cc18dSsnj ToggleFlag(term->misc.real_NumLock); 1274d522f475Smrg update_num_lock(); 1275d522f475Smrg} 1276d522f475Smrg 1277d522f475Smrgstatic void 1278d522f475Smrgdo_alt_esc(Widget gw GCC_UNUSED, 1279d522f475Smrg XtPointer closure GCC_UNUSED, 1280d522f475Smrg XtPointer data GCC_UNUSED) 1281d522f475Smrg{ 128220d2c4d2Smrg ToggleFlag(TScreenOf(term)->alt_sends_esc); 1283d522f475Smrg update_alt_esc(); 1284d522f475Smrg} 1285d522f475Smrg 1286d522f475Smrgstatic void 1287d522f475Smrgdo_meta_esc(Widget gw GCC_UNUSED, 1288d522f475Smrg XtPointer closure GCC_UNUSED, 1289d522f475Smrg XtPointer data GCC_UNUSED) 1290d522f475Smrg{ 129120d2c4d2Smrg ToggleFlag(TScreenOf(term)->meta_sends_esc); 1292d522f475Smrg update_meta_esc(); 1293d522f475Smrg} 1294d522f475Smrg#endif 1295d522f475Smrg 1296d522f475Smrgstatic void 1297d522f475Smrgdo_delete_del(Widget gw GCC_UNUSED, 1298d522f475Smrg XtPointer closure GCC_UNUSED, 1299d522f475Smrg XtPointer data GCC_UNUSED) 1300d522f475Smrg{ 1301d522f475Smrg if (xtermDeleteIsDEL(term)) 130220d2c4d2Smrg TScreenOf(term)->delete_is_del = False; 1303d522f475Smrg else 130420d2c4d2Smrg TScreenOf(term)->delete_is_del = True; 1305d522f475Smrg update_delete_del(); 1306d522f475Smrg} 1307d522f475Smrg 1308d522f475Smrgstatic void 1309d522f475Smrgdo_old_fkeys(Widget gw GCC_UNUSED, 1310d522f475Smrg XtPointer closure GCC_UNUSED, 1311d522f475Smrg XtPointer data GCC_UNUSED) 1312d522f475Smrg{ 1313d522f475Smrg toggle_keyboard_type(term, keyboardIsLegacy); 1314d522f475Smrg} 1315d522f475Smrg 1316d522f475Smrg#if OPT_HP_FUNC_KEYS 1317d522f475Smrgstatic void 1318d522f475Smrgdo_hp_fkeys(Widget gw GCC_UNUSED, 1319d522f475Smrg XtPointer closure GCC_UNUSED, 1320d522f475Smrg XtPointer data GCC_UNUSED) 1321d522f475Smrg{ 1322d522f475Smrg toggle_keyboard_type(term, keyboardIsHP); 1323d522f475Smrg} 1324d522f475Smrg#endif 1325d522f475Smrg 1326d522f475Smrg#if OPT_SCO_FUNC_KEYS 1327d522f475Smrgstatic void 1328d522f475Smrgdo_sco_fkeys(Widget gw GCC_UNUSED, 1329d522f475Smrg XtPointer closure GCC_UNUSED, 1330d522f475Smrg XtPointer data GCC_UNUSED) 1331d522f475Smrg{ 1332d522f475Smrg toggle_keyboard_type(term, keyboardIsSCO); 1333d522f475Smrg} 1334d522f475Smrg#endif 1335d522f475Smrg 1336d522f475Smrg#if OPT_SUN_FUNC_KEYS 1337d522f475Smrgstatic void 1338d522f475Smrgdo_sun_fkeys(Widget gw GCC_UNUSED, 1339d522f475Smrg XtPointer closure GCC_UNUSED, 1340d522f475Smrg XtPointer data GCC_UNUSED) 1341d522f475Smrg{ 1342d522f475Smrg toggle_keyboard_type(term, keyboardIsSun); 1343d522f475Smrg} 1344d522f475Smrg#endif 1345d522f475Smrg 1346d522f475Smrg#if OPT_SUNPC_KBD 1347d522f475Smrg/* 1348d522f475Smrg * This really means "Sun/PC keyboard emulating VT220". 1349d522f475Smrg */ 1350d522f475Smrgstatic void 1351d522f475Smrgdo_sun_kbd(Widget gw GCC_UNUSED, 1352d522f475Smrg XtPointer closure GCC_UNUSED, 1353d522f475Smrg XtPointer data GCC_UNUSED) 1354d522f475Smrg{ 1355d522f475Smrg toggle_keyboard_type(term, keyboardIsVT220); 1356d522f475Smrg} 1357d522f475Smrg#endif 1358d522f475Smrg 1359d522f475Smrg#if OPT_TCAP_FKEYS 1360d522f475Smrgstatic void 1361d522f475Smrgdo_tcap_fkeys(Widget gw GCC_UNUSED, 1362d522f475Smrg XtPointer closure GCC_UNUSED, 1363d522f475Smrg XtPointer data GCC_UNUSED) 1364d522f475Smrg{ 1365d522f475Smrg toggle_keyboard_type(term, keyboardIsTermcap); 1366d522f475Smrg} 1367d522f475Smrg#endif 1368d522f475Smrg 1369d522f475Smrg/* 1370d522f475Smrg * The following cases use the pid instead of the process group so that we 1371d522f475Smrg * don't get hosed by programs that change their process group 1372d522f475Smrg */ 1373d522f475Smrg 1374d522f475Smrg/* ARGSUSED */ 1375d522f475Smrgstatic void 1376d522f475Smrgdo_suspend(Widget gw, 1377d522f475Smrg XtPointer closure GCC_UNUSED, 1378d522f475Smrg XtPointer data GCC_UNUSED) 1379d522f475Smrg{ 1380d522f475Smrg#if defined(SIGTSTP) 1381d522f475Smrg handle_send_signal(gw, SIGTSTP); 1382d522f475Smrg#endif 1383d522f475Smrg} 1384d522f475Smrg 1385d522f475Smrg/* ARGSUSED */ 1386d522f475Smrgstatic void 1387d522f475Smrgdo_continue(Widget gw, 1388d522f475Smrg XtPointer closure GCC_UNUSED, 1389d522f475Smrg XtPointer data GCC_UNUSED) 1390d522f475Smrg{ 1391d522f475Smrg#if defined(SIGCONT) 1392d522f475Smrg handle_send_signal(gw, SIGCONT); 1393d522f475Smrg#endif 1394d522f475Smrg} 1395d522f475Smrg 1396d522f475Smrg/* ARGSUSED */ 1397d522f475Smrgstatic void 1398d522f475Smrgdo_interrupt(Widget gw, 1399d522f475Smrg XtPointer closure GCC_UNUSED, 1400d522f475Smrg XtPointer data GCC_UNUSED) 1401d522f475Smrg{ 1402d522f475Smrg handle_send_signal(gw, SIGINT); 1403d522f475Smrg} 1404d522f475Smrg 1405d522f475Smrg/* ARGSUSED */ 1406d522f475Smrgvoid 1407d522f475Smrgdo_hangup(Widget gw, 1408d522f475Smrg XtPointer closure GCC_UNUSED, 1409d522f475Smrg XtPointer data GCC_UNUSED) 1410d522f475Smrg{ 1411d522f475Smrg handle_send_signal(gw, SIGHUP); 1412d522f475Smrg} 1413d522f475Smrg 1414d522f475Smrg/* ARGSUSED */ 1415d522f475Smrgstatic void 1416d522f475Smrgdo_terminate(Widget gw, 1417d522f475Smrg XtPointer closure GCC_UNUSED, 1418d522f475Smrg XtPointer data GCC_UNUSED) 1419d522f475Smrg{ 1420d522f475Smrg handle_send_signal(gw, SIGTERM); 1421d522f475Smrg} 1422d522f475Smrg 1423d522f475Smrg/* ARGSUSED */ 1424d522f475Smrgstatic void 1425d522f475Smrgdo_kill(Widget gw, 1426d522f475Smrg XtPointer closure GCC_UNUSED, 1427d522f475Smrg XtPointer data GCC_UNUSED) 1428d522f475Smrg{ 1429d522f475Smrg handle_send_signal(gw, SIGKILL); 1430d522f475Smrg} 1431d522f475Smrg 1432d522f475Smrgstatic void 1433d522f475Smrgdo_quit(Widget gw GCC_UNUSED, 1434d522f475Smrg XtPointer closure GCC_UNUSED, 1435d522f475Smrg XtPointer data GCC_UNUSED) 1436d522f475Smrg{ 1437d522f475Smrg Cleanup(SIGHUP); 1438d522f475Smrg} 1439d522f475Smrg 1440d522f475Smrg/* 1441d522f475Smrg * vt menu callbacks 1442d522f475Smrg */ 1443d522f475Smrg 1444d522f475Smrgstatic void 1445d522f475Smrgdo_scrollbar(Widget gw GCC_UNUSED, 1446d522f475Smrg XtPointer closure GCC_UNUSED, 1447d522f475Smrg XtPointer data GCC_UNUSED) 1448d522f475Smrg{ 1449d522f475Smrg ToggleScrollBar(term); 1450d522f475Smrg} 1451d522f475Smrg 1452d522f475Smrgstatic void 1453d522f475Smrgdo_jumpscroll(Widget gw GCC_UNUSED, 1454d522f475Smrg XtPointer closure GCC_UNUSED, 1455d522f475Smrg XtPointer data GCC_UNUSED) 1456d522f475Smrg{ 1457d522f475Smrg TScreen *screen = TScreenOf(term); 1458d522f475Smrg 1459d522f475Smrg term->flags ^= SMOOTHSCROLL; 1460d522f475Smrg if (term->flags & SMOOTHSCROLL) { 1461d522f475Smrg screen->jumpscroll = False; 1462d522f475Smrg if (screen->scroll_amt) 1463d522f475Smrg FlushScroll(term); 1464d522f475Smrg } else { 1465d522f475Smrg screen->jumpscroll = True; 1466d522f475Smrg } 1467d522f475Smrg update_jumpscroll(); 1468d522f475Smrg} 1469d522f475Smrg 1470d522f475Smrgstatic void 1471d522f475Smrgdo_reversevideo(Widget gw GCC_UNUSED, 1472d522f475Smrg XtPointer closure GCC_UNUSED, 1473d522f475Smrg XtPointer data GCC_UNUSED) 1474d522f475Smrg{ 1475d522f475Smrg ReverseVideo(term); 1476d522f475Smrg} 1477d522f475Smrg 1478d522f475Smrgstatic void 1479d522f475Smrgdo_autowrap(Widget gw GCC_UNUSED, 1480d522f475Smrg XtPointer closure GCC_UNUSED, 1481d522f475Smrg XtPointer data GCC_UNUSED) 1482d522f475Smrg{ 1483d522f475Smrg term->flags ^= WRAPAROUND; 1484d522f475Smrg update_autowrap(); 1485d522f475Smrg} 1486d522f475Smrg 1487d522f475Smrgstatic void 1488d522f475Smrgdo_reversewrap(Widget gw GCC_UNUSED, 1489d522f475Smrg XtPointer closure GCC_UNUSED, 1490d522f475Smrg XtPointer data GCC_UNUSED) 1491d522f475Smrg{ 1492d522f475Smrg term->flags ^= REVERSEWRAP; 1493d522f475Smrg update_reversewrap(); 1494d522f475Smrg} 1495d522f475Smrg 1496d522f475Smrgstatic void 1497d522f475Smrgdo_autolinefeed(Widget gw GCC_UNUSED, 1498d522f475Smrg XtPointer closure GCC_UNUSED, 1499d522f475Smrg XtPointer data GCC_UNUSED) 1500d522f475Smrg{ 1501d522f475Smrg term->flags ^= LINEFEED; 1502d522f475Smrg update_autolinefeed(); 1503d522f475Smrg} 1504d522f475Smrg 1505d522f475Smrgstatic void 1506d522f475Smrgdo_appcursor(Widget gw GCC_UNUSED, 1507d522f475Smrg XtPointer closure GCC_UNUSED, 1508d522f475Smrg XtPointer data GCC_UNUSED) 1509d522f475Smrg{ 1510d522f475Smrg term->keyboard.flags ^= MODE_DECCKM; 1511d522f475Smrg update_appcursor(); 1512d522f475Smrg} 1513d522f475Smrg 1514d522f475Smrgstatic void 1515d522f475Smrgdo_appkeypad(Widget gw GCC_UNUSED, 1516d522f475Smrg XtPointer closure GCC_UNUSED, 1517d522f475Smrg XtPointer data GCC_UNUSED) 1518d522f475Smrg{ 1519d522f475Smrg term->keyboard.flags ^= MODE_DECKPAM; 1520d522f475Smrg update_appkeypad(); 1521d522f475Smrg} 1522d522f475Smrg 1523d522f475Smrgstatic void 1524d522f475Smrgdo_scrollkey(Widget gw GCC_UNUSED, 1525d522f475Smrg XtPointer closure GCC_UNUSED, 1526d522f475Smrg XtPointer data GCC_UNUSED) 1527d522f475Smrg{ 1528d522f475Smrg TScreen *screen = TScreenOf(term); 1529d522f475Smrg 1530956cc18dSsnj ToggleFlag(screen->scrollkey); 1531d522f475Smrg update_scrollkey(); 1532d522f475Smrg} 1533d522f475Smrg 1534d522f475Smrgstatic void 1535d522f475Smrgdo_scrollttyoutput(Widget gw GCC_UNUSED, 1536d522f475Smrg XtPointer closure GCC_UNUSED, 1537d522f475Smrg XtPointer data GCC_UNUSED) 1538d522f475Smrg{ 1539d522f475Smrg TScreen *screen = TScreenOf(term); 1540d522f475Smrg 1541956cc18dSsnj ToggleFlag(screen->scrollttyoutput); 1542d522f475Smrg update_scrollttyoutput(); 1543d522f475Smrg} 1544d522f475Smrg 1545f2e35a3aSmrg#if OPT_MENU_KEEPCLIPBOARD 1546f2e35a3aSmrgvoid 1547f2e35a3aSmrgupdate_keepClipboard(void) 1548f2e35a3aSmrg{ 1549f2e35a3aSmrg UpdateCheckbox("update_keepClipboard", 1550f2e35a3aSmrg vtMenuEntries, 1551f2e35a3aSmrg vtMenu_keepClipboard, 1552f2e35a3aSmrg TScreenOf(term)->keepClipboard); 1553f2e35a3aSmrg} 1554f2e35a3aSmrg#endif 1555f2e35a3aSmrg 15562e4f8982Smrgstatic void 15572e4f8982Smrgdo_keepClipboard(Widget gw GCC_UNUSED, 15582e4f8982Smrg XtPointer closure GCC_UNUSED, 15592e4f8982Smrg XtPointer data GCC_UNUSED) 15602e4f8982Smrg{ 15612e4f8982Smrg TScreen *screen = TScreenOf(term); 15622e4f8982Smrg 15632e4f8982Smrg ToggleFlag(screen->keepClipboard); 15642e4f8982Smrg update_keepClipboard(); 15652e4f8982Smrg} 15662e4f8982Smrg 1567d522f475Smrgstatic void 1568d522f475Smrgdo_keepSelection(Widget gw GCC_UNUSED, 1569d522f475Smrg XtPointer closure GCC_UNUSED, 1570d522f475Smrg XtPointer data GCC_UNUSED) 1571d522f475Smrg{ 1572d522f475Smrg TScreen *screen = TScreenOf(term); 1573d522f475Smrg 1574956cc18dSsnj ToggleFlag(screen->keepSelection); 1575d522f475Smrg update_keepSelection(); 1576d522f475Smrg} 1577d522f475Smrg 1578d522f475Smrgstatic void 1579d522f475Smrgdo_selectClipboard(Widget gw GCC_UNUSED, 1580d522f475Smrg XtPointer closure GCC_UNUSED, 1581d522f475Smrg XtPointer data GCC_UNUSED) 1582d522f475Smrg{ 1583d522f475Smrg TScreen *screen = TScreenOf(term); 1584d522f475Smrg 1585956cc18dSsnj ToggleFlag(screen->selectToClipboard); 1586d522f475Smrg update_selectToClipboard(); 1587d522f475Smrg} 1588d522f475Smrg 1589d522f475Smrgstatic void 1590d522f475Smrgdo_allow132(Widget gw GCC_UNUSED, 1591d522f475Smrg XtPointer closure GCC_UNUSED, 1592d522f475Smrg XtPointer data GCC_UNUSED) 1593d522f475Smrg{ 1594d522f475Smrg TScreen *screen = TScreenOf(term); 1595d522f475Smrg 1596956cc18dSsnj ToggleFlag(screen->c132); 1597d522f475Smrg update_allow132(); 1598d522f475Smrg} 1599d522f475Smrg 1600d522f475Smrgstatic void 1601d522f475Smrgdo_cursesemul(Widget gw GCC_UNUSED, 1602d522f475Smrg XtPointer closure GCC_UNUSED, 1603d522f475Smrg XtPointer data GCC_UNUSED) 1604d522f475Smrg{ 1605d522f475Smrg TScreen *screen = TScreenOf(term); 1606d522f475Smrg 1607956cc18dSsnj ToggleFlag(screen->curses); 1608d522f475Smrg update_cursesemul(); 1609d522f475Smrg} 1610d522f475Smrg 1611d522f475Smrgstatic void 1612d522f475Smrgdo_marginbell(Widget gw GCC_UNUSED, 1613d522f475Smrg XtPointer closure GCC_UNUSED, 1614d522f475Smrg XtPointer data GCC_UNUSED) 1615d522f475Smrg{ 1616d522f475Smrg TScreen *screen = TScreenOf(term); 1617d522f475Smrg 1618a1f3da82Smrg if ((ToggleFlag(screen->marginbell)) == 0) 161920d2c4d2Smrg screen->bellArmed = -1; 1620d522f475Smrg update_marginbell(); 1621d522f475Smrg} 1622d522f475Smrg 1623d522f475Smrg#if OPT_TEK4014 1624d522f475Smrgstatic void 1625d522f475Smrghandle_tekshow(Widget gw GCC_UNUSED, Bool allowswitch) 1626d522f475Smrg{ 162720d2c4d2Smrg XtermWidget xw = term; 162820d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1629d522f475Smrg 1630d522f475Smrg TRACE(("Show tek-window\n")); 163120d2c4d2Smrg if (!TEK4014_SHOWN(xw)) { /* not showing, turn on */ 1632d522f475Smrg set_tek_visibility(True); 1633d522f475Smrg } else if (screen->Vshow || allowswitch) { /* is showing, turn off */ 1634d522f475Smrg set_tek_visibility(False); 1635d522f475Smrg end_tek_mode(); /* WARNING: this does a longjmp */ 1636d522f475Smrg } else 163720d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1638d522f475Smrg} 1639d522f475Smrg 1640d522f475Smrg/* ARGSUSED */ 1641d522f475Smrgstatic void 1642d522f475Smrgdo_tekshow(Widget gw, 1643d522f475Smrg XtPointer closure GCC_UNUSED, 1644d522f475Smrg XtPointer data GCC_UNUSED) 1645d522f475Smrg{ 1646d522f475Smrg handle_tekshow(gw, True); 1647d522f475Smrg} 1648d522f475Smrg 1649d522f475Smrg/* ARGSUSED */ 1650d522f475Smrgstatic void 1651d522f475Smrgdo_tekonoff(Widget gw, 1652d522f475Smrg XtPointer closure GCC_UNUSED, 1653d522f475Smrg XtPointer data GCC_UNUSED) 1654d522f475Smrg{ 1655d522f475Smrg handle_tekshow(gw, False); 1656d522f475Smrg} 1657d522f475Smrg#endif /* OPT_TEK4014 */ 1658d522f475Smrg 1659d522f475Smrg#if OPT_BLINK_CURS 1660d522f475Smrg/* ARGSUSED */ 1661d522f475Smrgstatic void 1662d522f475Smrgdo_cursorblink(Widget gw GCC_UNUSED, 1663d522f475Smrg XtPointer closure GCC_UNUSED, 1664d522f475Smrg XtPointer data GCC_UNUSED) 1665d522f475Smrg{ 1666f2e35a3aSmrg ToggleCursorBlink(term); 1667d522f475Smrg} 1668d522f475Smrg#endif 1669d522f475Smrg 1670d522f475Smrg/* ARGSUSED */ 1671d522f475Smrgstatic void 1672d522f475Smrgdo_altscreen(Widget gw GCC_UNUSED, 1673d522f475Smrg XtPointer closure GCC_UNUSED, 1674d522f475Smrg XtPointer data GCC_UNUSED) 1675d522f475Smrg{ 1676d522f475Smrg ToggleAlternate(term); 1677d522f475Smrg} 1678d522f475Smrg 1679d522f475Smrg/* ARGSUSED */ 1680d522f475Smrgstatic void 1681d522f475Smrgdo_titeInhibit(Widget gw GCC_UNUSED, 1682d522f475Smrg XtPointer closure GCC_UNUSED, 1683d522f475Smrg XtPointer data GCC_UNUSED) 1684d522f475Smrg{ 1685956cc18dSsnj ToggleFlag(term->misc.titeInhibit); 1686d522f475Smrg update_titeInhibit(); 1687d522f475Smrg} 1688d522f475Smrg 1689d522f475Smrg#ifndef NO_ACTIVE_ICON 1690d522f475Smrg/* ARGSUSED */ 1691d522f475Smrgstatic void 1692d522f475Smrgdo_activeicon(Widget gw GCC_UNUSED, 1693d522f475Smrg XtPointer closure GCC_UNUSED, 1694d522f475Smrg XtPointer data GCC_UNUSED) 1695d522f475Smrg{ 1696d522f475Smrg TScreen *screen = TScreenOf(term); 1697d522f475Smrg 1698d522f475Smrg if (screen->iconVwin.window) { 1699d522f475Smrg Widget shell = XtParent(term); 17000bd37d32Smrg ToggleFlag(term->work.active_icon); 1701d522f475Smrg XtVaSetValues(shell, XtNiconWindow, 17020bd37d32Smrg term->work.active_icon ? screen->iconVwin.window : None, 1703d522f475Smrg (XtPointer) 0); 1704d522f475Smrg update_activeicon(); 1705d522f475Smrg } 1706d522f475Smrg} 1707d522f475Smrg#endif /* NO_ACTIVE_ICON */ 1708d522f475Smrg 1709d522f475Smrgstatic void 1710d522f475Smrgdo_softreset(Widget gw GCC_UNUSED, 1711d522f475Smrg XtPointer closure GCC_UNUSED, 1712d522f475Smrg XtPointer data GCC_UNUSED) 1713d522f475Smrg{ 1714d522f475Smrg VTReset(term, False, False); 1715d522f475Smrg} 1716d522f475Smrg 1717d522f475Smrgstatic void 1718d522f475Smrgdo_hardreset(Widget gw GCC_UNUSED, 1719d522f475Smrg XtPointer closure GCC_UNUSED, 1720d522f475Smrg XtPointer data GCC_UNUSED) 1721d522f475Smrg{ 1722d522f475Smrg VTReset(term, True, False); 1723d522f475Smrg} 1724d522f475Smrg 1725d522f475Smrgstatic void 1726d522f475Smrgdo_clearsavedlines(Widget gw GCC_UNUSED, 1727d522f475Smrg XtPointer closure GCC_UNUSED, 1728d522f475Smrg XtPointer data GCC_UNUSED) 1729d522f475Smrg{ 1730d522f475Smrg VTReset(term, True, True); 1731d522f475Smrg} 1732d522f475Smrg 1733d522f475Smrg#if OPT_TEK4014 1734d522f475Smrgstatic void 1735d522f475Smrgdo_tekmode(Widget gw GCC_UNUSED, 1736d522f475Smrg XtPointer closure GCC_UNUSED, 1737d522f475Smrg XtPointer data GCC_UNUSED) 1738d522f475Smrg{ 1739d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to tek mode */ 1740d522f475Smrg} 1741d522f475Smrg 1742d522f475Smrg/* ARGSUSED */ 1743d522f475Smrgstatic void 1744d522f475Smrgdo_vthide(Widget gw GCC_UNUSED, 1745d522f475Smrg XtPointer closure GCC_UNUSED, 1746d522f475Smrg XtPointer data GCC_UNUSED) 1747d522f475Smrg{ 1748d522f475Smrg hide_vt_window(); 1749d522f475Smrg} 1750d522f475Smrg#endif /* OPT_TEK4014 */ 1751d522f475Smrg 1752d522f475Smrg/* 1753d522f475Smrg * vtfont menu 1754d522f475Smrg */ 1755d522f475Smrg 1756d522f475Smrgstatic void 1757d522f475Smrgdo_vtfont(Widget gw GCC_UNUSED, 1758d522f475Smrg XtPointer closure, 1759d522f475Smrg XtPointer data GCC_UNUSED) 1760d522f475Smrg{ 176120d2c4d2Smrg XtermWidget xw = term; 1762d522f475Smrg char *entryname = (char *) closure; 1763d522f475Smrg int i; 1764d522f475Smrg 17650bd37d32Smrg TRACE(("do_vtfont(%s)\n", entryname)); 1766d522f475Smrg for (i = 0; i < NMENUFONTS; i++) { 1767d522f475Smrg if (strcmp(entryname, fontMenuEntries[i].name) == 0) { 176820d2c4d2Smrg SetVTFont(xw, i, True, NULL); 1769d522f475Smrg return; 1770d522f475Smrg } 1771d522f475Smrg } 177220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1773d522f475Smrg} 1774d522f475Smrg 1775d522f475Smrg#if OPT_DEC_CHRSET 1776d522f475Smrgstatic void 1777d522f475Smrgdo_font_doublesize(Widget gw GCC_UNUSED, 1778d522f475Smrg XtPointer closure GCC_UNUSED, 1779d522f475Smrg XtPointer data GCC_UNUSED) 1780d522f475Smrg{ 178120d2c4d2Smrg XtermWidget xw = term; 178220d2c4d2Smrg 178320d2c4d2Smrg if (TScreenOf(xw)->cache_doublesize != 0) 178420d2c4d2Smrg ToggleFlag(TScreenOf(xw)->font_doublesize); 1785d522f475Smrg update_font_doublesize(); 1786d522f475Smrg Redraw(); 1787d522f475Smrg} 1788d522f475Smrg#endif 1789d522f475Smrg 1790d522f475Smrg#if OPT_BOX_CHARS 1791d522f475Smrgstatic void 1792d522f475Smrgdo_font_boxchars(Widget gw GCC_UNUSED, 1793d522f475Smrg XtPointer closure GCC_UNUSED, 1794d522f475Smrg XtPointer data GCC_UNUSED) 1795d522f475Smrg{ 179620d2c4d2Smrg ToggleFlag(TScreenOf(term)->force_box_chars); 1797d522f475Smrg update_font_boxchars(); 1798d522f475Smrg Redraw(); 1799d522f475Smrg} 180020d2c4d2Smrg 180120d2c4d2Smrgstatic void 180220d2c4d2Smrgdo_font_packed(Widget gw GCC_UNUSED, 180320d2c4d2Smrg XtPointer closure GCC_UNUSED, 180420d2c4d2Smrg XtPointer data GCC_UNUSED) 180520d2c4d2Smrg{ 180620d2c4d2Smrg ToggleFlag(TScreenOf(term)->force_packed); 180720d2c4d2Smrg update_font_packed(); 180820d2c4d2Smrg SetVTFont(term, TScreenOf(term)->menu_font_number, True, NULL); 180920d2c4d2Smrg} 1810d522f475Smrg#endif 1811d522f475Smrg 1812d522f475Smrg#if OPT_DEC_SOFTFONT 1813d522f475Smrgstatic void 1814d522f475Smrgdo_font_loadable(Widget gw GCC_UNUSED, 1815d522f475Smrg XtPointer closure GCC_UNUSED, 1816d522f475Smrg XtPointer data GCC_UNUSED) 1817d522f475Smrg{ 1818956cc18dSsnj ToggleFlag(term->misc.font_loadable); 1819d522f475Smrg update_font_loadable(); 1820d522f475Smrg} 1821d522f475Smrg#endif 1822d522f475Smrg 1823d522f475Smrg#if OPT_RENDERFONT 1824d522f475Smrgstatic void 1825d522f475Smrgdo_font_renderfont(Widget gw GCC_UNUSED, 1826d522f475Smrg XtPointer closure GCC_UNUSED, 1827d522f475Smrg XtPointer data GCC_UNUSED) 1828d522f475Smrg{ 182920d2c4d2Smrg XtermWidget xw = (XtermWidget) term; 183020d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1831d522f475Smrg int fontnum = screen->menu_font_number; 183220d2c4d2Smrg String name = TScreenOf(xw)->MenuFontName(fontnum); 1833d522f475Smrg 183420d2c4d2Smrg DefaultRenderFont(xw); 18350bd37d32Smrg ToggleFlag(xw->work.render_font); 1836d522f475Smrg update_font_renderfont(); 183720d2c4d2Smrg xtermLoadFont(xw, xtermFontName(name), True, fontnum); 1838d522f475Smrg ScrnRefresh(term, 0, 0, 1839d522f475Smrg MaxRows(screen), 1840d522f475Smrg MaxCols(screen), True); 1841d522f475Smrg} 1842d522f475Smrg#endif 1843d522f475Smrg 1844d522f475Smrg#if OPT_WIDE_CHARS 1845e39b573cSmrgstatic void 1846e39b573cSmrgsetup_wide_fonts(XtermWidget xw) 1847e39b573cSmrg{ 1848e39b573cSmrg TScreen *screen = TScreenOf(xw); 1849e39b573cSmrg 1850e39b573cSmrg if (screen->wide_chars) { 1851e39b573cSmrg if (xtermLoadWideFonts(xw, True)) { 1852e39b573cSmrg SetVTFont(xw, screen->menu_font_number, True, NULL); 1853e39b573cSmrg } 1854e39b573cSmrg } else { 1855e39b573cSmrg ChangeToWide(xw); 1856e39b573cSmrg } 1857e39b573cSmrg} 1858e39b573cSmrg 1859e39b573cSmrgstatic void 1860e39b573cSmrgsetup_narrow_fonts(XtermWidget xw) 1861e39b573cSmrg{ 1862e39b573cSmrg TScreen *screen = TScreenOf(xw); 1863e39b573cSmrg 1864e39b573cSmrg if (xtermLoadDefaultFonts(xw)) { 1865e39b573cSmrg SetVTFont(xw, screen->menu_font_number, True, NULL); 1866e39b573cSmrg } 1867e39b573cSmrg} 1868e39b573cSmrg 1869d522f475Smrgstatic void 1870d522f475Smrgdo_font_utf8_mode(Widget gw GCC_UNUSED, 1871d522f475Smrg XtPointer closure GCC_UNUSED, 1872d522f475Smrg XtPointer data GCC_UNUSED) 1873d522f475Smrg{ 1874e39b573cSmrg XtermWidget xw = term; 1875e39b573cSmrg TScreen *screen = TScreenOf(xw); 1876d522f475Smrg 1877d522f475Smrg /* 1878d522f475Smrg * If xterm was started with -wc option, it might not have the wide fonts. 1879d522f475Smrg * If xterm was not started with -wc, it might not have wide cells. 1880d522f475Smrg */ 1881d522f475Smrg if (!screen->utf8_mode) { 1882e39b573cSmrg setup_wide_fonts(xw); 1883d522f475Smrg } 1884d522f475Smrg switchPtyData(screen, !screen->utf8_mode); 1885d522f475Smrg /* 1886d522f475Smrg * We don't repaint the screen when switching UTF-8 on/off. When switching 1887d522f475Smrg * on - the Latin-1 codes should paint as-is. When switching off, that's 1888d522f475Smrg * hard to do properly. 1889d522f475Smrg */ 1890d522f475Smrg} 1891d522f475Smrg 1892e39b573cSmrgstatic void 1893e39b573cSmrgdo_font_utf8_fonts(Widget gw GCC_UNUSED, 1894e39b573cSmrg XtPointer closure GCC_UNUSED, 1895e39b573cSmrg XtPointer data GCC_UNUSED) 1896e39b573cSmrg{ 1897e39b573cSmrg XtermWidget xw = term; 1898e39b573cSmrg TScreen *screen = TScreenOf(xw); 1899e39b573cSmrg 1900e39b573cSmrg ToggleFlag(screen->utf8_fonts); 1901e39b573cSmrg update_font_utf8_fonts(); 1902e39b573cSmrg 1903e39b573cSmrg if (screen->utf8_fonts) { 1904e39b573cSmrg setup_wide_fonts(xw); 1905e39b573cSmrg } else { 1906e39b573cSmrg setup_narrow_fonts(xw); 1907e39b573cSmrg } 1908e39b573cSmrg} 1909e39b573cSmrg 1910d522f475Smrgstatic void 1911d522f475Smrgdo_font_utf8_title(Widget gw GCC_UNUSED, 1912d522f475Smrg XtPointer closure GCC_UNUSED, 1913d522f475Smrg XtPointer data GCC_UNUSED) 1914d522f475Smrg{ 1915d522f475Smrg TScreen *screen = TScreenOf(term); 1916d522f475Smrg 1917956cc18dSsnj ToggleFlag(screen->utf8_title); 1918d522f475Smrg update_font_utf8_title(); 1919d522f475Smrg} 1920d522f475Smrg#endif 1921d522f475Smrg 1922d522f475Smrg/* 1923d522f475Smrg * tek menu 1924d522f475Smrg */ 1925d522f475Smrg 1926d522f475Smrg#if OPT_TEK4014 1927d522f475Smrgstatic void 1928956cc18dSsnjdo_tektextlarge(Widget gw, 1929d522f475Smrg XtPointer closure GCC_UNUSED, 1930d522f475Smrg XtPointer data GCC_UNUSED) 1931d522f475Smrg{ 1932956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextlarge); 1933d522f475Smrg} 1934d522f475Smrg 1935d522f475Smrgstatic void 1936956cc18dSsnjdo_tektext2(Widget gw, 1937d522f475Smrg XtPointer closure GCC_UNUSED, 1938d522f475Smrg XtPointer data GCC_UNUSED) 1939d522f475Smrg{ 1940956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext2); 1941d522f475Smrg} 1942d522f475Smrg 1943d522f475Smrgstatic void 1944956cc18dSsnjdo_tektext3(Widget gw, 1945d522f475Smrg XtPointer closure GCC_UNUSED, 1946d522f475Smrg XtPointer data GCC_UNUSED) 1947d522f475Smrg{ 1948956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektext3); 1949d522f475Smrg} 1950d522f475Smrg 1951d522f475Smrgstatic void 1952956cc18dSsnjdo_tektextsmall(Widget gw, 1953d522f475Smrg XtPointer closure GCC_UNUSED, 1954d522f475Smrg XtPointer data GCC_UNUSED) 1955d522f475Smrg{ 1956956cc18dSsnj TekSetFontSize(getTekWidget(gw), True, tekMenu_tektextsmall); 1957d522f475Smrg} 1958d522f475Smrg 1959d522f475Smrgstatic void 1960956cc18dSsnjdo_tekpage(Widget gw, 1961d522f475Smrg XtPointer closure GCC_UNUSED, 1962d522f475Smrg XtPointer data GCC_UNUSED) 1963d522f475Smrg{ 1964956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), False); 1965d522f475Smrg} 1966d522f475Smrg 1967d522f475Smrgstatic void 1968956cc18dSsnjdo_tekreset(Widget gw, 1969d522f475Smrg XtPointer closure GCC_UNUSED, 1970d522f475Smrg XtPointer data GCC_UNUSED) 1971d522f475Smrg{ 1972956cc18dSsnj TekSimulatePageButton(getTekWidget(gw), True); 1973d522f475Smrg} 1974d522f475Smrg 1975d522f475Smrgstatic void 1976956cc18dSsnjdo_tekcopy(Widget gw, 1977d522f475Smrg XtPointer closure GCC_UNUSED, 1978d522f475Smrg XtPointer data GCC_UNUSED) 1979d522f475Smrg{ 1980956cc18dSsnj TekCopy(getTekWidget(gw)); 1981d522f475Smrg} 1982d522f475Smrg 1983d522f475Smrgstatic void 1984d522f475Smrghandle_vtshow(Widget gw GCC_UNUSED, Bool allowswitch) 1985d522f475Smrg{ 198620d2c4d2Smrg XtermWidget xw = term; 198720d2c4d2Smrg TScreen *screen = TScreenOf(xw); 1988d522f475Smrg 1989d522f475Smrg TRACE(("Show vt-window\n")); 1990d522f475Smrg if (!screen->Vshow) { /* not showing, turn on */ 1991d522f475Smrg set_vt_visibility(True); 199220d2c4d2Smrg } else if (TEK4014_SHOWN(xw) || allowswitch) { /* is showing, turn off */ 1993d522f475Smrg set_vt_visibility(False); 199420d2c4d2Smrg if (!TEK4014_ACTIVE(xw) && tekRefreshList) 1995d522f475Smrg TekRefresh(tekWidget); 1996d522f475Smrg end_vt_mode(); /* WARNING: this does a longjmp... */ 1997d522f475Smrg } else 199820d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 1999d522f475Smrg} 2000d522f475Smrg 2001d522f475Smrgstatic void 2002d522f475Smrgdo_vtshow(Widget gw, 2003d522f475Smrg XtPointer closure GCC_UNUSED, 2004d522f475Smrg XtPointer data GCC_UNUSED) 2005d522f475Smrg{ 2006d522f475Smrg handle_vtshow(gw, True); 2007d522f475Smrg} 2008d522f475Smrg 2009d522f475Smrgstatic void 2010d522f475Smrgdo_vtonoff(Widget gw, 2011d522f475Smrg XtPointer closure GCC_UNUSED, 2012d522f475Smrg XtPointer data GCC_UNUSED) 2013d522f475Smrg{ 2014d522f475Smrg handle_vtshow(gw, False); 2015d522f475Smrg} 2016d522f475Smrg 2017d522f475Smrgstatic void 2018d522f475Smrgdo_vtmode(Widget gw GCC_UNUSED, 2019d522f475Smrg XtPointer closure GCC_UNUSED, 2020d522f475Smrg XtPointer data GCC_UNUSED) 2021d522f475Smrg{ 2022d522f475Smrg switch_modes(TEK4014_ACTIVE(term)); /* switch to vt, or from */ 2023d522f475Smrg} 2024d522f475Smrg 2025d522f475Smrg/* ARGSUSED */ 2026d522f475Smrgstatic void 2027d522f475Smrgdo_tekhide(Widget gw GCC_UNUSED, 2028d522f475Smrg XtPointer closure GCC_UNUSED, 2029d522f475Smrg XtPointer data GCC_UNUSED) 2030d522f475Smrg{ 2031d522f475Smrg hide_tek_window(); 2032d522f475Smrg} 2033d522f475Smrg#endif /* OPT_TEK4014 */ 2034d522f475Smrg 2035d522f475Smrg/* 2036d522f475Smrg * public handler routines 2037d522f475Smrg */ 20380bd37d32Smrgint 2039894e0ac8SmrgdecodeToggle(XtermWidget xw, String *params, Cardinal nparams) 2040d522f475Smrg{ 20410bd37d32Smrg int dir = toggleErr; 2042d522f475Smrg 2043d522f475Smrg switch (nparams) { 2044d522f475Smrg case 0: 20450bd37d32Smrg dir = toggleAll; 2046d522f475Smrg break; 2047d522f475Smrg case 1: 2048d522f475Smrg if (XmuCompareISOLatin1(params[0], "on") == 0) 20490bd37d32Smrg dir = toggleOn; 2050d522f475Smrg else if (XmuCompareISOLatin1(params[0], "off") == 0) 20510bd37d32Smrg dir = toggleOff; 2052d522f475Smrg else if (XmuCompareISOLatin1(params[0], "toggle") == 0) 20530bd37d32Smrg dir = toggleAll; 2054d522f475Smrg break; 2055d522f475Smrg } 2056d522f475Smrg 20570bd37d32Smrg if (dir == toggleErr) { 205820d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 20590bd37d32Smrg } 20600bd37d32Smrg 20610bd37d32Smrg return dir; 20620bd37d32Smrg} 2063d522f475Smrg 20640bd37d32Smrgstatic void 20650bd37d32Smrghandle_toggle(void (*proc) PROTO_XT_CALLBACK_ARGS, 20660bd37d32Smrg int var, 2067894e0ac8Smrg String *params, 20680bd37d32Smrg Cardinal nparams, 20690bd37d32Smrg Widget w, 20700bd37d32Smrg XtPointer closure, 20710bd37d32Smrg XtPointer data) 20720bd37d32Smrg{ 20730bd37d32Smrg XtermWidget xw = term; 20740bd37d32Smrg 20750bd37d32Smrg switch (decodeToggle(xw, params, nparams)) { 20760bd37d32Smrg 20770bd37d32Smrg case toggleAll: 2078d522f475Smrg (*proc) (w, closure, data); 2079d522f475Smrg break; 2080d522f475Smrg 20810bd37d32Smrg case toggleOff: 2082d522f475Smrg if (var) 2083d522f475Smrg (*proc) (w, closure, data); 2084d522f475Smrg else 208520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2086d522f475Smrg break; 2087d522f475Smrg 20880bd37d32Smrg case toggleOn: 2089d522f475Smrg if (!var) 2090d522f475Smrg (*proc) (w, closure, data); 2091d522f475Smrg else 209220d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2093d522f475Smrg break; 2094d522f475Smrg } 2095d522f475Smrg return; 2096d522f475Smrg} 2097d522f475Smrg 2098d522f475Smrg#define handle_vt_toggle(proc, var, params, nparams, w) \ 2099d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 2100d522f475Smrg 210120d2c4d2Smrg#define HANDLE_VT_TOGGLE(name) \ 210220d2c4d2Smrg handle_vt_toggle(do_##name, TScreenOf(term)->name, params, *param_count, w) 210320d2c4d2Smrg 2104d522f475Smrg#define handle_tek_toggle(proc, var, params, nparams, w) \ 2105d522f475Smrg handle_toggle(proc, (int) (var), params, nparams, w, (XtPointer)0, (XtPointer)0) 2106d522f475Smrg 2107d522f475Smrgvoid 2108d522f475SmrgHandleAllowSends(Widget w, 2109894e0ac8Smrg XEvent *event GCC_UNUSED, 2110894e0ac8Smrg String *params, 2111d522f475Smrg Cardinal *param_count) 2112d522f475Smrg{ 211320d2c4d2Smrg handle_vt_toggle(do_allowsends, TScreenOf(term)->allowSendEvents, 2114d522f475Smrg params, *param_count, w); 2115d522f475Smrg} 2116d522f475Smrg 2117d522f475Smrgvoid 2118d522f475SmrgHandleSetVisualBell(Widget w, 2119894e0ac8Smrg XEvent *event GCC_UNUSED, 2120894e0ac8Smrg String *params, 2121d522f475Smrg Cardinal *param_count) 2122d522f475Smrg{ 212320d2c4d2Smrg HANDLE_VT_TOGGLE(visualbell); 2124d522f475Smrg} 2125d522f475Smrg 2126d522f475Smrgvoid 2127d522f475SmrgHandleSetPopOnBell(Widget w, 2128894e0ac8Smrg XEvent *event GCC_UNUSED, 2129894e0ac8Smrg String *params, 2130d522f475Smrg Cardinal *param_count) 2131d522f475Smrg{ 213220d2c4d2Smrg HANDLE_VT_TOGGLE(poponbell); 2133d522f475Smrg} 2134d522f475Smrg 2135d522f475Smrg#ifdef ALLOWLOGGING 2136d522f475Smrgvoid 2137d522f475SmrgHandleLogging(Widget w, 2138894e0ac8Smrg XEvent *event GCC_UNUSED, 2139894e0ac8Smrg String *params, 2140d522f475Smrg Cardinal *param_count) 2141d522f475Smrg{ 214220d2c4d2Smrg HANDLE_VT_TOGGLE(logging); 2143d522f475Smrg} 2144d522f475Smrg#endif 2145d522f475Smrg 2146e39b573cSmrg#if OPT_PRINT_ON_EXIT 2147e39b573cSmrgvoid 2148e39b573cSmrgHandleWriteNow(Widget w, 2149894e0ac8Smrg XEvent *event GCC_UNUSED, 2150894e0ac8Smrg String *params GCC_UNUSED, 2151e39b573cSmrg Cardinal *param_count GCC_UNUSED) 2152e39b573cSmrg{ 2153e39b573cSmrg do_write_now(w, 0, 0); 2154e39b573cSmrg} 2155e39b573cSmrg 2156e39b573cSmrgvoid 2157e39b573cSmrgHandleWriteError(Widget w, 2158894e0ac8Smrg XEvent *event GCC_UNUSED, 2159894e0ac8Smrg String *params, 2160e39b573cSmrg Cardinal *param_count) 2161e39b573cSmrg{ 2162e39b573cSmrg HANDLE_VT_TOGGLE(write_error); 2163e39b573cSmrg} 2164e39b573cSmrg#endif 2165e39b573cSmrg 2166d522f475Smrg/* ARGSUSED */ 2167d522f475Smrgvoid 216820d2c4d2SmrgHandlePrintScreen(Widget w GCC_UNUSED, 2169894e0ac8Smrg XEvent *event GCC_UNUSED, 2170f2e35a3aSmrg String *params, 2171f2e35a3aSmrg Cardinal *param_count) 2172d522f475Smrg{ 217320d2c4d2Smrg xtermPrintScreen(term, True, getPrinterFlags(term, params, param_count)); 2174d522f475Smrg} 2175d522f475Smrg 2176956cc18dSsnj/* ARGSUSED */ 2177956cc18dSsnjvoid 217820d2c4d2SmrgHandlePrintEverything(Widget w GCC_UNUSED, 2179894e0ac8Smrg XEvent *event GCC_UNUSED, 2180894e0ac8Smrg String *params, 218120d2c4d2Smrg Cardinal *param_count) 2182956cc18dSsnj{ 218320d2c4d2Smrg xtermPrintEverything(term, getPrinterFlags(term, params, param_count)); 2184956cc18dSsnj} 2185956cc18dSsnj 2186d522f475Smrg/* ARGSUSED */ 2187d522f475Smrgvoid 2188d522f475SmrgHandlePrintControlMode(Widget w, 2189894e0ac8Smrg XEvent *event GCC_UNUSED, 2190894e0ac8Smrg String *params GCC_UNUSED, 2191d522f475Smrg Cardinal *param_count GCC_UNUSED) 2192d522f475Smrg{ 2193d522f475Smrg do_print_redir(w, (XtPointer) 0, (XtPointer) 0); 2194d522f475Smrg} 2195d522f475Smrg 2196d522f475Smrg/* ARGSUSED */ 2197d522f475Smrgvoid 2198d522f475SmrgHandleRedraw(Widget w, 2199894e0ac8Smrg XEvent *event GCC_UNUSED, 2200894e0ac8Smrg String *params GCC_UNUSED, 2201d522f475Smrg Cardinal *param_count GCC_UNUSED) 2202d522f475Smrg{ 2203d522f475Smrg do_redraw(w, (XtPointer) 0, (XtPointer) 0); 2204d522f475Smrg} 2205d522f475Smrg 2206d522f475Smrg/* ARGSUSED */ 2207d522f475Smrgvoid 2208d522f475SmrgHandleSendSignal(Widget w, 2209894e0ac8Smrg XEvent *event GCC_UNUSED, 2210894e0ac8Smrg String *params, 2211d522f475Smrg Cardinal *param_count) 2212d522f475Smrg{ 2213d522f475Smrg /* *INDENT-OFF* */ 221401037d57Smrg static const struct sigtab { 221520d2c4d2Smrg const char *name; 2216d522f475Smrg int sig; 2217d522f475Smrg } signals[] = { 2218d522f475Smrg#ifdef SIGTSTP 2219d522f475Smrg { "suspend", SIGTSTP }, 2220d522f475Smrg { "tstp", SIGTSTP }, 2221d522f475Smrg#endif 2222d522f475Smrg#ifdef SIGCONT 2223d522f475Smrg { "cont", SIGCONT }, 2224d522f475Smrg#endif 2225d522f475Smrg { "int", SIGINT }, 2226d522f475Smrg { "hup", SIGHUP }, 2227d522f475Smrg { "quit", SIGQUIT }, 2228d522f475Smrg { "alrm", SIGALRM }, 2229d522f475Smrg { "alarm", SIGALRM }, 2230d522f475Smrg { "term", SIGTERM }, 2231d522f475Smrg { "kill", SIGKILL }, 2232d522f475Smrg { NULL, 0 }, 2233d522f475Smrg }; 2234d522f475Smrg /* *INDENT-ON* */ 2235d522f475Smrg 2236d522f475Smrg if (*param_count == 1) { 223701037d57Smrg const struct sigtab *st; 2238d522f475Smrg 2239d522f475Smrg for (st = signals; st->name; st++) { 2240d522f475Smrg if (XmuCompareISOLatin1(st->name, params[0]) == 0) { 2241d522f475Smrg handle_send_signal(w, st->sig); 2242d522f475Smrg return; 2243d522f475Smrg } 2244d522f475Smrg } 2245d522f475Smrg /* one could allow numeric values, but that would be a security hole */ 2246d522f475Smrg } 2247d522f475Smrg 224820d2c4d2Smrg Bell(term, XkbBI_MinorError, 0); 2249d522f475Smrg} 2250d522f475Smrg 2251d522f475Smrg/* ARGSUSED */ 2252d522f475Smrgvoid 2253d522f475SmrgHandleQuit(Widget w, 2254894e0ac8Smrg XEvent *event GCC_UNUSED, 2255894e0ac8Smrg String *params GCC_UNUSED, 2256d522f475Smrg Cardinal *param_count GCC_UNUSED) 2257d522f475Smrg{ 2258d522f475Smrg do_quit(w, (XtPointer) 0, (XtPointer) 0); 2259d522f475Smrg} 2260d522f475Smrg 2261d522f475Smrgvoid 2262d522f475SmrgHandle8BitControl(Widget w, 2263894e0ac8Smrg XEvent *event GCC_UNUSED, 2264894e0ac8Smrg String *params, 2265d522f475Smrg Cardinal *param_count) 2266d522f475Smrg{ 226720d2c4d2Smrg handle_vt_toggle(do_8bit_control, TScreenOf(term)->control_eight_bits, 2268d522f475Smrg params, *param_count, w); 2269d522f475Smrg} 2270d522f475Smrg 2271d522f475Smrgvoid 2272d522f475SmrgHandleBackarrow(Widget w, 2273894e0ac8Smrg XEvent *event GCC_UNUSED, 2274894e0ac8Smrg String *params, 2275d522f475Smrg Cardinal *param_count) 2276d522f475Smrg{ 2277d522f475Smrg handle_vt_toggle(do_backarrow, term->keyboard.flags & MODE_DECBKM, 2278d522f475Smrg params, *param_count, w); 2279d522f475Smrg} 2280d522f475Smrg 22810bd37d32Smrg#if OPT_MAXIMIZE 22820bd37d32Smrg#if OPT_TEK4014 22830bd37d32Smrg#define WhichEWMH (TEK4014_ACTIVE(xw) != 0) 22840bd37d32Smrg#else 22850bd37d32Smrg#define WhichEWMH 0 22860bd37d32Smrg#endif 22870bd37d32Smrgstatic void 22880bd37d32Smrgdo_fullscreen(Widget gw GCC_UNUSED, 22890bd37d32Smrg XtPointer closure GCC_UNUSED, 22900bd37d32Smrg XtPointer data GCC_UNUSED) 22910bd37d32Smrg{ 22920bd37d32Smrg XtermWidget xw = term; 22930bd37d32Smrg 22940bd37d32Smrg if (resource.fullscreen != esNever) 22950bd37d32Smrg FullScreen(xw, !xw->work.ewmh[WhichEWMH].mode); 22960bd37d32Smrg} 22970bd37d32Smrg 22980bd37d32Smrg/* ARGSUSED */ 22990bd37d32Smrgvoid 23000bd37d32SmrgHandleFullscreen(Widget w, 2301894e0ac8Smrg XEvent *event GCC_UNUSED, 2302f2e35a3aSmrg String *params, 2303f2e35a3aSmrg Cardinal *param_count) 23040bd37d32Smrg{ 23050bd37d32Smrg XtermWidget xw = term; 23060bd37d32Smrg 23070bd37d32Smrg if (resource.fullscreen != esNever) { 23080bd37d32Smrg handle_vt_toggle(do_fullscreen, xw->work.ewmh[WhichEWMH].mode, 23090bd37d32Smrg params, *param_count, w); 23100bd37d32Smrg } 23110bd37d32Smrg} 23120bd37d32Smrg 23130bd37d32Smrgvoid 23140bd37d32Smrgupdate_fullscreen(void) 23150bd37d32Smrg{ 23160bd37d32Smrg XtermWidget xw = term; 23170bd37d32Smrg 23180bd37d32Smrg if (resource.fullscreen <= 1) { 23190bd37d32Smrg UpdateCheckbox("update_fullscreen", 23200bd37d32Smrg mainMenuEntries, 23210bd37d32Smrg mainMenu_fullscreen, 23220bd37d32Smrg xw->work.ewmh[WhichEWMH].mode); 23230bd37d32Smrg } else { 23240bd37d32Smrg SetItemSensitivity(mainMenuEntries[mainMenu_fullscreen].widget, 23250bd37d32Smrg False); 23260bd37d32Smrg } 23270bd37d32Smrg} 23280bd37d32Smrg 23290bd37d32Smrg#endif /* OPT_MAXIMIZE */ 23300bd37d32Smrg 2331e0a2b6dfSmrg#if OPT_SIXEL_GRAPHICS 2332e0a2b6dfSmrgstatic void 2333e0a2b6dfSmrgdo_sixelscrolling(Widget gw GCC_UNUSED, 2334e0a2b6dfSmrg XtPointer closure GCC_UNUSED, 2335e0a2b6dfSmrg XtPointer data GCC_UNUSED) 2336e0a2b6dfSmrg{ 2337e0a2b6dfSmrg term->keyboard.flags ^= MODE_DECSDM; 2338e0a2b6dfSmrg update_decsdm(); 2339e0a2b6dfSmrg} 2340e0a2b6dfSmrg 2341894e0ac8Smrgvoid 2342894e0ac8Smrgupdate_decsdm(void) 2343894e0ac8Smrg{ 2344894e0ac8Smrg UpdateCheckbox("update_decsdm", 2345894e0ac8Smrg vtMenuEntries, 2346894e0ac8Smrg vtMenu_sixelscrolling, 23475307cd1aSmrg (term->keyboard.flags & MODE_DECSDM) == 0); 2348894e0ac8Smrg} 2349894e0ac8Smrg 2350894e0ac8Smrgvoid 2351894e0ac8SmrgHandleSixelScrolling(Widget w, 2352894e0ac8Smrg XEvent *event GCC_UNUSED, 2353894e0ac8Smrg String *params, 2354894e0ac8Smrg Cardinal *param_count) 2355894e0ac8Smrg{ 2356894e0ac8Smrg handle_vt_toggle(do_sixelscrolling, term->keyboard.flags & MODE_DECSDM, 2357894e0ac8Smrg params, *param_count, w); 2358894e0ac8Smrg} 2359894e0ac8Smrg#endif 2360894e0ac8Smrg 2361894e0ac8Smrg#if OPT_GRAPHICS 2362e0a2b6dfSmrgstatic void 2363e0a2b6dfSmrgdo_privatecolorregisters(Widget gw GCC_UNUSED, 2364e0a2b6dfSmrg XtPointer closure GCC_UNUSED, 2365e0a2b6dfSmrg XtPointer data GCC_UNUSED) 2366e0a2b6dfSmrg{ 2367e0a2b6dfSmrg TScreen *screen = TScreenOf(term); 2368e0a2b6dfSmrg 2369e0a2b6dfSmrg ToggleFlag(screen->privatecolorregisters); 2370e0a2b6dfSmrg update_privatecolorregisters(); 2371e0a2b6dfSmrg} 2372e0a2b6dfSmrg 2373e0a2b6dfSmrgvoid 2374e0a2b6dfSmrgupdate_privatecolorregisters(void) 2375e0a2b6dfSmrg{ 2376e0a2b6dfSmrg UpdateCheckbox("update_privatecolorregisters", 2377e0a2b6dfSmrg vtMenuEntries, 2378e0a2b6dfSmrg vtMenu_privatecolorregisters, 2379e0a2b6dfSmrg TScreenOf(term)->privatecolorregisters); 2380e0a2b6dfSmrg} 2381e0a2b6dfSmrg 2382e0a2b6dfSmrgvoid 2383e0a2b6dfSmrgHandleSetPrivateColorRegisters(Widget w, 2384894e0ac8Smrg XEvent *event GCC_UNUSED, 2385894e0ac8Smrg String *params, 2386e0a2b6dfSmrg Cardinal *param_count) 2387e0a2b6dfSmrg{ 2388e0a2b6dfSmrg HANDLE_VT_TOGGLE(privatecolorregisters); 2389e0a2b6dfSmrg} 2390e0a2b6dfSmrg#endif 2391e0a2b6dfSmrg 2392d522f475Smrg#if OPT_SUN_FUNC_KEYS 2393d522f475Smrgvoid 2394d522f475SmrgHandleSunFunctionKeys(Widget w, 2395894e0ac8Smrg XEvent *event GCC_UNUSED, 2396894e0ac8Smrg String *params, 2397d522f475Smrg Cardinal *param_count) 2398d522f475Smrg{ 2399d522f475Smrg handle_vt_toggle(do_sun_fkeys, term->keyboard.type == keyboardIsSun, 2400d522f475Smrg params, *param_count, w); 2401d522f475Smrg} 2402d522f475Smrg#endif 2403d522f475Smrg 2404d522f475Smrg#if OPT_NUM_LOCK 2405d522f475Smrgvoid 2406d522f475SmrgHandleNumLock(Widget w, 2407894e0ac8Smrg XEvent *event GCC_UNUSED, 2408894e0ac8Smrg String *params, 2409d522f475Smrg Cardinal *param_count) 2410d522f475Smrg{ 2411d522f475Smrg handle_vt_toggle(do_num_lock, term->misc.real_NumLock, 2412d522f475Smrg params, *param_count, w); 2413d522f475Smrg} 2414d522f475Smrg 2415d522f475Smrgvoid 2416d522f475SmrgHandleAltEsc(Widget w, 2417894e0ac8Smrg XEvent *event GCC_UNUSED, 2418894e0ac8Smrg String *params, 2419d522f475Smrg Cardinal *param_count) 2420d522f475Smrg{ 24210bd37d32Smrg handle_vt_toggle(do_alt_esc, !TScreenOf(term)->alt_sends_esc, 2422d522f475Smrg params, *param_count, w); 2423d522f475Smrg} 2424d522f475Smrg 2425d522f475Smrgvoid 2426d522f475SmrgHandleMetaEsc(Widget w, 2427894e0ac8Smrg XEvent *event GCC_UNUSED, 2428894e0ac8Smrg String *params, 2429d522f475Smrg Cardinal *param_count) 2430d522f475Smrg{ 243120d2c4d2Smrg handle_vt_toggle(do_meta_esc, TScreenOf(term)->meta_sends_esc, 2432d522f475Smrg params, *param_count, w); 2433d522f475Smrg} 2434d522f475Smrg#endif 2435d522f475Smrg 2436d522f475Smrgvoid 2437d522f475SmrgHandleDeleteIsDEL(Widget w, 2438894e0ac8Smrg XEvent *event GCC_UNUSED, 2439894e0ac8Smrg String *params, 2440d522f475Smrg Cardinal *param_count) 2441d522f475Smrg{ 244220d2c4d2Smrg handle_vt_toggle(do_delete_del, TScreenOf(term)->delete_is_del, 2443d522f475Smrg params, *param_count, w); 2444d522f475Smrg} 2445d522f475Smrg 2446d522f475Smrgvoid 2447d522f475SmrgHandleOldFunctionKeys(Widget w, 2448894e0ac8Smrg XEvent *event GCC_UNUSED, 2449894e0ac8Smrg String *params, 2450d522f475Smrg Cardinal *param_count) 2451d522f475Smrg{ 2452d522f475Smrg handle_vt_toggle(do_old_fkeys, term->keyboard.type == keyboardIsLegacy, 2453d522f475Smrg params, *param_count, w); 2454d522f475Smrg} 2455d522f475Smrg 2456d522f475Smrg#if OPT_SUNPC_KBD 2457d522f475Smrgvoid 2458d522f475SmrgHandleSunKeyboard(Widget w, 2459894e0ac8Smrg XEvent *event GCC_UNUSED, 2460894e0ac8Smrg String *params, 2461d522f475Smrg Cardinal *param_count) 2462d522f475Smrg{ 2463d522f475Smrg handle_vt_toggle(do_sun_kbd, term->keyboard.type == keyboardIsVT220, 2464d522f475Smrg params, *param_count, w); 2465d522f475Smrg} 2466d522f475Smrg#endif 2467d522f475Smrg 2468d522f475Smrg#if OPT_HP_FUNC_KEYS 2469d522f475Smrgvoid 2470d522f475SmrgHandleHpFunctionKeys(Widget w, 2471894e0ac8Smrg XEvent *event GCC_UNUSED, 2472894e0ac8Smrg String *params, 2473d522f475Smrg Cardinal *param_count) 2474d522f475Smrg{ 2475d522f475Smrg handle_vt_toggle(do_hp_fkeys, term->keyboard.type == keyboardIsHP, 2476d522f475Smrg params, *param_count, w); 2477d522f475Smrg} 2478d522f475Smrg#endif 2479d522f475Smrg 2480d522f475Smrg#if OPT_SCO_FUNC_KEYS 2481d522f475Smrgvoid 2482d522f475SmrgHandleScoFunctionKeys(Widget w, 2483894e0ac8Smrg XEvent *event GCC_UNUSED, 2484894e0ac8Smrg String *params, 2485d522f475Smrg Cardinal *param_count) 2486d522f475Smrg{ 2487d522f475Smrg handle_vt_toggle(do_sco_fkeys, term->keyboard.type == keyboardIsSCO, 2488d522f475Smrg params, *param_count, w); 2489d522f475Smrg} 2490d522f475Smrg#endif 2491d522f475Smrg 2492d522f475Smrgvoid 2493d522f475SmrgHandleScrollbar(Widget w, 2494894e0ac8Smrg XEvent *event GCC_UNUSED, 2495894e0ac8Smrg String *params, 2496d522f475Smrg Cardinal *param_count) 2497d522f475Smrg{ 249820d2c4d2Smrg XtermWidget xw = term; 249920d2c4d2Smrg 250020d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 250120d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2502d522f475Smrg } else { 250320d2c4d2Smrg handle_vt_toggle(do_scrollbar, TScreenOf(xw)->fullVwin.sb_info.width, 2504d522f475Smrg params, *param_count, w); 2505d522f475Smrg } 2506d522f475Smrg} 2507d522f475Smrg 2508d522f475Smrgvoid 2509d522f475SmrgHandleJumpscroll(Widget w, 2510894e0ac8Smrg XEvent *event GCC_UNUSED, 2511894e0ac8Smrg String *params, 2512d522f475Smrg Cardinal *param_count) 2513d522f475Smrg{ 251420d2c4d2Smrg HANDLE_VT_TOGGLE(jumpscroll); 2515d522f475Smrg} 2516d522f475Smrg 25172e4f8982Smrgvoid 25182e4f8982SmrgHandleKeepClipboard(Widget w, 25192e4f8982Smrg XEvent *event GCC_UNUSED, 25202e4f8982Smrg String *params, 25212e4f8982Smrg Cardinal *param_count) 25222e4f8982Smrg{ 25232e4f8982Smrg HANDLE_VT_TOGGLE(keepClipboard); 25242e4f8982Smrg} 25252e4f8982Smrg 2526d522f475Smrgvoid 2527d522f475SmrgHandleKeepSelection(Widget w, 2528894e0ac8Smrg XEvent *event GCC_UNUSED, 2529894e0ac8Smrg String *params, 2530d522f475Smrg Cardinal *param_count) 2531d522f475Smrg{ 253220d2c4d2Smrg HANDLE_VT_TOGGLE(keepSelection); 2533d522f475Smrg} 2534d522f475Smrg 2535d522f475Smrgvoid 2536d522f475SmrgHandleSetSelect(Widget w, 2537894e0ac8Smrg XEvent *event GCC_UNUSED, 2538894e0ac8Smrg String *params, 2539d522f475Smrg Cardinal *param_count) 2540d522f475Smrg{ 254120d2c4d2Smrg handle_vt_toggle(do_selectClipboard, TScreenOf(term)->selectToClipboard, 2542d522f475Smrg params, *param_count, w); 2543d522f475Smrg} 2544d522f475Smrg 2545d522f475Smrgvoid 2546d522f475SmrgHandleReverseVideo(Widget w, 2547894e0ac8Smrg XEvent *event GCC_UNUSED, 2548894e0ac8Smrg String *params, 2549d522f475Smrg Cardinal *param_count) 2550d522f475Smrg{ 2551d522f475Smrg handle_vt_toggle(do_reversevideo, (term->misc.re_verse0), 2552d522f475Smrg params, *param_count, w); 2553d522f475Smrg} 2554d522f475Smrg 2555d522f475Smrgvoid 2556d522f475SmrgHandleAutoWrap(Widget w, 2557894e0ac8Smrg XEvent *event GCC_UNUSED, 2558894e0ac8Smrg String *params, 2559d522f475Smrg Cardinal *param_count) 2560d522f475Smrg{ 2561d522f475Smrg handle_vt_toggle(do_autowrap, (term->flags & WRAPAROUND), 2562d522f475Smrg params, *param_count, w); 2563d522f475Smrg} 2564d522f475Smrg 2565d522f475Smrgvoid 2566d522f475SmrgHandleReverseWrap(Widget w, 2567894e0ac8Smrg XEvent *event GCC_UNUSED, 2568894e0ac8Smrg String *params, 2569d522f475Smrg Cardinal *param_count) 2570d522f475Smrg{ 2571d522f475Smrg handle_vt_toggle(do_reversewrap, (term->flags & REVERSEWRAP), 2572d522f475Smrg params, *param_count, w); 2573d522f475Smrg} 2574d522f475Smrg 2575d522f475Smrgvoid 2576d522f475SmrgHandleAutoLineFeed(Widget w, 2577894e0ac8Smrg XEvent *event GCC_UNUSED, 2578894e0ac8Smrg String *params, 2579d522f475Smrg Cardinal *param_count) 2580d522f475Smrg{ 2581d522f475Smrg handle_vt_toggle(do_autolinefeed, (term->flags & LINEFEED), 2582d522f475Smrg params, *param_count, w); 2583d522f475Smrg} 2584d522f475Smrg 2585d522f475Smrgvoid 2586d522f475SmrgHandleAppCursor(Widget w, 2587894e0ac8Smrg XEvent *event GCC_UNUSED, 2588894e0ac8Smrg String *params, 2589d522f475Smrg Cardinal *param_count) 2590d522f475Smrg{ 2591d522f475Smrg handle_vt_toggle(do_appcursor, (term->keyboard.flags & MODE_DECCKM), 2592d522f475Smrg params, *param_count, w); 2593d522f475Smrg} 2594d522f475Smrg 2595d522f475Smrgvoid 2596d522f475SmrgHandleAppKeypad(Widget w, 2597894e0ac8Smrg XEvent *event GCC_UNUSED, 2598894e0ac8Smrg String *params, 2599d522f475Smrg Cardinal *param_count) 2600d522f475Smrg{ 2601d522f475Smrg handle_vt_toggle(do_appkeypad, (term->keyboard.flags & MODE_DECKPAM), 2602d522f475Smrg params, *param_count, w); 2603d522f475Smrg} 2604d522f475Smrg 2605d522f475Smrgvoid 2606d522f475SmrgHandleScrollKey(Widget w, 2607894e0ac8Smrg XEvent *event GCC_UNUSED, 2608894e0ac8Smrg String *params, 2609d522f475Smrg Cardinal *param_count) 2610d522f475Smrg{ 261120d2c4d2Smrg HANDLE_VT_TOGGLE(scrollkey); 2612d522f475Smrg} 2613d522f475Smrg 2614d522f475Smrgvoid 2615d522f475SmrgHandleScrollTtyOutput(Widget w, 2616894e0ac8Smrg XEvent *event GCC_UNUSED, 2617894e0ac8Smrg String *params, 2618d522f475Smrg Cardinal *param_count) 2619d522f475Smrg{ 262020d2c4d2Smrg HANDLE_VT_TOGGLE(scrollttyoutput); 2621d522f475Smrg} 2622d522f475Smrg 2623d522f475Smrgvoid 2624d522f475SmrgHandleAllow132(Widget w, 2625894e0ac8Smrg XEvent *event GCC_UNUSED, 2626894e0ac8Smrg String *params, 2627d522f475Smrg Cardinal *param_count) 2628d522f475Smrg{ 262920d2c4d2Smrg handle_vt_toggle(do_allow132, TScreenOf(term)->c132, 2630d522f475Smrg params, *param_count, w); 2631d522f475Smrg} 2632d522f475Smrg 2633d522f475Smrgvoid 2634d522f475SmrgHandleCursesEmul(Widget w, 2635894e0ac8Smrg XEvent *event GCC_UNUSED, 2636894e0ac8Smrg String *params, 2637d522f475Smrg Cardinal *param_count) 2638d522f475Smrg{ 263920d2c4d2Smrg handle_vt_toggle(do_cursesemul, TScreenOf(term)->curses, 2640d522f475Smrg params, *param_count, w); 2641d522f475Smrg} 2642d522f475Smrg 2643d522f475Smrgvoid 2644d522f475SmrgHandleBellIsUrgent(Widget w, 2645894e0ac8Smrg XEvent *event GCC_UNUSED, 2646894e0ac8Smrg String *params, 2647d522f475Smrg Cardinal *param_count) 2648d522f475Smrg{ 264920d2c4d2Smrg HANDLE_VT_TOGGLE(bellIsUrgent); 2650d522f475Smrg} 2651d522f475Smrg 2652d522f475Smrgvoid 2653d522f475SmrgHandleMarginBell(Widget w, 2654894e0ac8Smrg XEvent *event GCC_UNUSED, 2655894e0ac8Smrg String *params, 2656d522f475Smrg Cardinal *param_count) 2657d522f475Smrg{ 265820d2c4d2Smrg HANDLE_VT_TOGGLE(marginbell); 2659d522f475Smrg} 2660d522f475Smrg 2661d522f475Smrg#if OPT_BLINK_CURS 2662d522f475Smrgvoid 2663d522f475SmrgHandleCursorBlink(Widget w, 2664894e0ac8Smrg XEvent *event GCC_UNUSED, 2665894e0ac8Smrg String *params, 2666d522f475Smrg Cardinal *param_count) 2667d522f475Smrg{ 266820d2c4d2Smrg handle_vt_toggle(do_cursorblink, TScreenOf(term)->cursor_blink, 2669d522f475Smrg params, *param_count, w); 2670d522f475Smrg} 2671d522f475Smrg#endif 2672d522f475Smrg 2673d522f475Smrgvoid 2674d522f475SmrgHandleAltScreen(Widget w, 2675894e0ac8Smrg XEvent *event GCC_UNUSED, 2676894e0ac8Smrg String *params, 2677d522f475Smrg Cardinal *param_count) 2678d522f475Smrg{ 2679d522f475Smrg /* eventually want to see if sensitive or not */ 268020d2c4d2Smrg handle_vt_toggle(do_altscreen, TScreenOf(term)->whichBuf, 2681d522f475Smrg params, *param_count, w); 2682d522f475Smrg} 2683d522f475Smrg 2684d522f475Smrgvoid 2685d522f475SmrgHandleTiteInhibit(Widget w, 2686894e0ac8Smrg XEvent *event GCC_UNUSED, 2687894e0ac8Smrg String *params, 2688d522f475Smrg Cardinal *param_count) 2689d522f475Smrg{ 2690d522f475Smrg /* eventually want to see if sensitive or not */ 2691d522f475Smrg handle_vt_toggle(do_titeInhibit, !(term->misc.titeInhibit), 2692d522f475Smrg params, *param_count, w); 2693d522f475Smrg} 2694d522f475Smrg 2695d522f475Smrg/* ARGSUSED */ 2696d522f475Smrgvoid 2697d522f475SmrgHandleSoftReset(Widget w, 2698894e0ac8Smrg XEvent *event GCC_UNUSED, 2699894e0ac8Smrg String *params GCC_UNUSED, 2700d522f475Smrg Cardinal *param_count GCC_UNUSED) 2701d522f475Smrg{ 2702d522f475Smrg do_softreset(w, (XtPointer) 0, (XtPointer) 0); 2703d522f475Smrg} 2704d522f475Smrg 2705d522f475Smrg/* ARGSUSED */ 2706d522f475Smrgvoid 2707d522f475SmrgHandleHardReset(Widget w, 2708894e0ac8Smrg XEvent *event GCC_UNUSED, 2709894e0ac8Smrg String *params GCC_UNUSED, 2710d522f475Smrg Cardinal *param_count GCC_UNUSED) 2711d522f475Smrg{ 2712d522f475Smrg do_hardreset(w, (XtPointer) 0, (XtPointer) 0); 2713d522f475Smrg} 2714d522f475Smrg 2715d522f475Smrg/* ARGSUSED */ 2716d522f475Smrgvoid 2717d522f475SmrgHandleClearSavedLines(Widget w, 2718894e0ac8Smrg XEvent *event GCC_UNUSED, 2719894e0ac8Smrg String *params GCC_UNUSED, 2720d522f475Smrg Cardinal *param_count GCC_UNUSED) 2721d522f475Smrg{ 2722d522f475Smrg do_clearsavedlines(w, (XtPointer) 0, (XtPointer) 0); 2723d522f475Smrg} 2724d522f475Smrg 2725e39b573cSmrgvoid 2726e39b573cSmrgHandleAllowBoldFonts(Widget w, 2727894e0ac8Smrg XEvent *event GCC_UNUSED, 2728894e0ac8Smrg String *params, 2729e39b573cSmrg Cardinal *param_count) 2730e39b573cSmrg{ 2731e39b573cSmrg HANDLE_VT_TOGGLE(allowBoldFonts); 2732e39b573cSmrg} 2733e39b573cSmrg 273401037d57Smrg#if OPT_LOAD_VTFONTS 273501037d57Smrgvoid 273601037d57Smrgupdate_font_escape(void) 273701037d57Smrg{ 273801037d57Smrg TScreen *screen = TScreenOf(term); 273901037d57Smrg 274001037d57Smrg SetItemSensitivity(fontMenuEntries[fontMenu_fontescape].widget, 274101037d57Smrg ((screen->allowFontOps && 274201037d57Smrg screen->EscapeFontName()) 274301037d57Smrg ? True : False)); 274401037d57Smrg} 274501037d57Smrg#endif 274601037d57Smrg 2747d522f475Smrg#if OPT_DEC_CHRSET 2748d522f475Smrgvoid 2749d522f475SmrgHandleFontDoublesize(Widget w, 2750894e0ac8Smrg XEvent *event GCC_UNUSED, 2751894e0ac8Smrg String *params, 2752d522f475Smrg Cardinal *param_count) 2753d522f475Smrg{ 275420d2c4d2Smrg HANDLE_VT_TOGGLE(font_doublesize); 2755d522f475Smrg} 2756d522f475Smrg#endif 2757d522f475Smrg 2758d522f475Smrg#if OPT_BOX_CHARS 2759d522f475Smrgvoid 2760d522f475SmrgHandleFontBoxChars(Widget w, 2761894e0ac8Smrg XEvent *event GCC_UNUSED, 2762894e0ac8Smrg String *params, 2763d522f475Smrg Cardinal *param_count) 2764d522f475Smrg{ 276520d2c4d2Smrg handle_vt_toggle(do_font_boxchars, TScreenOf(term)->force_box_chars, 276620d2c4d2Smrg params, *param_count, w); 276720d2c4d2Smrg} 276820d2c4d2Smrg 276920d2c4d2Smrgvoid 277020d2c4d2SmrgHandleFontPacked(Widget w, 2771894e0ac8Smrg XEvent *event GCC_UNUSED, 2772894e0ac8Smrg String *params, 277320d2c4d2Smrg Cardinal *param_count) 277420d2c4d2Smrg{ 277520d2c4d2Smrg handle_vt_toggle(do_font_packed, TScreenOf(term)->force_packed, 2776d522f475Smrg params, *param_count, w); 2777d522f475Smrg} 2778d522f475Smrg#endif 2779d522f475Smrg 2780d522f475Smrg#if OPT_DEC_SOFTFONT 2781d522f475Smrgvoid 2782d522f475SmrgHandleFontLoading(Widget w, 2783894e0ac8Smrg XEvent *event GCC_UNUSED, 2784894e0ac8Smrg String *params, 2785d522f475Smrg Cardinal *param_count) 2786d522f475Smrg{ 2787d522f475Smrg handle_vt_toggle(do_font_loadable, term->misc.font_loadable, 2788d522f475Smrg params, *param_count, w); 2789d522f475Smrg} 2790d522f475Smrg#endif 2791d522f475Smrg 2792d522f475Smrg#if OPT_RENDERFONT 27930bd37d32Smrgstatic void 27940bd37d32Smrgupdate_fontmenu(XtermWidget xw) 27950bd37d32Smrg{ 27960bd37d32Smrg TScreen *screen = TScreenOf(xw); 27970bd37d32Smrg int n; 27980bd37d32Smrg 27990bd37d32Smrg for (n = 0; n <= fontMenu_lastBuiltin; ++n) { 28000bd37d32Smrg Boolean active = (Boolean) (xw->work.render_font || 28010bd37d32Smrg (screen->menu_font_sizes[n] >= 0)); 28020bd37d32Smrg SetItemSensitivity(fontMenuEntries[n].widget, active); 28030bd37d32Smrg } 28040bd37d32Smrg} 28050bd37d32Smrg 2806d522f475Smrgvoid 2807d522f475SmrgHandleRenderFont(Widget w, 2808894e0ac8Smrg XEvent *event GCC_UNUSED, 2809894e0ac8Smrg String *params, 2810d522f475Smrg Cardinal *param_count) 2811d522f475Smrg{ 281220d2c4d2Smrg XtermWidget xw = (XtermWidget) term; 281320d2c4d2Smrg 281420d2c4d2Smrg DefaultRenderFont(xw); 281520d2c4d2Smrg 28160bd37d32Smrg handle_vt_toggle(do_font_renderfont, xw->work.render_font, 2817d522f475Smrg params, *param_count, w); 28180bd37d32Smrg 28190bd37d32Smrg update_fontmenu(xw); 2820d522f475Smrg} 2821d522f475Smrg#endif 2822d522f475Smrg 2823d522f475Smrg#if OPT_WIDE_CHARS 2824d522f475Smrgvoid 2825d522f475SmrgHandleUTF8Mode(Widget w, 2826894e0ac8Smrg XEvent *event GCC_UNUSED, 2827894e0ac8Smrg String *params, 2828d522f475Smrg Cardinal *param_count) 2829d522f475Smrg{ 283020d2c4d2Smrg handle_vt_toggle(do_font_utf8_mode, TScreenOf(term)->utf8_mode, 2831d522f475Smrg params, *param_count, w); 2832d522f475Smrg} 2833d522f475Smrg 2834e39b573cSmrgvoid 2835e39b573cSmrgHandleUTF8Fonts(Widget w, 2836894e0ac8Smrg XEvent *event GCC_UNUSED, 2837894e0ac8Smrg String *params, 2838e39b573cSmrg Cardinal *param_count) 2839e39b573cSmrg{ 2840e39b573cSmrg handle_vt_toggle(do_font_utf8_fonts, TScreenOf(term)->utf8_fonts, 2841e39b573cSmrg params, *param_count, w); 2842e39b573cSmrg} 2843e39b573cSmrg 2844d522f475Smrgvoid 2845d522f475SmrgHandleUTF8Title(Widget w, 2846894e0ac8Smrg XEvent *event GCC_UNUSED, 2847894e0ac8Smrg String *params, 2848d522f475Smrg Cardinal *param_count) 2849d522f475Smrg{ 285020d2c4d2Smrg handle_vt_toggle(do_font_utf8_title, TScreenOf(term)->utf8_title, 2851d522f475Smrg params, *param_count, w); 2852d522f475Smrg} 2853d522f475Smrg#endif 2854d522f475Smrg 28552e4f8982Smrg#if OPT_SCREEN_DUMPS 28562e4f8982Smrgvoid 28572e4f8982SmrgHandleDumpHtml(Widget w GCC_UNUSED, 28582e4f8982Smrg XEvent *event GCC_UNUSED, 28592e4f8982Smrg String *params GCC_UNUSED, 28602e4f8982Smrg Cardinal *param_count GCC_UNUSED) 28612e4f8982Smrg{ 28622e4f8982Smrg xtermDumpHtml(term); 28632e4f8982Smrg} 28642e4f8982Smrg 28652e4f8982Smrgvoid 28662e4f8982SmrgHandleDumpSvg(Widget w GCC_UNUSED, 28672e4f8982Smrg XEvent *event GCC_UNUSED, 28682e4f8982Smrg String *params GCC_UNUSED, 28692e4f8982Smrg Cardinal *param_count GCC_UNUSED) 28702e4f8982Smrg{ 28712e4f8982Smrg xtermDumpSvg(term); 28722e4f8982Smrg} 28732e4f8982Smrg#endif 28742e4f8982Smrg 2875d522f475Smrg#if OPT_TEK4014 2876d522f475Smrgvoid 2877d522f475SmrgHandleSetTerminalType(Widget w, 2878894e0ac8Smrg XEvent *event GCC_UNUSED, 2879894e0ac8Smrg String *params, 2880d522f475Smrg Cardinal *param_count) 2881d522f475Smrg{ 288220d2c4d2Smrg XtermWidget xw = term; 288320d2c4d2Smrg 2884d522f475Smrg if (*param_count == 1) { 2885d522f475Smrg switch (params[0][0]) { 2886d522f475Smrg case 'v': 2887d522f475Smrg case 'V': 288820d2c4d2Smrg if (TEK4014_ACTIVE(xw)) 2889d522f475Smrg do_vtmode(w, (XtPointer) 0, (XtPointer) 0); 2890d522f475Smrg break; 2891d522f475Smrg case 't': 2892d522f475Smrg case 'T': 289320d2c4d2Smrg if (!TEK4014_ACTIVE(xw)) 2894d522f475Smrg do_tekmode(w, (XtPointer) 0, (XtPointer) 0); 2895d522f475Smrg break; 2896d522f475Smrg default: 289720d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2898d522f475Smrg } 2899d522f475Smrg } else { 290020d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2901d522f475Smrg } 2902d522f475Smrg} 2903d522f475Smrg 2904d522f475Smrgvoid 2905d522f475SmrgHandleVisibility(Widget w, 2906894e0ac8Smrg XEvent *event GCC_UNUSED, 2907894e0ac8Smrg String *params, 2908d522f475Smrg Cardinal *param_count) 2909d522f475Smrg{ 291020d2c4d2Smrg XtermWidget xw = term; 291120d2c4d2Smrg 2912d522f475Smrg if (*param_count == 2) { 2913d522f475Smrg switch (params[0][0]) { 2914d522f475Smrg case 'v': 2915d522f475Smrg case 'V': 291620d2c4d2Smrg handle_tek_toggle(do_vtonoff, (int) TScreenOf(xw)->Vshow, 2917d522f475Smrg params + 1, (*param_count) - 1, w); 2918d522f475Smrg break; 2919d522f475Smrg case 't': 2920d522f475Smrg case 'T': 292120d2c4d2Smrg handle_tek_toggle(do_tekonoff, (int) TEK4014_SHOWN(xw), 2922d522f475Smrg params + 1, (*param_count) - 1, w); 2923d522f475Smrg break; 2924d522f475Smrg default: 292520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2926d522f475Smrg } 2927d522f475Smrg } else { 292820d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2929d522f475Smrg } 2930d522f475Smrg} 2931d522f475Smrg 2932d522f475Smrg/* ARGSUSED */ 2933d522f475Smrgvoid 2934d522f475SmrgHandleSetTekText(Widget w, 2935894e0ac8Smrg XEvent *event GCC_UNUSED, 2936894e0ac8Smrg String *params, 2937d522f475Smrg Cardinal *param_count) 2938d522f475Smrg{ 293920d2c4d2Smrg XtermWidget xw = term; 2940d522f475Smrg void (*proc) PROTO_XT_CALLBACK_ARGS = 0; 2941d522f475Smrg 2942d522f475Smrg switch (*param_count) { 2943d522f475Smrg case 0: 2944d522f475Smrg proc = do_tektextlarge; 2945d522f475Smrg break; 2946d522f475Smrg case 1: 2947d522f475Smrg switch (TekGetFontSize(params[0])) { 2948d522f475Smrg case TEK_FONT_LARGE: 2949d522f475Smrg proc = do_tektextlarge; 2950d522f475Smrg break; 2951d522f475Smrg case TEK_FONT_2: 2952d522f475Smrg proc = do_tektext2; 2953d522f475Smrg break; 2954d522f475Smrg case TEK_FONT_3: 2955d522f475Smrg proc = do_tektext3; 2956d522f475Smrg break; 2957d522f475Smrg case TEK_FONT_SMALL: 2958d522f475Smrg proc = do_tektextsmall; 2959d522f475Smrg break; 2960d522f475Smrg } 2961d522f475Smrg break; 2962d522f475Smrg } 2963d522f475Smrg if (proc) 2964d522f475Smrg (*proc) (w, (XtPointer) 0, (XtPointer) 0); 2965d522f475Smrg else 296620d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 2967d522f475Smrg} 2968d522f475Smrg 2969d522f475Smrg/* ARGSUSED */ 2970d522f475Smrgvoid 2971d522f475SmrgHandleTekPage(Widget w, 2972894e0ac8Smrg XEvent *event GCC_UNUSED, 2973894e0ac8Smrg String *params GCC_UNUSED, 2974d522f475Smrg Cardinal *param_count GCC_UNUSED) 2975d522f475Smrg{ 2976d522f475Smrg do_tekpage(w, (XtPointer) 0, (XtPointer) 0); 2977d522f475Smrg} 2978d522f475Smrg 2979d522f475Smrg/* ARGSUSED */ 2980d522f475Smrgvoid 2981d522f475SmrgHandleTekReset(Widget w, 2982894e0ac8Smrg XEvent *event GCC_UNUSED, 2983894e0ac8Smrg String *params GCC_UNUSED, 2984d522f475Smrg Cardinal *param_count GCC_UNUSED) 2985d522f475Smrg{ 2986d522f475Smrg do_tekreset(w, (XtPointer) 0, (XtPointer) 0); 2987d522f475Smrg} 2988d522f475Smrg 2989d522f475Smrg/* ARGSUSED */ 2990d522f475Smrgvoid 2991d522f475SmrgHandleTekCopy(Widget w, 2992894e0ac8Smrg XEvent *event GCC_UNUSED, 2993894e0ac8Smrg String *params GCC_UNUSED, 2994d522f475Smrg Cardinal *param_count GCC_UNUSED) 2995d522f475Smrg{ 2996d522f475Smrg do_tekcopy(w, (XtPointer) 0, (XtPointer) 0); 2997d522f475Smrg} 2998d522f475Smrg#endif /* OPT_TEK4014 */ 2999d522f475Smrg 3000d522f475Smrg#if OPT_TOOLBAR 3001d522f475Smrg/* 3002d522f475Smrg * The normal style of xterm popup menu delays initialization until the menu is 3003d522f475Smrg * first requested. When using a toolbar, we can use the same initialization, 3004d522f475Smrg * though on the first popup there will be a little geometry layout jitter, 3005d522f475Smrg * since the menu is already managed when this callback is invoked. 3006d522f475Smrg */ 3007d522f475Smrgstatic void 3008d522f475SmrgInitPopup(Widget gw, 3009d522f475Smrg XtPointer closure, 3010d522f475Smrg XtPointer data GCC_UNUSED) 3011d522f475Smrg{ 3012d522f475Smrg String params[2]; 3013d522f475Smrg Cardinal count = 1; 3014d522f475Smrg 3015d522f475Smrg params[0] = (char *) closure; 3016d522f475Smrg params[1] = 0; 3017d522f475Smrg TRACE(("InitPopup(%s)\n", params[0])); 3018d522f475Smrg 3019d522f475Smrg domenu(gw, (XEvent *) 0, params, &count); 3020d522f475Smrg 3021894e0ac8Smrg XtRemoveCallback(gw, XtNpopupCallback, InitPopup, closure); 3022d522f475Smrg} 3023d522f475Smrg 3024d522f475Smrgstatic Dimension 3025d522f475SmrgSetupShell(Widget *menus, MenuList * shell, int n, int m) 3026d522f475Smrg{ 3027d522f475Smrg char temp[80]; 3028d522f475Smrg char *external_name = 0; 3029d522f475Smrg Dimension button_height; 3030d522f475Smrg Dimension button_border; 3031f2e35a3aSmrg char *saveLocale = xtermSetLocale(LC_CTYPE, resource.menuLocale); 3032d522f475Smrg 3033d522f475Smrg shell[n].w = XtVaCreatePopupShell(menu_names[n].internal_name, 3034d522f475Smrg simpleMenuWidgetClass, 3035d522f475Smrg *menus, 3036d522f475Smrg XtNgeometry, NULL, 3037d522f475Smrg (XtPointer) 0); 3038ae137402Smrg TRACE(("created popupShel widget %p, window %#lx\n", 3039ae137402Smrg (void *) shell[n].w, XtWindow(shell[n].w))); 3040d522f475Smrg 3041d522f475Smrg XtAddCallback(shell[n].w, XtNpopupCallback, InitPopup, menu_names[n].internal_name); 3042d522f475Smrg XtVaGetValues(shell[n].w, 3043d522f475Smrg XtNlabel, &external_name, 3044d522f475Smrg (XtPointer) 0); 3045d522f475Smrg 3046d522f475Smrg TRACE(("...SetupShell(%s) -> %s -> %#lx\n", 3047d522f475Smrg menu_names[n].internal_name, 3048d522f475Smrg external_name, 3049d522f475Smrg (long) shell[n].w)); 3050d522f475Smrg 3051d522f475Smrg sprintf(temp, "%sButton", menu_names[n].internal_name); 3052d522f475Smrg shell[n].b = XtVaCreateManagedWidget(temp, 3053d522f475Smrg menuButtonWidgetClass, 3054d522f475Smrg *menus, 3055d522f475Smrg XtNfromHoriz, ((m >= 0) 3056d522f475Smrg ? shell[m].b 3057d522f475Smrg : 0), 3058d522f475Smrg XtNmenuName, menu_names[n].internal_name, 3059d522f475Smrg XtNlabel, external_name, 3060d522f475Smrg (XtPointer) 0); 3061ae137402Smrg TRACE(("created menuButton[%d] widget %p, window %#lx\n", 3062ae137402Smrg n, (void *) shell[n].b, XtWindow(shell[n].b))); 3063d522f475Smrg XtVaGetValues(shell[n].b, 3064d522f475Smrg XtNheight, &button_height, 3065d522f475Smrg XtNborderWidth, &button_border, 3066d522f475Smrg (XtPointer) 0); 3067d522f475Smrg 3068f2e35a3aSmrg xtermResetLocale(LC_CTYPE, saveLocale); 3069956cc18dSsnj return (Dimension) (button_height + (button_border * 2)); 3070d522f475Smrg} 3071d522f475Smrg#endif /* OPT_TOOLBAR */ 3072d522f475Smrg 3073d522f475Smrgvoid 3074894e0ac8SmrgSetupMenus(Widget shell, Widget *forms, Widget *menus, Dimension *menu_high) 3075d522f475Smrg{ 3076d522f475Smrg#if OPT_TOOLBAR 3077d522f475Smrg Dimension button_height = 0; 3078d522f475Smrg Dimension toolbar_hSpace; 3079d522f475Smrg Arg args[10]; 3080d522f475Smrg#endif 3081d522f475Smrg 3082d522f475Smrg TRACE(("SetupMenus(%s)\n", shell == toplevel ? "vt100" : "tek4014")); 3083d522f475Smrg 3084d522f475Smrg *menu_high = 0; 3085d522f475Smrg 3086d522f475Smrg if (shell == toplevel) { 3087d522f475Smrg XawSimpleMenuAddGlobalActions(app_con); 3088d522f475Smrg XtRegisterGrabAction(HandlePopupMenu, True, 30890bd37d32Smrg (unsigned) (ButtonPressMask | ButtonReleaseMask), 3090d522f475Smrg GrabModeAsync, GrabModeAsync); 3091d522f475Smrg } 3092d522f475Smrg#if OPT_TOOLBAR 3093d522f475Smrg *forms = XtVaCreateManagedWidget("form", 3094d522f475Smrg formWidgetClass, shell, 3095d522f475Smrg (XtPointer) 0); 3096ae137402Smrg TRACE(("created form widget %p, window %#lx\n", 3097ae137402Smrg (void *) *forms, XtWindow(*forms))); 3098d522f475Smrg xtermAddInput(*forms); 3099d522f475Smrg 3100d522f475Smrg /* 3101d522f475Smrg * Set a nominal value for the preferred pane size, which lets the 3102d522f475Smrg * buttons determine the actual height of the menu bar. We don't show 3103d522f475Smrg * the grip, because it's too easy to make the toolbar look bad that 3104d522f475Smrg * way. 3105d522f475Smrg */ 3106d522f475Smrg XtSetArg(args[0], XtNorientation, XtorientHorizontal); 3107d522f475Smrg XtSetArg(args[1], XtNtop, XawChainTop); 3108d522f475Smrg XtSetArg(args[2], XtNbottom, XawChainTop); 3109d522f475Smrg XtSetArg(args[3], XtNleft, XawChainLeft); 3110d522f475Smrg XtSetArg(args[4], XtNright, XawChainLeft); 3111d522f475Smrg 3112d522f475Smrg if (resource.toolBar) { 3113d522f475Smrg *menus = XtCreateManagedWidget("menubar", boxWidgetClass, *forms, 3114d522f475Smrg args, 5); 3115d522f475Smrg } else { 3116d522f475Smrg *menus = XtCreateWidget("menubar", boxWidgetClass, *forms, args, 5); 3117d522f475Smrg } 3118ae137402Smrg TRACE(("created menubar widget %p, window %#lx\n", 3119ae137402Smrg (void *) *menus, XtWindow(*menus))); 3120d522f475Smrg 3121d522f475Smrg /* 3122d522f475Smrg * The toolbar widget's height is not necessarily known yet. If the 3123d522f475Smrg * toolbar is not created as a managed widget, we can still make a good 3124d522f475Smrg * guess about its height by collecting the widget's other resource values. 3125d522f475Smrg */ 3126d522f475Smrg XtVaGetValues(*menus, 3127d522f475Smrg XtNhSpace, &toolbar_hSpace, 3128d522f475Smrg (XtPointer) 0); 3129d522f475Smrg 3130d522f475Smrg if (shell == toplevel) { /* vt100 */ 3131d522f475Smrg int j; 3132d522f475Smrg for (j = mainMenu; j <= fontMenu; j++) { 3133d522f475Smrg button_height = SetupShell(menus, vt_shell, j, j - 1); 3134d522f475Smrg } 3135d522f475Smrg } 3136d522f475Smrg#if OPT_TEK4014 3137d522f475Smrg else { /* tek4014 */ 313820d2c4d2Smrg (void) SetupShell(menus, tek_shell, mainMenu, -1); 3139d522f475Smrg button_height = SetupShell(menus, tek_shell, tekMenu, mainMenu); 3140d522f475Smrg } 3141d522f475Smrg#endif 3142d522f475Smrg 3143d522f475Smrg /* 3144d522f475Smrg * Tell the main program how high the toolbar is, to help with the initial 3145d522f475Smrg * layout. 3146d522f475Smrg */ 3147956cc18dSsnj *menu_high = (Dimension) (button_height + 2 * (toolbar_hSpace)); 31482eaa94a1Schristos TRACE(("...menuHeight:%d = (%d + 2 * %d)\n", 31492eaa94a1Schristos *menu_high, button_height, toolbar_hSpace)); 3150d522f475Smrg 3151d522f475Smrg#else /* !OPT_TOOLBAR */ 3152d522f475Smrg *forms = shell; 3153d522f475Smrg *menus = shell; 3154d522f475Smrg#endif 3155d522f475Smrg 3156d522f475Smrg TRACE(("...shell=%#lx\n", (long) shell)); 3157d522f475Smrg TRACE(("...forms=%#lx\n", (long) *forms)); 3158d522f475Smrg TRACE(("...menus=%#lx\n", (long) *menus)); 3159d522f475Smrg} 3160d522f475Smrg 3161d522f475Smrgvoid 3162d522f475SmrgrepairSizeHints(void) 3163d522f475Smrg{ 3164a1f3da82Smrg XtermWidget xw = term; 3165a1f3da82Smrg TScreen *screen = TScreenOf(xw); 3166d522f475Smrg 3167a1f3da82Smrg if (XtIsRealized((Widget) xw)) { 3168a1f3da82Smrg getXtermSizeHints(xw); 3169a1f3da82Smrg xtermSizeHints(xw, ScrollbarWidth(screen)); 3170d522f475Smrg 3171a1f3da82Smrg XSetWMNormalHints(screen->display, VShellWindow(xw), &xw->hints); 3172d522f475Smrg } 3173d522f475Smrg} 3174d522f475Smrg 3175d522f475Smrg#if OPT_TOOLBAR 3176d522f475Smrg#define INIT_POPUP(s, n) InitPopup(s[n].w, menu_names[n].internal_name, 0) 3177d522f475Smrg 3178d522f475Smrgstatic Bool 3179d522f475SmrgInitWidgetMenu(Widget shell) 3180d522f475Smrg{ 3181d522f475Smrg Bool result = False; 3182d522f475Smrg 318320d2c4d2Smrg TRACE(("InitWidgetMenu(%p)\n", (void *) shell)); 3184d522f475Smrg if (term != 0) { 3185d522f475Smrg if (shell == toplevel) { /* vt100 */ 3186d522f475Smrg if (!term->init_menu) { 3187d522f475Smrg INIT_POPUP(vt_shell, mainMenu); 3188d522f475Smrg INIT_POPUP(vt_shell, vtMenu); 3189d522f475Smrg INIT_POPUP(vt_shell, fontMenu); 3190d522f475Smrg term->init_menu = True; 3191d522f475Smrg TRACE(("...InitWidgetMenu(vt)\n")); 3192d522f475Smrg } 3193d522f475Smrg result = term->init_menu; 3194d522f475Smrg } 3195d522f475Smrg#if OPT_TEK4014 3196d522f475Smrg else if (tekWidget) { /* tek4014 */ 3197d522f475Smrg if (!tekWidget->init_menu) { 3198d522f475Smrg INIT_POPUP(tek_shell, mainMenu); 3199d522f475Smrg INIT_POPUP(tek_shell, tekMenu); 3200d522f475Smrg tekWidget->init_menu = True; 3201d522f475Smrg TRACE(("...InitWidgetMenu(tek)\n")); 3202d522f475Smrg } 3203d522f475Smrg result = tekWidget->init_menu; 3204d522f475Smrg } 3205d522f475Smrg#endif 3206d522f475Smrg } 3207d522f475Smrg TRACE(("...InitWidgetMenu ->%d\n", result)); 3208d522f475Smrg return result; 3209d522f475Smrg} 3210d522f475Smrg 3211d522f475Smrgstatic TbInfo * 3212d522f475Smrgtoolbar_info(Widget w) 3213d522f475Smrg{ 3214d522f475Smrg TRACE(("...getting toolbar_info\n")); 3215d522f475Smrg#if OPT_TEK4014 3216d522f475Smrg if (w != (Widget) term) 3217d522f475Smrg return &(tekWidget->tek.tb_info); 3218d522f475Smrg#else 3219d522f475Smrg (void) w; 3220d522f475Smrg#endif 322120d2c4d2Smrg return &(WhichVWin(TScreenOf(term))->tb_info); 3222d522f475Smrg} 3223d522f475Smrg 3224d522f475Smrgstatic void 3225d522f475Smrghide_toolbar(Widget w) 3226d522f475Smrg{ 3227d522f475Smrg if (w != 0) { 3228d522f475Smrg TbInfo *info = toolbar_info(w); 3229d522f475Smrg 3230d522f475Smrg TRACE(("hiding toolbar\n")); 3231d522f475Smrg XtVaSetValues(w, 3232d522f475Smrg XtNfromVert, (Widget) 0, 3233d522f475Smrg (XtPointer) 0); 3234d522f475Smrg 3235d522f475Smrg if (info->menu_bar != 0) { 3236d522f475Smrg repairSizeHints(); 3237d522f475Smrg XtUnmanageChild(info->menu_bar); 3238d522f475Smrg if (XtIsRealized(info->menu_bar)) { 3239d522f475Smrg XtUnmapWidget(info->menu_bar); 3240d522f475Smrg } 3241d522f475Smrg } 3242d522f475Smrg TRACE(("...hiding toolbar (done)\n")); 3243d522f475Smrg } 3244d522f475Smrg} 3245d522f475Smrg 3246d522f475Smrgstatic void 3247d522f475Smrgshow_toolbar(Widget w) 3248d522f475Smrg{ 3249d522f475Smrg if (w != 0) { 3250d522f475Smrg TbInfo *info = toolbar_info(w); 3251d522f475Smrg 3252d522f475Smrg TRACE(("showing toolbar\n")); 3253d522f475Smrg if (info->menu_bar != 0) { 3254d522f475Smrg XtVaSetValues(w, 3255d522f475Smrg XtNfromVert, info->menu_bar, 3256d522f475Smrg (XtPointer) 0); 3257d522f475Smrg if (XtIsRealized(info->menu_bar)) 3258d522f475Smrg repairSizeHints(); 3259d522f475Smrg XtManageChild(info->menu_bar); 3260d522f475Smrg if (XtIsRealized(info->menu_bar)) { 3261d522f475Smrg XtMapWidget(info->menu_bar); 3262d522f475Smrg } 3263d522f475Smrg } 3264d522f475Smrg /* 3265d522f475Smrg * This is needed to make the terminal widget move down below the 3266d522f475Smrg * toolbar. 3267d522f475Smrg */ 3268d522f475Smrg XawFormDoLayout(XtParent(w), True); 3269d522f475Smrg TRACE(("...showing toolbar (done)\n")); 3270d522f475Smrg } 3271d522f475Smrg} 3272d522f475Smrg 3273d522f475Smrg/* 3274d522f475Smrg * Make the toolbar visible or invisible in the current window(s). 3275d522f475Smrg */ 3276d522f475Smrgvoid 3277d522f475SmrgShowToolbar(Bool enable) 3278d522f475Smrg{ 327920d2c4d2Smrg XtermWidget xw = term; 328020d2c4d2Smrg 3281d522f475Smrg TRACE(("ShowToolbar(%d)\n", enable)); 3282d522f475Smrg 328320d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 328420d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3285d522f475Smrg } else { 3286d522f475Smrg if (enable) { 3287d522f475Smrg if (InitWidgetMenu(toplevel)) 328820d2c4d2Smrg show_toolbar((Widget) xw); 3289d522f475Smrg#if OPT_TEK4014 3290d522f475Smrg if (InitWidgetMenu(tekshellwidget)) 3291d522f475Smrg show_toolbar((Widget) tekWidget); 3292d522f475Smrg#endif 3293d522f475Smrg } else { 329420d2c4d2Smrg hide_toolbar((Widget) xw); 3295d522f475Smrg#if OPT_TEK4014 3296d522f475Smrg hide_toolbar((Widget) tekWidget); 3297d522f475Smrg#endif 3298d522f475Smrg } 3299956cc18dSsnj resource.toolBar = (Boolean) enable; 3300d522f475Smrg update_toolbar(); 3301d522f475Smrg } 3302f2e35a3aSmrg#if OPT_TOOLBAR 3303f2e35a3aSmrg /* 3304f2e35a3aSmrg * Layout for the toolbar confuses the Shell widget. Remind it that we 3305f2e35a3aSmrg * would like to be iconified if the corresponding resource was set. 3306f2e35a3aSmrg */ 3307f2e35a3aSmrg { 3308f2e35a3aSmrg static Bool first = True; 3309f2e35a3aSmrg if (first && XtIsRealized(toplevel)) { 3310f2e35a3aSmrg Boolean iconic = 0; 3311f2e35a3aSmrg 3312f2e35a3aSmrg XtVaGetValues(toplevel, 3313f2e35a3aSmrg XtNiconic, &iconic, 3314f2e35a3aSmrg (XtPointer) 0); 3315f2e35a3aSmrg 3316f2e35a3aSmrg if (iconic) { 3317f2e35a3aSmrg TRACE(("...please iconify window %#lx\n", XtWindow(toplevel))); 3318f2e35a3aSmrg xtermIconify(xw); 3319f2e35a3aSmrg } 3320f2e35a3aSmrg first = False; 3321f2e35a3aSmrg } 3322f2e35a3aSmrg } 3323f2e35a3aSmrg#endif 3324d522f475Smrg} 3325d522f475Smrg 3326d522f475Smrgvoid 3327d522f475SmrgHandleToolbar(Widget w, 3328894e0ac8Smrg XEvent *event GCC_UNUSED, 3329f2e35a3aSmrg String *params, 3330f2e35a3aSmrg Cardinal *param_count) 3331d522f475Smrg{ 333220d2c4d2Smrg XtermWidget xw = term; 333320d2c4d2Smrg 333420d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 333520d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3336d522f475Smrg } else { 3337d522f475Smrg handle_vt_toggle(do_toolbar, resource.toolBar, 3338d522f475Smrg params, *param_count, w); 3339d522f475Smrg } 3340d522f475Smrg} 3341d522f475Smrg 3342d522f475Smrg/* ARGSUSED */ 3343d522f475Smrgstatic void 3344d522f475Smrgdo_toolbar(Widget gw GCC_UNUSED, 3345d522f475Smrg XtPointer closure GCC_UNUSED, 3346d522f475Smrg XtPointer data GCC_UNUSED) 3347d522f475Smrg{ 334820d2c4d2Smrg XtermWidget xw = term; 334920d2c4d2Smrg 3350d522f475Smrg /* 3351d522f475Smrg * Toggle toolbars for both vt100 and tek windows, since they share the 3352d522f475Smrg * menu which contains the checkbox indicating whether the toolbar is 3353d522f475Smrg * active. 3354d522f475Smrg */ 335520d2c4d2Smrg if (IsIcon(TScreenOf(xw))) { 335620d2c4d2Smrg Bell(xw, XkbBI_MinorError, 0); 3357d522f475Smrg } else { 3358956cc18dSsnj ShowToolbar(ToggleFlag(resource.toolBar)); 3359d522f475Smrg } 3360d522f475Smrg} 3361d522f475Smrg 3362d522f475Smrgvoid 3363d522f475Smrgupdate_toolbar(void) 3364d522f475Smrg{ 3365d522f475Smrg UpdateCheckbox("update_toolbar", 3366d522f475Smrg mainMenuEntries, 3367d522f475Smrg mainMenu_toolbar, 3368d522f475Smrg resource.toolBar); 3369d522f475Smrg} 3370d522f475Smrg#endif /* OPT_TOOLBAR */ 3371d522f475Smrg 3372d522f475Smrgvoid 3373d522f475Smrgupdate_securekbd(void) 3374d522f475Smrg{ 3375d522f475Smrg UpdateCheckbox("update_securekbd", 3376d522f475Smrg mainMenuEntries, 3377d522f475Smrg mainMenu_securekbd, 337820d2c4d2Smrg TScreenOf(term)->grabbedKbd); 3379d522f475Smrg} 3380d522f475Smrg 3381d522f475Smrgvoid 3382d522f475Smrgupdate_allowsends(void) 3383d522f475Smrg{ 3384d522f475Smrg UpdateCheckbox("update_allowsends", 3385d522f475Smrg mainMenuEntries, 3386d522f475Smrg mainMenu_allowsends, 338720d2c4d2Smrg TScreenOf(term)->allowSendEvents); 3388d522f475Smrg} 3389d522f475Smrg 3390d522f475Smrg#ifdef ALLOWLOGGING 3391d522f475Smrgvoid 3392d522f475Smrgupdate_logging(void) 3393d522f475Smrg{ 3394d522f475Smrg UpdateCheckbox("update_logging", 3395d522f475Smrg mainMenuEntries, 3396d522f475Smrg mainMenu_logging, 339720d2c4d2Smrg TScreenOf(term)->logging); 3398d522f475Smrg} 3399d522f475Smrg#endif 3400d522f475Smrg 3401e39b573cSmrg#if OPT_PRINT_ON_EXIT 3402e39b573cSmrgvoid 3403e39b573cSmrgupdate_write_error(void) 3404e39b573cSmrg{ 3405e39b573cSmrg UpdateCheckbox("update_write_error", 3406e39b573cSmrg mainMenuEntries, 3407e39b573cSmrg mainMenu_write_error, 3408e39b573cSmrg TScreenOf(term)->write_error); 3409e39b573cSmrg} 3410e39b573cSmrg#endif 3411e39b573cSmrg 3412d522f475Smrgvoid 3413d522f475Smrgupdate_print_redir(void) 3414d522f475Smrg{ 3415d522f475Smrg UpdateCheckbox("update_print_redir", 3416d522f475Smrg mainMenuEntries, 3417d522f475Smrg mainMenu_print_redir, 3418e39b573cSmrg PrinterOf(TScreenOf(term)).printer_controlmode); 3419d522f475Smrg} 3420d522f475Smrg 3421d522f475Smrgvoid 3422d522f475Smrgupdate_8bit_control(void) 3423d522f475Smrg{ 3424d522f475Smrg UpdateCheckbox("update_8bit_control", 3425d522f475Smrg mainMenuEntries, 3426d522f475Smrg mainMenu_8bit_ctrl, 342720d2c4d2Smrg TScreenOf(term)->control_eight_bits); 3428d522f475Smrg} 3429d522f475Smrg 3430d522f475Smrgvoid 3431d522f475Smrgupdate_decbkm(void) 3432d522f475Smrg{ 3433d522f475Smrg UpdateCheckbox("update_decbkm", 3434d522f475Smrg mainMenuEntries, 3435d522f475Smrg mainMenu_backarrow, 3436d522f475Smrg (term->keyboard.flags & MODE_DECBKM) != 0); 3437d522f475Smrg} 3438d522f475Smrg 3439d522f475Smrg#if OPT_NUM_LOCK 3440d522f475Smrgvoid 3441d522f475Smrgupdate_num_lock(void) 3442d522f475Smrg{ 3443d522f475Smrg UpdateCheckbox("update_num_lock", 3444d522f475Smrg mainMenuEntries, 3445d522f475Smrg mainMenu_num_lock, 3446d522f475Smrg term->misc.real_NumLock); 3447d522f475Smrg} 3448d522f475Smrg 3449d522f475Smrgvoid 3450d522f475Smrgupdate_alt_esc(void) 3451d522f475Smrg{ 3452d522f475Smrg UpdateCheckbox("update_alt_esc", 3453d522f475Smrg mainMenuEntries, 3454d522f475Smrg mainMenu_alt_esc, 345520d2c4d2Smrg TScreenOf(term)->alt_sends_esc); 3456d522f475Smrg} 3457d522f475Smrg 3458d522f475Smrgvoid 3459d522f475Smrgupdate_meta_esc(void) 3460d522f475Smrg{ 3461d522f475Smrg UpdateCheckbox("update_meta_esc", 3462d522f475Smrg mainMenuEntries, 3463d522f475Smrg mainMenu_meta_esc, 346420d2c4d2Smrg TScreenOf(term)->meta_sends_esc); 3465d522f475Smrg} 3466d522f475Smrg#endif 3467d522f475Smrg 3468d522f475Smrg#if OPT_SUN_FUNC_KEYS 3469d522f475Smrgvoid 3470d522f475Smrgupdate_sun_fkeys(void) 3471d522f475Smrg{ 3472d522f475Smrg UpdateCheckbox("update_sun_fkeys", 3473d522f475Smrg mainMenuEntries, 3474d522f475Smrg mainMenu_sun_fkeys, 3475d522f475Smrg term->keyboard.type == keyboardIsSun); 3476d522f475Smrg} 3477d522f475Smrg#endif 3478d522f475Smrg 3479d522f475Smrg#if OPT_TCAP_FKEYS 3480d522f475Smrgvoid 3481d522f475Smrgupdate_tcap_fkeys(void) 3482d522f475Smrg{ 3483d522f475Smrg UpdateCheckbox("update_tcap_fkeys", 3484d522f475Smrg mainMenuEntries, 3485d522f475Smrg mainMenu_tcap_fkeys, 3486d522f475Smrg term->keyboard.type == keyboardIsTermcap); 3487d522f475Smrg} 3488d522f475Smrg#endif 3489d522f475Smrg 3490d522f475Smrgvoid 3491d522f475Smrgupdate_old_fkeys(void) 3492d522f475Smrg{ 3493d522f475Smrg UpdateCheckbox("update_old_fkeys", 3494d522f475Smrg mainMenuEntries, 3495d522f475Smrg mainMenu_old_fkeys, 3496d522f475Smrg term->keyboard.type == keyboardIsLegacy); 3497d522f475Smrg} 3498d522f475Smrg 3499d522f475Smrgvoid 3500d522f475Smrgupdate_delete_del(void) 3501d522f475Smrg{ 3502d522f475Smrg UpdateCheckbox("update_delete_del", 3503d522f475Smrg mainMenuEntries, 3504d522f475Smrg mainMenu_delete_del, 3505d522f475Smrg xtermDeleteIsDEL(term)); 3506d522f475Smrg} 3507d522f475Smrg 3508d522f475Smrg#if OPT_SUNPC_KBD 3509d522f475Smrgvoid 3510d522f475Smrgupdate_sun_kbd(void) 3511d522f475Smrg{ 3512d522f475Smrg UpdateCheckbox("update_sun_kbd", 3513d522f475Smrg mainMenuEntries, 3514d522f475Smrg mainMenu_sun_kbd, 3515d522f475Smrg term->keyboard.type == keyboardIsVT220); 3516d522f475Smrg} 3517d522f475Smrg#endif 3518d522f475Smrg 3519d522f475Smrg#if OPT_HP_FUNC_KEYS 3520d522f475Smrgvoid 3521d522f475Smrgupdate_hp_fkeys(void) 3522d522f475Smrg{ 3523d522f475Smrg UpdateCheckbox("update_hp_fkeys", 3524d522f475Smrg mainMenuEntries, 3525d522f475Smrg mainMenu_hp_fkeys, 3526d522f475Smrg term->keyboard.type == keyboardIsHP); 3527d522f475Smrg} 3528d522f475Smrg#endif 3529d522f475Smrg 3530d522f475Smrg#if OPT_SCO_FUNC_KEYS 3531d522f475Smrgvoid 3532d522f475Smrgupdate_sco_fkeys(void) 3533d522f475Smrg{ 3534d522f475Smrg UpdateCheckbox("update_sco_fkeys", 3535d522f475Smrg mainMenuEntries, 3536d522f475Smrg mainMenu_sco_fkeys, 3537d522f475Smrg term->keyboard.type == keyboardIsSCO); 3538d522f475Smrg} 3539d522f475Smrg#endif 3540d522f475Smrg 3541d522f475Smrgvoid 3542d522f475Smrgupdate_scrollbar(void) 3543d522f475Smrg{ 3544d522f475Smrg UpdateCheckbox("update_scrollbar", 3545d522f475Smrg vtMenuEntries, 3546d522f475Smrg vtMenu_scrollbar, 3547d522f475Smrg ScrollbarWidth(TScreenOf(term))); 3548d522f475Smrg} 3549d522f475Smrg 3550d522f475Smrgvoid 3551d522f475Smrgupdate_jumpscroll(void) 3552d522f475Smrg{ 3553d522f475Smrg UpdateCheckbox("update_jumpscroll", 3554d522f475Smrg vtMenuEntries, 3555d522f475Smrg vtMenu_jumpscroll, 355620d2c4d2Smrg TScreenOf(term)->jumpscroll); 3557d522f475Smrg} 3558d522f475Smrg 3559d522f475Smrgvoid 3560d522f475Smrgupdate_reversevideo(void) 3561d522f475Smrg{ 3562d522f475Smrg UpdateCheckbox("update_reversevideo", 3563d522f475Smrg vtMenuEntries, 3564d522f475Smrg vtMenu_reversevideo, 3565d522f475Smrg (term->misc.re_verse)); 3566d522f475Smrg} 3567d522f475Smrg 3568d522f475Smrgvoid 3569d522f475Smrgupdate_autowrap(void) 3570d522f475Smrg{ 3571f2e35a3aSmrg DisableIfVT52(vtMenuEntries, 3572f2e35a3aSmrg vtMenu_autowrap); 3573d522f475Smrg UpdateCheckbox("update_autowrap", 3574d522f475Smrg vtMenuEntries, 3575d522f475Smrg vtMenu_autowrap, 3576d522f475Smrg (term->flags & WRAPAROUND) != 0); 3577d522f475Smrg} 3578d522f475Smrg 3579d522f475Smrgvoid 3580d522f475Smrgupdate_reversewrap(void) 3581d522f475Smrg{ 3582f2e35a3aSmrg DisableIfVT52(vtMenuEntries, 3583f2e35a3aSmrg vtMenu_reversewrap); 3584d522f475Smrg UpdateCheckbox("update_reversewrap", 3585d522f475Smrg vtMenuEntries, 3586d522f475Smrg vtMenu_reversewrap, 3587d522f475Smrg (term->flags & REVERSEWRAP) != 0); 3588d522f475Smrg} 3589d522f475Smrg 3590d522f475Smrgvoid 3591d522f475Smrgupdate_autolinefeed(void) 3592d522f475Smrg{ 3593f2e35a3aSmrg DisableIfVT52(vtMenuEntries, 3594f2e35a3aSmrg vtMenu_autolinefeed); 3595d522f475Smrg UpdateCheckbox("update_autolinefeed", 3596d522f475Smrg vtMenuEntries, 3597d522f475Smrg vtMenu_autolinefeed, 3598d522f475Smrg (term->flags & LINEFEED) != 0); 3599d522f475Smrg} 3600d522f475Smrg 3601d522f475Smrgvoid 3602d522f475Smrgupdate_appcursor(void) 3603d522f475Smrg{ 3604f2e35a3aSmrg DisableIfVT52(vtMenuEntries, 3605f2e35a3aSmrg vtMenu_appcursor); 3606d522f475Smrg UpdateCheckbox("update_appcursor", 3607d522f475Smrg vtMenuEntries, 3608d522f475Smrg vtMenu_appcursor, 3609d522f475Smrg (term->keyboard.flags & MODE_DECCKM) != 0); 3610d522f475Smrg} 3611d522f475Smrg 3612d522f475Smrgvoid 3613d522f475Smrgupdate_appkeypad(void) 3614d522f475Smrg{ 3615d522f475Smrg UpdateCheckbox("update_appkeypad", 3616d522f475Smrg vtMenuEntries, 3617d522f475Smrg vtMenu_appkeypad, 3618d522f475Smrg (term->keyboard.flags & MODE_DECKPAM) != 0); 3619d522f475Smrg} 3620d522f475Smrg 3621d522f475Smrgvoid 3622d522f475Smrgupdate_scrollkey(void) 3623d522f475Smrg{ 3624d522f475Smrg UpdateCheckbox("update_scrollkey", 3625d522f475Smrg vtMenuEntries, 3626d522f475Smrg vtMenu_scrollkey, 362720d2c4d2Smrg TScreenOf(term)->scrollkey); 3628d522f475Smrg} 3629d522f475Smrg 3630d522f475Smrgvoid 3631d522f475Smrgupdate_scrollttyoutput(void) 3632d522f475Smrg{ 3633d522f475Smrg UpdateCheckbox("update_scrollttyoutput", 3634d522f475Smrg vtMenuEntries, 3635d522f475Smrg vtMenu_scrollttyoutput, 363620d2c4d2Smrg TScreenOf(term)->scrollttyoutput); 3637d522f475Smrg} 3638d522f475Smrg 3639d522f475Smrgvoid 3640d522f475Smrgupdate_keepSelection(void) 3641d522f475Smrg{ 3642d522f475Smrg UpdateCheckbox("update_keepSelection", 3643d522f475Smrg vtMenuEntries, 3644d522f475Smrg vtMenu_keepSelection, 364520d2c4d2Smrg TScreenOf(term)->keepSelection); 3646d522f475Smrg} 3647d522f475Smrg 3648d522f475Smrgvoid 3649d522f475Smrgupdate_selectToClipboard(void) 3650d522f475Smrg{ 3651d522f475Smrg UpdateCheckbox("update_selectToClipboard", 3652d522f475Smrg vtMenuEntries, 3653d522f475Smrg vtMenu_selectToClipboard, 365420d2c4d2Smrg TScreenOf(term)->selectToClipboard); 3655d522f475Smrg} 3656d522f475Smrg 3657d522f475Smrgvoid 3658d522f475Smrgupdate_allow132(void) 3659d522f475Smrg{ 3660f2e35a3aSmrg DisableIfVT52(vtMenuEntries, 3661f2e35a3aSmrg vtMenu_allow132); 3662d522f475Smrg UpdateCheckbox("update_allow132", 3663d522f475Smrg vtMenuEntries, 3664d522f475Smrg vtMenu_allow132, 366520d2c4d2Smrg TScreenOf(term)->c132); 3666d522f475Smrg} 3667d522f475Smrg 3668d522f475Smrgvoid 3669d522f475Smrgupdate_cursesemul(void) 3670d522f475Smrg{ 3671d522f475Smrg#if 0 /* 2006-2-12: no longer menu entry */ 3672d522f475Smrg UpdateMenuItem("update_cursesemul", vtMenuEntries, vtMenu_cursesemul, 367320d2c4d2Smrg TScreenOf(term)->curses); 3674d522f475Smrg#endif 3675d522f475Smrg} 3676d522f475Smrg 3677d522f475Smrgvoid 3678d522f475Smrgupdate_visualbell(void) 3679d522f475Smrg{ 3680d522f475Smrg UpdateCheckbox("update_visualbell", 3681d522f475Smrg vtMenuEntries, 3682d522f475Smrg vtMenu_visualbell, 368320d2c4d2Smrg TScreenOf(term)->visualbell); 3684d522f475Smrg} 3685d522f475Smrg 3686d522f475Smrgvoid 3687d522f475Smrgupdate_bellIsUrgent(void) 3688d522f475Smrg{ 3689d522f475Smrg UpdateCheckbox("update_bellIsUrgent", 3690d522f475Smrg vtMenuEntries, 3691d522f475Smrg vtMenu_bellIsUrgent, 369220d2c4d2Smrg TScreenOf(term)->bellIsUrgent); 3693d522f475Smrg} 3694d522f475Smrg 3695d522f475Smrgvoid 3696d522f475Smrgupdate_poponbell(void) 3697d522f475Smrg{ 3698d522f475Smrg UpdateCheckbox("update_poponbell", 3699d522f475Smrg vtMenuEntries, 3700d522f475Smrg vtMenu_poponbell, 370120d2c4d2Smrg TScreenOf(term)->poponbell); 3702d522f475Smrg} 3703d522f475Smrg 3704d522f475Smrg#ifndef update_marginbell /* 2007-3-7: no longer menu entry */ 3705d522f475Smrgvoid 3706d522f475Smrgupdate_marginbell(void) 3707d522f475Smrg{ 3708d522f475Smrg UpdateCheckbox("update_marginbell", 3709d522f475Smrg vtMenuEntries, 3710d522f475Smrg vtMenu_marginbell, 371120d2c4d2Smrg TScreenOf(term)->marginbell); 3712d522f475Smrg} 3713d522f475Smrg#endif 3714d522f475Smrg 3715d522f475Smrg#if OPT_BLINK_CURS 3716d522f475Smrgvoid 3717d522f475Smrgupdate_cursorblink(void) 3718d522f475Smrg{ 3719f2e35a3aSmrg BlinkOps check = TScreenOf(term)->cursor_blink; 3720f2e35a3aSmrg 3721f2e35a3aSmrg if (check == cbAlways || 3722f2e35a3aSmrg check == cbNever) { 3723f2e35a3aSmrg SetItemSensitivity(vtMenuEntries[vtMenu_cursorblink].widget, False); 3724f2e35a3aSmrg } 3725d522f475Smrg UpdateCheckbox("update_cursorblink", 3726d522f475Smrg vtMenuEntries, 3727d522f475Smrg vtMenu_cursorblink, 3728f2e35a3aSmrg (check == cbTrue || 3729f2e35a3aSmrg check == cbAlways)); 3730d522f475Smrg} 3731d522f475Smrg#endif 3732d522f475Smrg 3733d522f475Smrgvoid 3734d522f475Smrgupdate_altscreen(void) 3735d522f475Smrg{ 3736d522f475Smrg UpdateCheckbox("update_altscreen", 3737d522f475Smrg vtMenuEntries, 3738d522f475Smrg vtMenu_altscreen, 373920d2c4d2Smrg TScreenOf(term)->whichBuf); 3740d522f475Smrg} 3741d522f475Smrg 3742d522f475Smrgvoid 3743d522f475Smrgupdate_titeInhibit(void) 3744d522f475Smrg{ 3745d522f475Smrg UpdateCheckbox("update_titeInhibit", 3746d522f475Smrg vtMenuEntries, 3747d522f475Smrg vtMenu_titeInhibit, 3748d522f475Smrg !(term->misc.titeInhibit)); 3749d522f475Smrg} 3750d522f475Smrg 3751d522f475Smrg#ifndef NO_ACTIVE_ICON 3752d522f475Smrgvoid 3753d522f475Smrgupdate_activeicon(void) 3754d522f475Smrg{ 3755d522f475Smrg UpdateCheckbox("update_activeicon", 3756d522f475Smrg vtMenuEntries, 3757d522f475Smrg vtMenu_activeicon, 37580bd37d32Smrg term->work.active_icon); 3759d522f475Smrg} 3760d522f475Smrg#endif /* NO_ACTIVE_ICON */ 3761d522f475Smrg 3762e39b573cSmrgstatic void 3763e39b573cSmrgdo_allowBoldFonts(Widget w, 3764e39b573cSmrg XtPointer closure GCC_UNUSED, 3765e39b573cSmrg XtPointer data GCC_UNUSED) 3766e39b573cSmrg{ 3767e39b573cSmrg XtermWidget xw = getXtermWidget(w); 3768e39b573cSmrg if (xw != 0) { 3769e39b573cSmrg ToggleFlag(TScreenOf(xw)->allowBoldFonts); 3770e39b573cSmrg update_menu_allowBoldFonts(); 3771e39b573cSmrg Redraw(); 3772e39b573cSmrg } 3773e39b573cSmrg} 3774e39b573cSmrg 3775d522f475Smrg#if OPT_DEC_CHRSET 3776d522f475Smrgvoid 3777d522f475Smrgupdate_font_doublesize(void) 3778d522f475Smrg{ 3779d522f475Smrg UpdateCheckbox("update_font_doublesize", 3780d522f475Smrg fontMenuEntries, 3781d522f475Smrg fontMenu_font_doublesize, 378220d2c4d2Smrg TScreenOf(term)->font_doublesize); 3783d522f475Smrg} 3784d522f475Smrg#endif 3785d522f475Smrg 3786d522f475Smrg#if OPT_BOX_CHARS 3787d522f475Smrgvoid 3788d522f475Smrgupdate_font_boxchars(void) 3789d522f475Smrg{ 3790f2e35a3aSmrg SetItemSensitivity(fontMenuEntries[fontMenu_font_boxchars].widget, 3791f2e35a3aSmrg !TScreenOf(term)->broken_box_chars); 3792d522f475Smrg UpdateCheckbox("update_font_boxchars", 3793d522f475Smrg fontMenuEntries, 3794d522f475Smrg fontMenu_font_boxchars, 3795f2e35a3aSmrg TScreenOf(term)->force_box_chars || 3796f2e35a3aSmrg TScreenOf(term)->broken_box_chars); 379720d2c4d2Smrg} 379820d2c4d2Smrg 379920d2c4d2Smrgvoid 380020d2c4d2Smrgupdate_font_packed(void) 380120d2c4d2Smrg{ 380220d2c4d2Smrg UpdateCheckbox("update_font_packed", 380320d2c4d2Smrg fontMenuEntries, 380420d2c4d2Smrg fontMenu_font_packedfont, 380520d2c4d2Smrg TScreenOf(term)->force_packed); 3806d522f475Smrg} 3807d522f475Smrg#endif 3808d522f475Smrg 3809d522f475Smrg#if OPT_DEC_SOFTFONT 3810d522f475Smrgvoid 3811d522f475Smrgupdate_font_loadable(void) 3812d522f475Smrg{ 3813d522f475Smrg UpdateCheckbox("update_font_loadable", 3814d522f475Smrg fontMenuEntries, 3815d522f475Smrg fontMenu_font_loadable, 3816d522f475Smrg term->misc.font_loadable); 3817d522f475Smrg} 3818d522f475Smrg#endif 3819d522f475Smrg 3820d522f475Smrg#if OPT_RENDERFONT 3821d522f475Smrgvoid 3822d522f475Smrgupdate_font_renderfont(void) 3823d522f475Smrg{ 3824d522f475Smrg UpdateCheckbox("update_font_renderfont", 3825d522f475Smrg fontMenuEntries, 3826d522f475Smrg fontMenu_render_font, 38270bd37d32Smrg (term->work.render_font == True)); 382820d2c4d2Smrg SetItemSensitivity(fontMenuEntries[fontMenu_render_font].widget, 3829913cc679Smrg !IsEmpty(CurrentXftFont(term))); 3830f2e35a3aSmrg 3831f2e35a3aSmrg#if OPT_BOX_CHARS 3832f2e35a3aSmrg if (term->work.render_font) { 3833f2e35a3aSmrg TScreenOf(term)->broken_box_chars = term->work.broken_box_chars; 3834f2e35a3aSmrg } else { 3835f2e35a3aSmrg TScreenOf(term)->broken_box_chars = False; 3836f2e35a3aSmrg } 3837f2e35a3aSmrg#endif 3838f2e35a3aSmrg update_font_boxchars(); 3839f2e35a3aSmrg 38400bd37d32Smrg update_fontmenu(term); 3841d522f475Smrg} 3842d522f475Smrg#endif 3843d522f475Smrg 3844d522f475Smrg#if OPT_WIDE_CHARS 3845d522f475Smrgvoid 3846d522f475Smrgupdate_font_utf8_mode(void) 3847d522f475Smrg{ 384820d2c4d2Smrg Bool active = (TScreenOf(term)->utf8_mode != uAlways); 384920d2c4d2Smrg Bool enable = (TScreenOf(term)->utf8_mode != uFalse); 3850d522f475Smrg 3851d522f475Smrg TRACE(("update_font_utf8_mode active %d, enable %d\n", active, enable)); 3852e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_mode].widget, active); 3853d522f475Smrg UpdateCheckbox("update_font_utf8_mode", 3854d522f475Smrg fontMenuEntries, 3855e39b573cSmrg fontMenu_utf8_mode, 3856e39b573cSmrg enable); 3857e39b573cSmrg} 3858e39b573cSmrg 3859e39b573cSmrgvoid 3860e39b573cSmrgupdate_font_utf8_fonts(void) 3861e39b573cSmrg{ 3862e39b573cSmrg Bool active = (TScreenOf(term)->utf8_fonts != uAlways); 3863e39b573cSmrg Bool enable = (TScreenOf(term)->utf8_fonts != uFalse); 3864e39b573cSmrg 3865e39b573cSmrg TRACE(("update_font_utf8_fonts active %d, enable %d\n", active, enable)); 3866e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_fonts].widget, active); 3867e39b573cSmrg UpdateCheckbox("update_font_utf8_fonts", 3868e39b573cSmrg fontMenuEntries, 3869e39b573cSmrg fontMenu_utf8_fonts, 3870d522f475Smrg enable); 3871d522f475Smrg} 3872d522f475Smrg 3873d522f475Smrgvoid 3874d522f475Smrgupdate_font_utf8_title(void) 3875d522f475Smrg{ 3876f2e35a3aSmrg Bool active = (TScreenOf(term)->utf8_mode != uAlways); 3877f2e35a3aSmrg Bool enable = (TScreenOf(term)->utf8_mode != uFalse); 3878d522f475Smrg 3879d522f475Smrg TRACE(("update_font_utf8_title active %d, enable %d\n", active, enable)); 3880e39b573cSmrg SetItemSensitivity(fontMenuEntries[fontMenu_utf8_title].widget, active); 3881d522f475Smrg UpdateCheckbox("update_font_utf8_title", 3882d522f475Smrg fontMenuEntries, 3883e39b573cSmrg fontMenu_utf8_title, 3884d522f475Smrg enable); 3885d522f475Smrg} 3886d522f475Smrg#endif 3887d522f475Smrg 38880bd37d32Smrg#if OPT_DEC_CHRSET || OPT_BOX_CHARS || OPT_DEC_SOFTFONT 3889e39b573cSmrgvoid 3890e39b573cSmrgupdate_menu_allowBoldFonts(void) 3891e39b573cSmrg{ 3892e39b573cSmrg UpdateCheckbox("update_menu_allowBoldFonts", 3893e39b573cSmrg fontMenuEntries, 3894e39b573cSmrg fontMenu_allowBoldFonts, 3895e39b573cSmrg TScreenOf(term)->allowBoldFonts); 3896e39b573cSmrg} 38970bd37d32Smrg#endif 3898e39b573cSmrg 3899956cc18dSsnj#if OPT_ALLOW_XXX_OPS 3900956cc18dSsnjstatic void 3901956cc18dSsnjenable_allow_xxx_ops(Bool enable) 3902956cc18dSsnj{ 3903956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowFontOps].widget, enable); 3904913cc679Smrg SetItemSensitivity(fontMenuEntries[fontMenu_allowMouseOps].widget, enable); 3905956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTcapOps].widget, enable); 3906956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowTitleOps].widget, enable); 3907956cc18dSsnj SetItemSensitivity(fontMenuEntries[fontMenu_allowWindowOps].widget, enable); 3908956cc18dSsnj} 3909956cc18dSsnj 391020d2c4d2Smrgstatic void 391120d2c4d2Smrgdo_allowColorOps(Widget w, 391220d2c4d2Smrg XtPointer closure GCC_UNUSED, 391320d2c4d2Smrg XtPointer data GCC_UNUSED) 391420d2c4d2Smrg{ 391520d2c4d2Smrg XtermWidget xw = getXtermWidget(w); 391620d2c4d2Smrg if (xw != 0) { 391720d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowColorOps); 391820d2c4d2Smrg update_menu_allowColorOps(); 391920d2c4d2Smrg } 392020d2c4d2Smrg} 392120d2c4d2Smrg 3922956cc18dSsnjstatic void 3923956cc18dSsnjdo_allowFontOps(Widget w, 3924956cc18dSsnj XtPointer closure GCC_UNUSED, 3925956cc18dSsnj XtPointer data GCC_UNUSED) 3926956cc18dSsnj{ 3927956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3928956cc18dSsnj if (xw != 0) { 392920d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowFontOps); 3930956cc18dSsnj update_menu_allowFontOps(); 3931956cc18dSsnj } 3932956cc18dSsnj} 3933956cc18dSsnj 3934913cc679Smrgstatic void 3935913cc679Smrgdo_allowMouseOps(Widget w, 3936913cc679Smrg XtPointer closure GCC_UNUSED, 3937913cc679Smrg XtPointer data GCC_UNUSED) 3938913cc679Smrg{ 3939913cc679Smrg XtermWidget xw = getXtermWidget(w); 3940913cc679Smrg if (xw != 0) { 3941913cc679Smrg ToggleFlag(TScreenOf(xw)->allowMouseOps); 3942913cc679Smrg update_menu_allowMouseOps(); 3943913cc679Smrg } 3944913cc679Smrg} 3945913cc679Smrg 3946956cc18dSsnjstatic void 3947956cc18dSsnjdo_allowTcapOps(Widget w, 3948956cc18dSsnj XtPointer closure GCC_UNUSED, 3949956cc18dSsnj XtPointer data GCC_UNUSED) 3950956cc18dSsnj{ 3951956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3952956cc18dSsnj if (xw != 0) { 395320d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowTcapOps); 3954956cc18dSsnj update_menu_allowTcapOps(); 3955956cc18dSsnj } 3956956cc18dSsnj} 3957956cc18dSsnj 3958956cc18dSsnjstatic void 3959956cc18dSsnjdo_allowTitleOps(Widget w, 3960956cc18dSsnj XtPointer closure GCC_UNUSED, 3961956cc18dSsnj XtPointer data GCC_UNUSED) 3962956cc18dSsnj{ 3963956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3964956cc18dSsnj if (xw != 0) { 396520d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowTitleOps); 3966956cc18dSsnj update_menu_allowTitleOps(); 3967956cc18dSsnj } 3968956cc18dSsnj} 3969956cc18dSsnj 3970956cc18dSsnjstatic void 3971956cc18dSsnjdo_allowWindowOps(Widget w, 3972956cc18dSsnj XtPointer closure GCC_UNUSED, 3973956cc18dSsnj XtPointer data GCC_UNUSED) 3974956cc18dSsnj{ 3975956cc18dSsnj XtermWidget xw = getXtermWidget(w); 3976956cc18dSsnj if (xw != 0) { 397720d2c4d2Smrg ToggleFlag(TScreenOf(xw)->allowWindowOps); 3978956cc18dSsnj update_menu_allowWindowOps(); 3979956cc18dSsnj } 3980956cc18dSsnj} 3981956cc18dSsnj 398220d2c4d2Smrgvoid 398320d2c4d2SmrgHandleAllowColorOps(Widget w, 3984894e0ac8Smrg XEvent *event GCC_UNUSED, 3985894e0ac8Smrg String *params, 398620d2c4d2Smrg Cardinal *param_count) 398720d2c4d2Smrg{ 398820d2c4d2Smrg HANDLE_VT_TOGGLE(allowColorOps); 398920d2c4d2Smrg} 399020d2c4d2Smrg 3991956cc18dSsnjvoid 3992956cc18dSsnjHandleAllowFontOps(Widget w, 3993894e0ac8Smrg XEvent *event GCC_UNUSED, 3994894e0ac8Smrg String *params, 3995956cc18dSsnj Cardinal *param_count) 3996956cc18dSsnj{ 399720d2c4d2Smrg HANDLE_VT_TOGGLE(allowFontOps); 3998956cc18dSsnj} 3999956cc18dSsnj 4000913cc679Smrgvoid 4001913cc679SmrgHandleAllowMouseOps(Widget w, 4002913cc679Smrg XEvent *event GCC_UNUSED, 4003913cc679Smrg String *params, 4004913cc679Smrg Cardinal *param_count) 4005913cc679Smrg{ 4006913cc679Smrg HANDLE_VT_TOGGLE(allowMouseOps); 4007913cc679Smrg} 4008913cc679Smrg 4009956cc18dSsnjvoid 4010956cc18dSsnjHandleAllowTcapOps(Widget w, 4011894e0ac8Smrg XEvent *event GCC_UNUSED, 4012894e0ac8Smrg String *params, 4013956cc18dSsnj Cardinal *param_count) 4014956cc18dSsnj{ 401520d2c4d2Smrg HANDLE_VT_TOGGLE(allowTcapOps); 4016956cc18dSsnj} 4017956cc18dSsnj 4018956cc18dSsnjvoid 4019956cc18dSsnjHandleAllowTitleOps(Widget w, 4020894e0ac8Smrg XEvent *event GCC_UNUSED, 4021894e0ac8Smrg String *params, 4022956cc18dSsnj Cardinal *param_count) 4023956cc18dSsnj{ 402420d2c4d2Smrg HANDLE_VT_TOGGLE(allowTitleOps); 4025956cc18dSsnj} 4026956cc18dSsnj 4027956cc18dSsnjvoid 4028956cc18dSsnjHandleAllowWindowOps(Widget w, 4029894e0ac8Smrg XEvent *event GCC_UNUSED, 4030894e0ac8Smrg String *params, 4031956cc18dSsnj Cardinal *param_count) 4032956cc18dSsnj{ 403320d2c4d2Smrg HANDLE_VT_TOGGLE(allowWindowOps); 4034956cc18dSsnj} 4035956cc18dSsnj 4036956cc18dSsnjvoid 403720d2c4d2Smrgupdate_menu_allowColorOps(void) 4038956cc18dSsnj{ 403920d2c4d2Smrg UpdateCheckbox("update_menu_allowColorOps", 4040956cc18dSsnj fontMenuEntries, 404120d2c4d2Smrg fontMenu_allowColorOps, 404220d2c4d2Smrg TScreenOf(term)->allowColorOps); 4043956cc18dSsnj} 4044956cc18dSsnj 4045956cc18dSsnjvoid 4046956cc18dSsnjupdate_menu_allowFontOps(void) 4047956cc18dSsnj{ 4048956cc18dSsnj UpdateCheckbox("update_menu_allowFontOps", 4049956cc18dSsnj fontMenuEntries, 4050956cc18dSsnj fontMenu_allowFontOps, 405120d2c4d2Smrg TScreenOf(term)->allowFontOps); 405220d2c4d2Smrg} 405320d2c4d2Smrg 4054913cc679Smrgvoid 4055913cc679Smrgupdate_menu_allowMouseOps(void) 4056913cc679Smrg{ 4057913cc679Smrg UpdateCheckbox("update_menu_allowMouseOps", 4058913cc679Smrg fontMenuEntries, 4059913cc679Smrg fontMenu_allowMouseOps, 4060913cc679Smrg TScreenOf(term)->allowMouseOps); 4061913cc679Smrg} 4062913cc679Smrg 406320d2c4d2Smrgvoid 406420d2c4d2Smrgupdate_menu_allowTcapOps(void) 406520d2c4d2Smrg{ 406620d2c4d2Smrg UpdateCheckbox("update_menu_allowTcapOps", 406720d2c4d2Smrg fontMenuEntries, 406820d2c4d2Smrg fontMenu_allowTcapOps, 406920d2c4d2Smrg TScreenOf(term)->allowTcapOps); 4070956cc18dSsnj} 4071956cc18dSsnj 4072956cc18dSsnjvoid 4073956cc18dSsnjupdate_menu_allowTitleOps(void) 4074956cc18dSsnj{ 4075956cc18dSsnj UpdateCheckbox("update_menu_allowTitleOps", 4076956cc18dSsnj fontMenuEntries, 4077956cc18dSsnj fontMenu_allowTitleOps, 407820d2c4d2Smrg TScreenOf(term)->allowTitleOps); 4079956cc18dSsnj} 4080956cc18dSsnj 4081956cc18dSsnjvoid 4082956cc18dSsnjupdate_menu_allowWindowOps(void) 4083956cc18dSsnj{ 4084956cc18dSsnj UpdateCheckbox("update_menu_allowWindowOps", 4085956cc18dSsnj fontMenuEntries, 4086956cc18dSsnj fontMenu_allowWindowOps, 408720d2c4d2Smrg TScreenOf(term)->allowWindowOps); 4088956cc18dSsnj} 4089956cc18dSsnj#endif 4090956cc18dSsnj 4091d522f475Smrg#if OPT_TEK4014 4092d522f475Smrgvoid 4093d522f475Smrgupdate_tekshow(void) 4094d522f475Smrg{ 409520d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 4096d522f475Smrg UpdateCheckbox("update_tekshow", 4097d522f475Smrg vtMenuEntries, 4098d522f475Smrg vtMenu_tekshow, 4099d522f475Smrg TEK4014_SHOWN(term)); 4100d522f475Smrg } 4101d522f475Smrg} 4102d522f475Smrg 4103d522f475Smrgvoid 4104d522f475Smrgupdate_vttekmode(void) 4105d522f475Smrg{ 41060bd37d32Smrg XtermWidget xw = term; 41070bd37d32Smrg 41080bd37d32Smrg if (!(TScreenOf(xw)->inhibit & I_TEK)) { 4109d522f475Smrg UpdateCheckbox("update_vtmode", 4110d522f475Smrg vtMenuEntries, 4111d522f475Smrg vtMenu_tekmode, 41120bd37d32Smrg TEK4014_ACTIVE(xw)); 4113d522f475Smrg UpdateCheckbox("update_tekmode", 4114d522f475Smrg tekMenuEntries, 4115d522f475Smrg tekMenu_vtmode, 41160bd37d32Smrg !TEK4014_ACTIVE(xw)); 41170bd37d32Smrg update_fullscreen(); 4118d522f475Smrg } 4119d522f475Smrg} 4120d522f475Smrg 4121d522f475Smrgvoid 4122d522f475Smrgupdate_vtshow(void) 4123d522f475Smrg{ 412420d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 4125d522f475Smrg UpdateCheckbox("update_vtshow", 4126d522f475Smrg tekMenuEntries, 4127d522f475Smrg tekMenu_vtshow, 412820d2c4d2Smrg TScreenOf(term)->Vshow); 4129d522f475Smrg } 4130d522f475Smrg} 4131d522f475Smrg 4132d522f475Smrgvoid 4133d522f475Smrgset_vthide_sensitivity(void) 4134d522f475Smrg{ 413520d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 4136d522f475Smrg SetItemSensitivity( 4137d522f475Smrg vtMenuEntries[vtMenu_vthide].widget, 4138d522f475Smrg TEK4014_SHOWN(term)); 4139d522f475Smrg } 4140d522f475Smrg} 4141d522f475Smrg 4142d522f475Smrgvoid 4143d522f475Smrgset_tekhide_sensitivity(void) 4144d522f475Smrg{ 414520d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 4146d522f475Smrg SetItemSensitivity( 4147d522f475Smrg tekMenuEntries[tekMenu_tekhide].widget, 414820d2c4d2Smrg TScreenOf(term)->Vshow); 4149d522f475Smrg } 4150d522f475Smrg} 4151d522f475Smrg 4152d522f475Smrgvoid 4153d522f475Smrgset_tekfont_menu_item(int n, int val) 4154d522f475Smrg{ 415520d2c4d2Smrg if (!(TScreenOf(term)->inhibit & I_TEK)) { 4156d522f475Smrg UpdateCheckbox("set_tekfont_menu_item", tekMenuEntries, FS2MI(n), 4157d522f475Smrg (val)); 4158d522f475Smrg } 4159d522f475Smrg} 4160d522f475Smrg#endif /* OPT_TEK4014 */ 4161d522f475Smrg 4162d522f475Smrgvoid 4163d522f475Smrgset_menu_font(int val) 4164d522f475Smrg{ 4165d522f475Smrg UpdateCheckbox("set_menu_font", 4166d522f475Smrg fontMenuEntries, 416720d2c4d2Smrg TScreenOf(term)->menu_font_number, 4168d522f475Smrg (val)); 4169d522f475Smrg} 4170