From 243e65e5a2ef6bc1f0ca08b7d32474117a0783d0 Mon Sep 17 00:00:00 2001 From: Michael Jennings Date: Sun, 24 Aug 2003 15:09:32 +0000 Subject: [PATCH] Sun Aug 24 11:07:54 2003 Michael Jennings (mej) I redid the options variables and constants to try and make things more standardized, and to make room for future toggles as well. This should make David Lloyd a bit happier, 'cause now we can get his patch in here. :) Hopefully I didn't break anything.... SVN revision: 7370 --- ChangeLog | 9 ++ Eterm.spec | 2 +- src/command.c | 21 ++--- src/eterm_debug.h | 2 +- src/events.c | 8 +- src/font.c | 2 +- src/options.c | 222 +++++++++++++++++++++++----------------------- src/options.h | 69 +++++++------- src/pixmap.c | 12 +-- src/screen.c | 32 +++---- src/screen.h | 4 +- src/scrollbar.c | 16 ++-- src/startup.c | 4 +- src/term.c | 44 ++++----- src/windows.c | 18 ++-- 15 files changed, 241 insertions(+), 224 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6b80f63..656f982 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5093,3 +5093,12 @@ Fri Aug 22 00:09:04 2003 Michael Jennings (mej) Had I done it right the first time, this would not have happened. >:I ---------------------------------------------------------------------- +Sun Aug 24 11:07:54 2003 Michael Jennings (mej) + +I redid the options variables and constants to try and make things +more standardized, and to make room for future toggles as well. This +should make David Lloyd a bit happier, 'cause now we can get his patch +in here. :) + +Hopefully I didn't break anything.... +---------------------------------------------------------------------- diff --git a/Eterm.spec b/Eterm.spec index 61712bc..f0e7aa4 100644 --- a/Eterm.spec +++ b/Eterm.spec @@ -4,7 +4,7 @@ Summary: Enlightened terminal emulator Name: Eterm Version: 0.9.2 -Release: 3 +Release: 4 Copyright: BSD Group: User Interface/X Requires: imlib2, imlib2-loader_jpeg, imlib2-loader_png diff --git a/src/command.c b/src/command.c index ea23f85..3a15f68 100644 --- a/src/command.c +++ b/src/command.c @@ -1050,7 +1050,7 @@ handle_child_signal(int sig) || ((pid == -1) && (errno == ECHILD)) || ((pid == 0) && ((kill(cmd_pid, 0)) < 0)))) { cmd_pid = -1; - if (eterm_options & OPT_PAUSE) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_PAUSE)) { paused = 1; return; } @@ -1850,13 +1850,14 @@ xim_send_spot(void) static void xim_get_area(XRectangle * preedit_rect, XRectangle * status_rect, XRectangle * needed_rect) { - preedit_rect->x = needed_rect->width + (scrollbar_is_visible() && !(eterm_options & OPT_SCROLLBAR_RIGHT) ? (scrollbar_trough_width()) : 0); + preedit_rect->x = needed_rect->width + (scrollbar_is_visible() && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) + ? (scrollbar_trough_width()) : (0)); preedit_rect->y = Height2Pixel(TERM_WINDOW_GET_ROWS() - 1); - preedit_rect->width = Width2Pixel(TERM_WINDOW_GET_COLS() + 1) - needed_rect->width + (!(eterm_options & OPT_SCROLLBAR_RIGHT) ? (scrollbar_trough_width()) : 0); + preedit_rect->width = Width2Pixel(TERM_WINDOW_GET_COLS() + 1) - needed_rect->width + (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? (scrollbar_trough_width()) : 0); preedit_rect->height = Height2Pixel(1); - status_rect->x = (scrollbar_is_visible() && !(eterm_options & OPT_SCROLLBAR_RIGHT)) ? (scrollbar_trough_width()) : 0; + status_rect->x = (scrollbar_is_visible() && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT))) ? (scrollbar_trough_width()) : 0; status_rect->y = Height2Pixel(TERM_WINDOW_GET_ROWS() - 1); status_rect->width = needed_rect->width ? needed_rect->width : Width2Pixel(TERM_WINDOW_GET_COLS() + 1); @@ -2190,7 +2191,7 @@ run_command(char **argv) tt_winsize(0); /* become virtual console, fail silently */ - if (eterm_options & OPT_CONSOLE) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_CONSOLE)) { int fd = 1; privileges(INVOKE); @@ -2255,7 +2256,7 @@ run_command(char **argv) shell = "/bin/sh"; argv0 = my_basename(shell); - if (eterm_options & OPT_LOGIN_SHELL) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_LOGIN_SHELL)) { char *p = MALLOC(strlen(argv0) + 2); p[0] = '-'; @@ -2270,7 +2271,7 @@ run_command(char **argv) } #ifdef UTMP_SUPPORT privileges(RESTORE); - if (eterm_options & OPT_WRITE_UTMP) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_WRITE_UTMP)) { add_utmp_entry(ttydev, display_name, ptyfd); } privileges(IGNORE); @@ -2985,7 +2986,7 @@ init_command(char **argv) init_locale(); #ifdef META8_OPTION - meta_char = (eterm_options & OPT_META8 ? 0x80 : 033); + meta_char = (BITFIELD_IS_SET(vt_options, VT_OPTIONS_META8) ? 0x80 : 033); #endif #ifdef GREEK_SUPPORT @@ -3330,7 +3331,7 @@ cmd_getc(void) } else { /* Our file descriptor went bye-bye. */ cmd_fd = -1; - if (!paused && (eterm_options & OPT_PAUSE)) { + if (!paused && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_PAUSE))) { paused = 1; } break; @@ -3338,7 +3339,7 @@ cmd_getc(void) } else if (n == 0) { /* EOF */ cmd_fd = -1; - if (!paused && (eterm_options & OPT_PAUSE)) { + if (!paused && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_PAUSE))) { paused = 1; } break; diff --git a/src/eterm_debug.h b/src/eterm_debug.h index f1c3da2..168acf0 100644 --- a/src/eterm_debug.h +++ b/src/eterm_debug.h @@ -39,7 +39,7 @@ # define DEBUG_UTMP 1 # define D_UTMP(x) DPRINTF1(x) # define DEBUG_OPTIONS 1 -# define D_OPTIONS(x) DPRINTF1(x) +# define D_OPTIONS(x) DPRINTF1(x) # define DEBUG_IMLIB 1 # define D_IMLIB(x) DPRINTF1(x) # define DEBUG_PIXMAP 1 diff --git a/src/events.c b/src/events.c index a1fd243..d2d53d6 100644 --- a/src/events.c +++ b/src/events.c @@ -208,7 +208,7 @@ handle_key_press(event_t *ev) REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0); COUNT_EVENT(keypress_cnt); - if (!(eterm_options & OPT_NO_INPUT)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_INPUT))) { lookup_key(ev); } PROF_DONE(handle_key_press); @@ -470,8 +470,8 @@ handle_focus_in(event_t *ev) redraw_image(image_bg); } } - if (eterm_options & OPT_SCROLLBAR_POPUP) { - map_scrollbar(eterm_options & OPT_SCROLLBAR); + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP)) { + map_scrollbar(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)); } else { scrollbar_set_focus(TermWin.focus); scrollbar_draw(IMAGE_STATE_NORMAL, MODE_SOLID); @@ -498,7 +498,7 @@ handle_focus_out(event_t *ev) images[image_bg].current = images[image_bg].disabled; redraw_image(image_bg); } - if (eterm_options & OPT_SCROLLBAR_POPUP) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP)) { map_scrollbar(0); } else { scrollbar_set_focus(TermWin.focus); diff --git a/src/font.c b/src/font.c index 09b20e3..0505089 100644 --- a/src/font.c +++ b/src/font.c @@ -588,7 +588,7 @@ change_font(int init, const char *fontname) TermWin.fprop = 1; /* Proportional font */ /* For proportional fonts with large size variations, do some math-fu to try and help the appearance */ - if (TermWin.fprop && (eterm_options & OPT_PROPORTIONAL) && TermWin.font->per_char && (TermWin.font->max_bounds.width - TermWin.font->min_bounds.width >= 3)) { + if (TermWin.fprop && (BITFIELD_IS_SET(vt_options, VT_OPTIONS_PROPORTIONAL)) && TermWin.font->per_char && (TermWin.font->max_bounds.width - TermWin.font->min_bounds.width >= 3)) { int cw, n = 0, sum = 0, sumsq = 0, min_w, max_w; unsigned int i; double dev; diff --git a/src/options.c b/src/options.c index 3f23a12..56635a1 100644 --- a/src/options.c +++ b/src/options.c @@ -96,7 +96,9 @@ static char *rs_multichar_encoding = NULL; static char *rs_greek_keyboard = NULL; #endif -unsigned long eterm_options = (OPT_SCROLLBAR | OPT_SELECT_TRAILING_SPACES | OPT_SECONDARY_SCREEN), image_toggles = 0; +unsigned long eterm_options = (ETERM_OPTIONS_SCROLLBAR | ETERM_OPTIONS_SELECT_TRAILING_SPACES); +unsigned long vt_options = (VT_OPTIONS_SECONDARY_SCREEN); +unsigned long image_options = 0; char *theme_dir = NULL, *user_dir = NULL; char **rs_exec_args = NULL; /* Args to exec (-e or --exec) */ char *rs_title = NULL; /* Window title */ @@ -176,13 +178,13 @@ spifopt_t option_list[] = { #else SPIFOPT_INT_LONG_PP("debug", "level of debugging information to show (0-5)", DEBUG_LEVEL), #endif - SPIFOPT_BOOL_LONG_PP("install", "install a private colormap", eterm_options, OPT_INSTALL), + SPIFOPT_BOOL_LONG_PP("install", "install a private colormap", eterm_options, ETERM_OPTIONS_INSTALL), SPIFOPT_ABST_PP('h', "help", "display usage information", usage), SPIFOPT_ABST_LONG_PP("version", "display version and configuration information", version), /* =======[ Color options ]======= */ - SPIFOPT_BOOL('r', "reverse-video", "reverse video", eterm_options, OPT_REVERSE_VIDEO), + SPIFOPT_BOOL('r', "reverse-video", "reverse video", vt_options, VT_OPTIONS_REVERSE_VIDEO), SPIFOPT_STR('b', "background-color", "background color", rs_color[bgColor]), SPIFOPT_STR('f', "foreground-color", "foreground color", rs_color[fgColor]), SPIFOPT_STR_LONG("color0", "color 0", rs_color[minColor]), @@ -215,7 +217,7 @@ spifopt_t option_list[] = { /* =======[ X11 options ]======= */ SPIFOPT_STR('g', "geometry", "WxH+X+Y = size and position", rs_geometry), - SPIFOPT_BOOL('i', "iconic", "start iconified", eterm_options, OPT_ICONIC), + SPIFOPT_BOOL('i', "iconic", "start iconified", eterm_options, ETERM_OPTIONS_ICONIC), SPIFOPT_STR('n', "name", "client instance, icon, and title strings", rs_name), SPIFOPT_STR('T', "title", "title string", rs_title), SPIFOPT_STR_LONG("icon-name", "icon name", rs_iconName), @@ -232,7 +234,7 @@ spifopt_t option_list[] = { SPIFOPT_STR_LONG("font2", "font 2", rs_font[2]), SPIFOPT_STR_LONG("font3", "font 3", rs_font[3]), SPIFOPT_STR_LONG("font4", "font 4", rs_font[4]), - SPIFOPT_BOOL_LONG("proportional", "toggle proportional font optimizations", eterm_options, OPT_PROPORTIONAL), + SPIFOPT_BOOL_LONG("proportional", "toggle proportional font optimizations", vt_options, VT_OPTIONS_PROPORTIONAL), SPIFOPT_STR_LONG("font-fx", "specify font effects for the terminal fonts", rs_font_effects), /* =======[ Pixmap options ]======= */ @@ -244,9 +246,9 @@ spifopt_t option_list[] = { SPIFOPT_STR_LONG("trough-pixmap", "scrollbar background (trough) pixmap", rs_pixmaps[image_sb]), SPIFOPT_STR_LONG("anchor-pixmap", "scrollbar anchor pixmap", rs_pixmaps[image_sa]), SPIFOPT_STR_LONG("menu-pixmap", "menu pixmap", rs_pixmaps[image_menu]), - SPIFOPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", image_toggles, IMOPT_TRANS), - SPIFOPT_BOOL('0', "itrans", "use immotile-optimized transparency", image_toggles, IMOPT_ITRANS), - SPIFOPT_BOOL_LONG("viewport-mode", "use viewport mode for the background image", image_toggles, IMOPT_VIEWPORT), + SPIFOPT_BOOL('O', "trans", "creates a pseudo-transparent Eterm", image_options, IMAGE_OPTIONS_TRANS), + SPIFOPT_BOOL('0', "itrans", "use immotile-optimized transparency", image_options, IMAGE_OPTIONS_ITRANS), + SPIFOPT_BOOL_LONG("viewport-mode", "use viewport mode for the background image", image_options, IMAGE_OPTIONS_VIEWPORT), SPIFOPT_INT_LONG("shade", "old-style shade percentage (deprecated)", rs_shade), SPIFOPT_STR_LONG("tint", "old-style tint mask (deprecated)", rs_tint), SPIFOPT_STR_LONG("cmod", "image color modifier (\"brightness contrast gamma\")", rs_cmod_image), @@ -275,35 +277,35 @@ spifopt_t option_list[] = { #endif /* =======[ Toggles ]======= */ - SPIFOPT_BOOL('l', "login-shell", "login shell, prepend - to shell name", eterm_options, OPT_LOGIN_SHELL), - SPIFOPT_BOOL('s', "scrollbar", "display scrollbar", eterm_options, OPT_SCROLLBAR), - SPIFOPT_BOOL('u', "utmp-logging", "make a utmp entry", eterm_options, OPT_WRITE_UTMP), - SPIFOPT_BOOL('v', "visual-bell", "visual bell", eterm_options, OPT_VISUAL_BELL), - SPIFOPT_BOOL('H', "home-on-output", "jump to bottom on output", eterm_options, OPT_HOME_ON_OUTPUT), - SPIFOPT_BOOL_LONG("home-on-input", "jump to bottom on input", eterm_options, OPT_HOME_ON_INPUT), - SPIFOPT_BOOL('q', "no-input", "configure for output only", eterm_options, OPT_NO_INPUT), - SPIFOPT_BOOL_LONG("scrollbar-right", "display the scrollbar on the right", eterm_options, OPT_SCROLLBAR_RIGHT), - SPIFOPT_BOOL_LONG("scrollbar-floating", "display the scrollbar with no trough", eterm_options, OPT_SCROLLBAR_FLOATING), - SPIFOPT_BOOL_LONG("scrollbar-popup", "popup the scrollbar only when focused", eterm_options, OPT_SCROLLBAR_POPUP), - SPIFOPT_BOOL('x', "borderless", "force Eterm to have no borders", eterm_options, OPT_BORDERLESS), + SPIFOPT_BOOL('l', "login-shell", "login shell, prepend - to shell name", eterm_options, ETERM_OPTIONS_LOGIN_SHELL), + SPIFOPT_BOOL('s', "scrollbar", "display scrollbar", eterm_options, ETERM_OPTIONS_SCROLLBAR), + SPIFOPT_BOOL('u', "utmp-logging", "make a utmp entry", eterm_options, ETERM_OPTIONS_WRITE_UTMP), + SPIFOPT_BOOL('v', "visual-bell", "visual bell", vt_options, VT_OPTIONS_VISUAL_BELL), + SPIFOPT_BOOL('H', "home-on-output", "jump to bottom on output", vt_options, VT_OPTIONS_HOME_ON_OUTPUT), + SPIFOPT_BOOL_LONG("home-on-input", "jump to bottom on input", vt_options, VT_OPTIONS_HOME_ON_INPUT), + SPIFOPT_BOOL('q', "no-input", "configure for output only", eterm_options, ETERM_OPTIONS_NO_INPUT), + SPIFOPT_BOOL_LONG("scrollbar-right", "display the scrollbar on the right", eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT), + SPIFOPT_BOOL_LONG("scrollbar-floating", "display the scrollbar with no trough", eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING), + SPIFOPT_BOOL_LONG("scrollbar-popup", "popup the scrollbar only when focused", eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP), + SPIFOPT_BOOL('x', "borderless", "force Eterm to have no borders", eterm_options, ETERM_OPTIONS_BORDERLESS), #ifndef NO_MAPALERT # ifdef MAPALERT_OPTION - SPIFOPT_BOOL('m', "map-alert", "uniconify on beep", eterm_options, OPT_MAP_ALERT), + SPIFOPT_BOOL('m', "map-alert", "uniconify on beep", vt_options, VT_OPTIONS_MAP_ALERT), # endif #endif #ifdef META8_OPTION - SPIFOPT_BOOL('8', "meta-8", "Meta key toggles 8-bit", eterm_options, OPT_META8), + SPIFOPT_BOOL('8', "meta-8", "Meta key toggles 8-bit", vt_options, VT_OPTIONS_META8), #endif - SPIFOPT_BOOL_LONG("double-buffer", "reduce exposes using double-buffering (and more memory)", eterm_options, OPT_DOUBLE_BUFFER), - SPIFOPT_BOOL_LONG("no-cursor", "disable the text cursor", eterm_options, OPT_NO_CURSOR), - SPIFOPT_BOOL_LONG("pause", "pause after the child process exits", eterm_options, OPT_PAUSE), - SPIFOPT_BOOL_LONG("xterm-select", "duplicate xterm's selection behavior", eterm_options, OPT_XTERM_SELECT), - SPIFOPT_BOOL_LONG("select-line", "triple-click selects whole line", eterm_options, OPT_SELECT_WHOLE_LINE), - SPIFOPT_BOOL_LONG("select-trailing-spaces", "do not skip trailing spaces when selecting", eterm_options, OPT_SELECT_TRAILING_SPACES), - SPIFOPT_BOOL_LONG("report-as-keysyms", "report special keys as keysyms", eterm_options, OPT_REPORT_AS_KEYSYMS), + SPIFOPT_BOOL_LONG("double-buffer", "reduce exposes using double-buffering (and more memory)", eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER), + SPIFOPT_BOOL_LONG("no-cursor", "disable the text cursor", eterm_options, ETERM_OPTIONS_NO_CURSOR), + SPIFOPT_BOOL_LONG("pause", "pause after the child process exits", eterm_options, ETERM_OPTIONS_PAUSE), + SPIFOPT_BOOL_LONG("xterm-select", "duplicate xterm's selection behavior", eterm_options, ETERM_OPTIONS_XTERM_SELECT), + SPIFOPT_BOOL_LONG("select-line", "triple-click selects whole line", eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE), + SPIFOPT_BOOL_LONG("select-trailing-spaces", "do not skip trailing spaces when selecting", eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES), + SPIFOPT_BOOL_LONG("report-as-keysyms", "report special keys as keysyms", vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS), SPIFOPT_BOOL_LONG("buttonbar", "toggle the display of all buttonbars", rs_buttonbars, BBAR_FORCE_TOGGLE), - SPIFOPT_BOOL_LONG("resize-gravity", "toggle gravitation to nearest corner on resize", eterm_options, OPT_RESIZE_GRAVITY), - SPIFOPT_BOOL_LONG("secondary-screen", "toggle use of secondary screen", eterm_options, OPT_SECONDARY_SCREEN), + SPIFOPT_BOOL_LONG("resize-gravity", "toggle gravitation to nearest corner on resize", eterm_options, ETERM_OPTIONS_RESIZE_GRAVITY), + SPIFOPT_BOOL_LONG("secondary-screen", "toggle use of secondary screen", vt_options, VT_OPTIONS_SECONDARY_SCREEN), /* =======[ Keyboard options ]======= */ #if defined (HOTKEY_CTRL) || defined (HOTKEY_META) @@ -341,7 +343,7 @@ spifopt_t option_list[] = { SPIFOPT_INT('z', "delay", "initial delay in seconds", rs_delay), #endif SPIFOPT_ABST('a', "attribute", "parse an attribute in the specified context", handle_attribute), - SPIFOPT_BOOL('C', "console", "grab console messages", eterm_options, OPT_CONSOLE), + SPIFOPT_BOOL('C', "console", "grab console messages", vt_options, VT_OPTIONS_CONSOLE), SPIFOPT_ARGS('e', "exec", "execute a command rather than a shell", rs_exec_args) }; @@ -845,7 +847,7 @@ parse_color(char *buff, void *state) char *tmp = get_pword(2, buff); if (!BEG_STRCASECMP(tmp, "reverse")) { - eterm_options |= OPT_REVERSE_VIDEO; + BITFIELD_SET(vt_options, VT_OPTIONS_REVERSE_VIDEO); } else if (BEG_STRCASECMP(tmp, "normal")) { print_error("Parse error in file %s, line %lu: Invalid value \"%s\" for attribute video\n", file_peek_path(), file_peek_line(), tmp); @@ -994,9 +996,9 @@ parse_attributes(char *buff, void *state) } else if (!BEG_STRCASECMP(tmp, "prop")) { tmp = get_pword(2, tmp); if (BOOL_OPT_ISTRUE(tmp)) { - eterm_options |= OPT_PROPORTIONAL; + BITFIELD_SET(vt_options, VT_OPTIONS_PROPORTIONAL); } else if (BOOL_OPT_ISFALSE(tmp)) { - eterm_options &= ~(OPT_PROPORTIONAL); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_PROPORTIONAL); } else { print_error("Parse error in file %s, line %lu: Invalid/missing boolean value for attribute proportional\n", file_peek_path(), file_peek_line()); @@ -1057,9 +1059,9 @@ parse_toggles(char *buff, void *state) if (!BEG_STRCASECMP(buff, "map_alert ")) { #if !defined(NO_MAPALERT) && defined(MAPALERT_OPTION) if (bool_val) { - eterm_options |= OPT_MAP_ALERT; + BITFIELD_SET(vt_options, VT_OPTIONS_MAP_ALERT); } else { - eterm_options &= ~(OPT_MAP_ALERT); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_MAP_ALERT); } #else print_warning("Support for the map_alert attribute was not compiled in, ignoring\n"); @@ -1067,29 +1069,29 @@ parse_toggles(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "visual_bell ")) { if (bool_val) { - eterm_options |= OPT_VISUAL_BELL; + BITFIELD_SET(vt_options, VT_OPTIONS_VISUAL_BELL); } else { - eterm_options &= ~(OPT_VISUAL_BELL); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_VISUAL_BELL); } } else if (!BEG_STRCASECMP(buff, "login_shell ")) { if (bool_val) { - eterm_options |= OPT_LOGIN_SHELL; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_LOGIN_SHELL); } else { - eterm_options &= ~(OPT_LOGIN_SHELL); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_LOGIN_SHELL); } } else if (!BEG_STRCASECMP(buff, "scrollbar ")) { if (bool_val) { - eterm_options |= OPT_SCROLLBAR; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR); } else { - eterm_options &= ~(OPT_SCROLLBAR); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SCROLLBAR); } } else if (!BEG_STRCASECMP(buff, "utmp_logging ")) { #ifdef UTMP_SUPPORT if (bool_val) { - eterm_options |= OPT_WRITE_UTMP; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_WRITE_UTMP); } else { - eterm_options &= ~(OPT_WRITE_UTMP); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_WRITE_UTMP); } #else print_warning("Support for the utmp_logging attribute was not compiled in, ignoring\n"); @@ -1098,9 +1100,9 @@ parse_toggles(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "meta8 ")) { #ifdef META8_OPTION if (bool_val) { - eterm_options |= OPT_META8; + BITFIELD_SET(vt_options, VT_OPTIONS_META8); } else { - eterm_options &= ~(OPT_META8); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_META8); } #else print_warning("Support for the meta8 attribute was not compiled in, ignoring\n"); @@ -1108,118 +1110,118 @@ parse_toggles(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "iconic ")) { if (bool_val) { - eterm_options |= OPT_ICONIC; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_ICONIC); } else { - eterm_options &= ~(OPT_ICONIC); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_ICONIC); } } else if (!BEG_STRCASECMP(buff, "home_on_output ")) { if (bool_val) { - eterm_options |= OPT_HOME_ON_OUTPUT; + BITFIELD_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT); } else { - eterm_options &= ~(OPT_HOME_ON_OUTPUT); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_HOME_ON_OUTPUT); } } else if (!BEG_STRCASECMP(buff, "home_on_input ")) { if (bool_val) { - eterm_options |= OPT_HOME_ON_INPUT; + BITFIELD_SET(vt_options, VT_OPTIONS_HOME_ON_INPUT); } else { - eterm_options &= ~(OPT_HOME_ON_INPUT); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_HOME_ON_INPUT); } } else if (!BEG_STRCASECMP(buff, "no_input ")) { if (bool_val) { - eterm_options |= OPT_NO_INPUT; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_NO_INPUT); } else { - eterm_options &= ~(OPT_NO_INPUT); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_NO_INPUT); } } else if (!BEG_STRCASECMP(buff, "scrollbar_floating ")) { if (bool_val) { - eterm_options |= OPT_SCROLLBAR_FLOATING; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING); } else { - eterm_options &= ~(OPT_SCROLLBAR_FLOATING); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING); } } else if (!BEG_STRCASECMP(buff, "scrollbar_right ")) { if (bool_val) { - eterm_options |= OPT_SCROLLBAR_RIGHT; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT); } else { - eterm_options &= ~(OPT_SCROLLBAR_RIGHT); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT); } } else if (!BEG_STRCASECMP(buff, "scrollbar_popup ")) { if (bool_val) { - eterm_options |= OPT_SCROLLBAR_POPUP; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP); } else { - eterm_options &= ~(OPT_SCROLLBAR_POPUP); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP); } } else if (!BEG_STRCASECMP(buff, "borderless ")) { if (bool_val) { - eterm_options |= OPT_BORDERLESS; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_BORDERLESS); } else { - eterm_options &= ~(OPT_BORDERLESS); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_BORDERLESS); } } else if (!BEG_STRCASECMP(buff, "double_buffer ")) { if (bool_val) { - eterm_options |= OPT_DOUBLE_BUFFER; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER); } else { - eterm_options &= ~(OPT_DOUBLE_BUFFER); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER); } } else if (!BEG_STRCASECMP(buff, "no_cursor ")) { if (bool_val) { - eterm_options |= OPT_NO_CURSOR; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_NO_CURSOR); } else { - eterm_options &= ~(OPT_NO_CURSOR); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_NO_CURSOR); } } else if (!BEG_STRCASECMP(buff, "pause ")) { if (bool_val) { - eterm_options |= OPT_PAUSE; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_PAUSE); } else { - eterm_options &= ~(OPT_PAUSE); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_PAUSE); } } else if (!BEG_STRCASECMP(buff, "xterm_select ")) { if (bool_val) { - eterm_options |= OPT_XTERM_SELECT; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT); } else { - eterm_options &= ~(OPT_XTERM_SELECT); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_XTERM_SELECT); } } else if (!BEG_STRCASECMP(buff, "select_line ")) { if (bool_val) { - eterm_options |= OPT_SELECT_WHOLE_LINE; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE); } else { - eterm_options &= ~(OPT_SELECT_WHOLE_LINE); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE); } } else if (!BEG_STRCASECMP(buff, "select_trailing_spaces ")) { if (bool_val) { - eterm_options |= OPT_SELECT_TRAILING_SPACES; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES); } else { - eterm_options &= ~(OPT_SELECT_TRAILING_SPACES); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES); } } else if (!BEG_STRCASECMP(buff, "report_as_keysyms ")) { if (bool_val) { - eterm_options |= OPT_REPORT_AS_KEYSYMS; + BITFIELD_SET(vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS); } else { - eterm_options &= ~(OPT_REPORT_AS_KEYSYMS); + BITFIELD_CLEAR(vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS); } } else if (!BEG_STRCASECMP(buff, "mbyte_cursor ")) { if (bool_val) { - eterm_options |= OPT_MBYTE_CURSOR; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_MBYTE_CURSOR); } else { - eterm_options &= ~(OPT_MBYTE_CURSOR); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_MBYTE_CURSOR); } } else if (!BEG_STRCASECMP(buff, "itrans ") || !BEG_STRCASECMP(buff, "immotile_trans ")) { if (bool_val) { - image_toggles |= IMOPT_ITRANS; + BITFIELD_SET(image_options, IMAGE_OPTIONS_ITRANS); } else { - image_toggles &= ~IMOPT_ITRANS; + BITFIELD_CLEAR(image_options, IMAGE_OPTIONS_ITRANS); } } else if (!BEG_STRCASECMP(buff, "buttonbar")) { @@ -1233,9 +1235,9 @@ parse_toggles(char *buff, void *state) } else if (!BEG_STRCASECMP(buff, "resize_gravity")) { if (bool_val) { - eterm_options |= OPT_RESIZE_GRAVITY; + BITFIELD_SET(eterm_options, ETERM_OPTIONS_RESIZE_GRAVITY); } else { - eterm_options &= ~(OPT_RESIZE_GRAVITY); + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_RESIZE_GRAVITY); } } else { print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid within context toggles\n", file_peek_path(), @@ -2581,7 +2583,7 @@ post_parse(void) } /* no point having a scrollbar without having any scrollback! */ if (!TermWin.saveLines) { - eterm_options &= ~OPT_SCROLLBAR; + BITFIELD_CLEAR(eterm_options, ETERM_OPTIONS_SCROLLBAR); } #ifdef PRINTPIPE if (!rs_print_pipe) { @@ -2785,10 +2787,10 @@ post_parse(void) D_PIXMAP(("No \"disabled\" state for image %s. Setting fallback to the normal state.\n", get_image_type(i))); images[i].disabled = images[i].norm; } - if ((image_toggles & IMOPT_TRANS) && (image_mode_is(i, ALLOW_TRANS))) { + if ((BITFIELD_IS_SET(image_options, IMAGE_OPTIONS_TRANS)) && (image_mode_is(i, ALLOW_TRANS))) { D_PIXMAP(("Detected transparency option. Enabling transparency on image %s\n", get_image_type(i))); image_set_mode(i, MODE_TRANS); - } else if ((image_toggles & IMOPT_VIEWPORT) && (image_mode_is(i, ALLOW_VIEWPORT))) { + } else if ((BITFIELD_IS_SET(image_options, IMAGE_OPTIONS_VIEWPORT)) && (image_mode_is(i, ALLOW_VIEWPORT))) { D_PIXMAP(("Detected viewport option. Enabling viewport mode on image %s\n", get_image_type(i))); image_set_mode(i, MODE_VIEWPORT); } @@ -2941,7 +2943,7 @@ post_parse(void) } #endif - if (eterm_options & OPT_REVERSE_VIDEO) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_REVERSE_VIDEO)) { char *tmp; /* swap foreground/background colors */ @@ -3164,7 +3166,7 @@ save_config(char *path, unsigned char save_theme) (scrollbar_get_type() == SCROLLBAR_XTERM ? "xterm" : (scrollbar_get_type() == SCROLLBAR_MOTIF ? "motif" : "next"))); fprintf(fp, " scrollbar_width %d\n", scrollbar_anchor_width()); fprintf(fp, " font default %u\n", (unsigned int) font_idx); - fprintf(fp, " font proportional %d\n", ((eterm_options & OPT_PROPORTIONAL) ? 1 : 0)); + fprintf(fp, " font proportional %d\n", ((BITFIELD_IS_SET(vt_options, VT_OPTIONS_PROPORTIONAL)) ? 1 : 0)); for (i = 0; i < font_cnt; i++) { if (etfonts[i]) { fprintf(fp, " font %d %s\n", i, etfonts[i]); @@ -3732,30 +3734,30 @@ save_config(char *path, unsigned char save_theme) } fprintf(fp, "begin toggles\n"); - fprintf(fp, " map_alert %d\n", (eterm_options & OPT_MAP_ALERT ? 1 : 0)); - fprintf(fp, " visual_bell %d\n", (eterm_options & OPT_VISUAL_BELL ? 1 : 0)); - fprintf(fp, " login_shell %d\n", (eterm_options & OPT_LOGIN_SHELL ? 1 : 0)); - fprintf(fp, " scrollbar %d\n", (eterm_options & OPT_SCROLLBAR ? 1 : 0)); - fprintf(fp, " utmp_logging %d\n", (eterm_options & OPT_WRITE_UTMP ? 1 : 0)); - fprintf(fp, " meta8 %d\n", (eterm_options & OPT_META8 ? 1 : 0)); - fprintf(fp, " iconic %d\n", (eterm_options & OPT_ICONIC ? 1 : 0)); - fprintf(fp, " home_on_output %d\n", (eterm_options & OPT_HOME_ON_OUTPUT ? 1 : 0)); - fprintf(fp, " home_on_input %d\n", (eterm_options & OPT_HOME_ON_INPUT ? 1 : 0)); - fprintf(fp, " no_input %d\n", (eterm_options & OPT_NO_INPUT ? 1 : 0)); - fprintf(fp, " scrollbar_floating %d\n", (eterm_options & OPT_SCROLLBAR_FLOATING ? 1 : 0)); - fprintf(fp, " scrollbar_right %d\n", (eterm_options & OPT_SCROLLBAR_RIGHT ? 1 : 0)); - fprintf(fp, " scrollbar_popup %d\n", (eterm_options & OPT_SCROLLBAR_POPUP ? 1 : 0)); - fprintf(fp, " borderless %d\n", (eterm_options & OPT_BORDERLESS ? 1 : 0)); - fprintf(fp, " double_buffer %d\n", (eterm_options & OPT_DOUBLE_BUFFER ? 1 : 0)); - fprintf(fp, " no_cursor %d\n", (eterm_options & OPT_NO_CURSOR ? 1 : 0)); - fprintf(fp, " pause %d\n", (eterm_options & OPT_PAUSE ? 1 : 0)); - fprintf(fp, " xterm_select %d\n", (eterm_options & OPT_XTERM_SELECT ? 1 : 0)); - fprintf(fp, " select_line %d\n", (eterm_options & OPT_SELECT_WHOLE_LINE ? 1 : 0)); - fprintf(fp, " select_trailing_spaces %d\n", (eterm_options & OPT_SELECT_TRAILING_SPACES ? 1 : 0)); - fprintf(fp, " report_as_keysyms %d\n", (eterm_options & OPT_REPORT_AS_KEYSYMS ? 1 : 0)); - fprintf(fp, " itrans %d\n", (image_toggles & IMOPT_ITRANS ? 1 : 0)); + fprintf(fp, " map_alert %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_MAP_ALERT) ? 1 : 0)); + fprintf(fp, " visual_bell %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_VISUAL_BELL) ? 1 : 0)); + fprintf(fp, " login_shell %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_LOGIN_SHELL) ? 1 : 0)); + fprintf(fp, " scrollbar %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR) ? 1 : 0)); + fprintf(fp, " utmp_logging %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_WRITE_UTMP) ? 1 : 0)); + fprintf(fp, " meta8 %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_META8) ? 1 : 0)); + fprintf(fp, " iconic %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_ICONIC) ? 1 : 0)); + fprintf(fp, " home_on_output %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT) ? 1 : 0)); + fprintf(fp, " home_on_input %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_INPUT) ? 1 : 0)); + fprintf(fp, " no_input %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_INPUT) ? 1 : 0)); + fprintf(fp, " scrollbar_floating %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING) ? 1 : 0)); + fprintf(fp, " scrollbar_right %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT) ? 1 : 0)); + fprintf(fp, " scrollbar_popup %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP) ? 1 : 0)); + fprintf(fp, " borderless %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS) ? 1 : 0)); + fprintf(fp, " double_buffer %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER) ? 1 : 0)); + fprintf(fp, " no_cursor %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_CURSOR) ? 1 : 0)); + fprintf(fp, " pause %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_PAUSE) ? 1 : 0)); + fprintf(fp, " xterm_select %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT) ? 1 : 0)); + fprintf(fp, " select_line %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE) ? 1 : 0)); + fprintf(fp, " select_trailing_spaces %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES) ? 1 : 0)); + fprintf(fp, " report_as_keysyms %d\n", (BITFIELD_IS_SET(vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS) ? 1 : 0)); + fprintf(fp, " itrans %d\n", (BITFIELD_IS_SET(image_options, IMAGE_OPTIONS_ITRANS) ? 1 : 0)); fprintf(fp, " buttonbar %d\n", ((buttonbar && bbar_is_visible(buttonbar)) ? 1 : 0)); - fprintf(fp, " resize_gravity %d\n", (eterm_options & OPT_RESIZE_GRAVITY ? 1 : 0)); + fprintf(fp, " resize_gravity %d\n", (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_RESIZE_GRAVITY) ? 1 : 0)); fprintf(fp, "end toggles\n\n"); fprintf(fp, "begin keyboard\n"); diff --git a/src/options.h b/src/options.h index 8dae10d..6834eba 100644 --- a/src/options.h +++ b/src/options.h @@ -28,38 +28,39 @@ #include /* Xlib, Xutil, Xresource, Xfuncproto */ /************ Macros and Definitions ************/ -# define OPT_CONSOLE (1LU << 0) -# define OPT_LOGIN_SHELL (1LU << 1) -# define OPT_ICONIC (1LU << 2) -# define OPT_VISUAL_BELL (1LU << 3) -# define OPT_MAP_ALERT (1LU << 4) -# define OPT_REVERSE_VIDEO (1LU << 5) -# define OPT_WRITE_UTMP (1LU << 6) -# define OPT_SCROLLBAR (1LU << 7) -# define OPT_META8 (1LU << 8) -# define OPT_HOME_ON_OUTPUT (1LU << 9) -# define OPT_SCROLLBAR_RIGHT (1LU << 10) -# define OPT_BORDERLESS (1LU << 11) -# define OPT_NO_INPUT (1LU << 12) -# define OPT_NO_CURSOR (1LU << 13) -# define OPT_PAUSE (1LU << 14) -# define OPT_HOME_ON_INPUT (1LU << 15) -# define OPT_REPORT_AS_KEYSYMS (1LU << 16) -# define OPT_XTERM_SELECT (1LU << 17) -# define OPT_SELECT_WHOLE_LINE (1LU << 18) -# define OPT_SCROLLBAR_POPUP (1LU << 19) -# define OPT_SELECT_TRAILING_SPACES (1LU << 20) -# define OPT_INSTALL (1LU << 21) -# define OPT_SCROLLBAR_FLOATING (1LU << 22) -# define OPT_DOUBLE_BUFFER (1LU << 23) -# define OPT_MBYTE_CURSOR (1LU << 24) -# define OPT_PROPORTIONAL (1LU << 25) -# define OPT_RESIZE_GRAVITY (1LU << 26) -# define OPT_SECONDARY_SCREEN (1LU << 27) +# define VT_OPTIONS_CONSOLE (1LU << 0) +# define VT_OPTIONS_VISUAL_BELL (1LU << 1) +# define VT_OPTIONS_MAP_ALERT (1LU << 2) +# define VT_OPTIONS_REVERSE_VIDEO (1LU << 3) +# define VT_OPTIONS_META8 (1LU << 4) +# define VT_OPTIONS_HOME_ON_OUTPUT (1LU << 5) +# define VT_OPTIONS_HOME_ON_INPUT (1LU << 6) +# define VT_OPTIONS_REPORT_AS_KEYSYMS (1LU << 7) +# define VT_OPTIONS_PROPORTIONAL (1LU << 8) +# define VT_OPTIONS_SECONDARY_SCREEN (1LU << 9) -# define IMOPT_TRANS (1U << 0) -# define IMOPT_ITRANS (1U << 1) -# define IMOPT_VIEWPORT (1U << 2) +# define ETERM_OPTIONS_LOGIN_SHELL (1LU << 0) +# define ETERM_OPTIONS_ICONIC (1LU << 1) +# define ETERM_OPTIONS_WRITE_UTMP (1LU << 2) +# define ETERM_OPTIONS_SCROLLBAR (1LU << 3) +# define ETERM_OPTIONS_SCROLLBAR_RIGHT (1LU << 4) +# define ETERM_OPTIONS_BORDERLESS (1LU << 5) +# define ETERM_OPTIONS_NO_INPUT (1LU << 6) +# define ETERM_OPTIONS_NO_CURSOR (1LU << 7) +# define ETERM_OPTIONS_PAUSE (1LU << 8) +# define ETERM_OPTIONS_XTERM_SELECT (1LU << 9) +# define ETERM_OPTIONS_SELECT_WHOLE_LINE (1LU << 10) +# define ETERM_OPTIONS_SCROLLBAR_POPUP (1LU << 11) +# define ETERM_OPTIONS_SELECT_TRAILING_SPACES (1LU << 12) +# define ETERM_OPTIONS_INSTALL (1LU << 13) +# define ETERM_OPTIONS_SCROLLBAR_FLOATING (1LU << 14) +# define ETERM_OPTIONS_DOUBLE_BUFFER (1LU << 15) +# define ETERM_OPTIONS_MBYTE_CURSOR (1LU << 16) +# define ETERM_OPTIONS_RESIZE_GRAVITY (1LU << 17) + +# define IMAGE_OPTIONS_TRANS (1U << 0) +# define IMAGE_OPTIONS_ITRANS (1U << 1) +# define IMAGE_OPTIONS_VIEWPORT (1U << 2) # define BBAR_FORCE_TOGGLE (0x03) @@ -78,10 +79,14 @@ #define RESET_AND_ASSIGN(var, val) do {if ((var) != NULL) FREE(var); (var) = (val);} while (0) +#define BITFIELD_SET(var, field) ((var) |= (field)) +#define BITFIELD_CLEAR(var, field) ((var) &= ~(field)) +#define BITFIELD_IS_SET(var, field) ((var) & (field)) + /************ Structures ************/ /************ Variables ************/ -extern unsigned long eterm_options, image_toggles; +extern unsigned long eterm_options, vt_options, image_options; extern char *theme_dir, *user_dir; extern char **rs_exec_args; /* Args to exec (-e or --exec) */ extern char *rs_title; /* Window title */ diff --git a/src/pixmap.c b/src/pixmap.c index 4edcb1e..77f9ecc 100644 --- a/src/pixmap.c +++ b/src/pixmap.c @@ -680,7 +680,7 @@ create_trans_pixmap(simage_t *simg, unsigned char which, Drawable d, int x, int D_PIXMAP(("Copying %hux%hu rectangle at %d, %d from %ux%u desktop pixmap 0x%08x onto p.\n", width, height, x, y, pw, ph, desktop_pixmap)); XCopyArea(Xdisplay, desktop_pixmap, p, gc, x, y, width, height, 0, 0); } - if ((which != image_bg || (image_toggles & IMOPT_ITRANS) || images[image_bg].current != images[image_bg].norm) + if ((which != image_bg || (BITFIELD_IS_SET(image_options, IMAGE_OPTIONS_ITRANS)) || images[image_bg].current != images[image_bg].norm) && need_colormod(simg->iml)) { colormod_trans(p, simg->iml, gc, width, height); } @@ -1091,7 +1091,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h } simg->pmap->pixmap = create_trans_pixmap(simg, which, win, 0, 0, width, height); if (simg->pmap->pixmap != None) { - if ((which == image_bg) && (eterm_options & OPT_DOUBLE_BUFFER)) { + if ((which == image_bg) && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER))) { copy_buffer_pixmap(MODE_TRANS, (unsigned long) simg->pmap->pixmap, width, height); XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); } else { @@ -1117,7 +1117,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h } if (simg->pmap->pixmap != None) { D_PIXMAP(("Setting background of window 0x%08x to 0x%08x\n", win, simg->pmap->pixmap)); - if ((which == image_bg) && (eterm_options & OPT_DOUBLE_BUFFER)) { + if ((which == image_bg) && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER))) { copy_buffer_pixmap(MODE_VIEWPORT, (unsigned long) simg->pmap->pixmap, width, height); XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); } else { @@ -1228,7 +1228,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h bevel_pixmap(simg->pmap->pixmap, width, height, simg->iml->bevel->edges, simg->iml->bevel->up); } D_PIXMAP(("Setting background of window 0x%08x to 0x%08x\n", win, simg->pmap->pixmap)); - if ((which == image_bg) && (eterm_options & OPT_DOUBLE_BUFFER)) { + if ((which == image_bg) && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER))) { copy_buffer_pixmap(MODE_VIEWPORT, (unsigned long) simg->pmap->pixmap, width, height); XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); } else { @@ -1254,7 +1254,7 @@ render_simage(simage_t *simg, Window win, unsigned short width, unsigned short h /* Fall back to solid mode if all else fails. */ if (!image_mode_is(which, MODE_MASK)) { - if ((which == image_bg) && (eterm_options & OPT_DOUBLE_BUFFER)) { + if ((which == image_bg) && (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_DOUBLE_BUFFER))) { copy_buffer_pixmap(MODE_SOLID, (unsigned long) PixColors[bgColor], width, height); XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); } else { @@ -2027,7 +2027,7 @@ get_desktop_pixmap(void) D_PIXMAP(("Desktop pixmap has changed. Updating desktop_pixmap\n")); free_desktop_pixmap(); orig_desktop_pixmap = p; - if (!(image_toggles & IMOPT_ITRANS) && need_colormod(images[image_bg].current->iml)) { + if (!(BITFIELD_IS_SET(image_options, IMAGE_OPTIONS_ITRANS)) && need_colormod(images[image_bg].current->iml)) { int px, py; unsigned int pw, ph, pb, pd; Window w; diff --git a/src/screen.c b/src/screen.c index 0425779..c04f72f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -357,7 +357,7 @@ scr_poweron(void) /* Reset the rendering style to the default colors/style */ scr_rendition(0, ~RS_None); #if NSCREENS - if (eterm_options & OPT_SECONDARY_SCREEN) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_SECONDARY_SCREEN)) { /* Reset the secondary screen */ scr_change_screen(SECONDARY); scr_erase_screen(2); @@ -432,7 +432,7 @@ scr_change_screen(int scrn) SWAP_IT(current_screen, scrn, tmp); #if NSCREENS - if (eterm_options & OPT_SECONDARY_SCREEN) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_SECONDARY_SCREEN)) { offset = TermWin.saveLines; if (!screen.text || !screen.rend) return (current_screen); @@ -1525,11 +1525,11 @@ scr_bell(void) { #ifndef NO_MAPALERT #ifdef MAPALERT_OPTION - if (eterm_options & OPT_MAP_ALERT) + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_MAP_ALERT)) #endif XMapWindow(Xdisplay, TermWin.parent); #endif - if (eterm_options & OPT_VISUAL_BELL) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_VISUAL_BELL)) { scr_rvideo_mode(!rvideo); scr_rvideo_mode(!rvideo); } else @@ -2690,7 +2690,7 @@ selection_make(Time tm) *str++ = *t++; col = 0; if (screen.text[row][TERM_WINDOW_GET_REPORTED_COLS()] != WRAP_CHAR) { - if (!(eterm_options & OPT_SELECT_TRAILING_SPACES)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES))) { for (str--; *str == ' ' || *str == '\t'; str--); str++; } @@ -2710,7 +2710,7 @@ selection_make(Time tm) UPPER_BOUND(end_col, TERM_WINDOW_GET_REPORTED_COLS()); for (; col < end_col; col++) *str++ = *t++; - if (!(eterm_options & OPT_SELECT_TRAILING_SPACES)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES))) { for (str--; *str == ' ' || *str == '\t'; str--); str++; } @@ -2830,7 +2830,7 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) for (;;) { for (; beg_col > 0; beg_col--) { t = *--stp; - if (DELIMIT_TEXT(t) != w1 || (w1 && *stp1 != t && eterm_options & OPT_XTERM_SELECT)) + if (DELIMIT_TEXT(t) != w1 || (w1 && *stp1 != t && BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) break; #ifdef MULTI_CHARSET r = *--srp; @@ -2838,7 +2838,7 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) break; #endif } - if (!(eterm_options & OPT_XTERM_SELECT)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) { if (beg_col == col && beg_col > 0) { if (DELIMIT_TEXT(*stp)) /* space or tab or cutchar */ break; @@ -2864,10 +2864,10 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) #ifdef MULTI_CHARSET srp = &(screen.rend[beg_row + row_offset - 1][last_col + 1]); r = *(srp - 1); - if (DELIMIT_TEXT(t) == w1 && (!w1 || *stp == t || !(eterm_options & OPT_XTERM_SELECT)) && DELIMIT_REND(r) == w2) { + if (DELIMIT_TEXT(t) == w1 && (!w1 || *stp == t || !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) && DELIMIT_REND(r) == w2) { srp--; #else - if (DELIMIT_TEXT(t) == w1 && (!w1 || *stp == t || !(eterm_options & OPT_XTERM_SELECT))) { + if (DELIMIT_TEXT(t) == w1 && (!w1 || *stp == t || !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT)))) { #endif stp--; beg_row--; @@ -2893,7 +2893,7 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) for (;;) { for (; end_col < last_col; end_col++) { t = *++stp; - if (DELIMIT_TEXT(t) != w1 || (w1 && *stp1 != t && eterm_options & OPT_XTERM_SELECT)) + if (DELIMIT_TEXT(t) != w1 || (w1 && *stp1 != t && BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) break; #ifdef MULTI_CHARSET r = *++srp; @@ -2901,7 +2901,7 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) break; #endif } - if (!(eterm_options & OPT_XTERM_SELECT)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) { if (end_col == col && end_col < last_col) { if (DELIMIT_TEXT(*stp)) /* space or tab or cutchar */ break; @@ -2925,9 +2925,9 @@ selection_delimit_word(int col, int row, row_col_t *beg, row_col_t *end) stp = screen.text[end_row + row_offset + 1]; #ifdef MULTI_CHARSET srp = screen.rend[end_row + row_offset + 1]; - if (DELIMIT_TEXT(*stp) == w1 && (!w1 || *stp1 == *stp || !(eterm_options & OPT_XTERM_SELECT)) && DELIMIT_REND(*srp) == w2) { + if (DELIMIT_TEXT(*stp) == w1 && (!w1 || *stp1 == *stp || !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT))) && DELIMIT_REND(*srp) == w2) { #else - if (DELIMIT_TEXT(*stp) == w1 && (!w1 || *stp1 == *stp || !(eterm_options & OPT_XTERM_SELECT))) { + if (DELIMIT_TEXT(*stp) == w1 && (!w1 || *stp1 == *stp || !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_XTERM_SELECT)))) { #endif end_row++; end_col = 0; @@ -3157,7 +3157,7 @@ selection_extend_colrow(int col, int row, int flag, int cont) selection.beg.row = selection.mark.row; selection.end.row = row; } - if (eterm_options & OPT_SELECT_WHOLE_LINE) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE)) { selection.beg.col = 0; } else { selection.clicks = 2; @@ -3363,7 +3363,7 @@ void xim_get_position(XPoint * pos) { pos->x = Col2Pixel(screen.col); - if (scrollbar_is_visible() && !(eterm_options & OPT_SCROLLBAR_RIGHT)) { + if (scrollbar_is_visible() && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT))) { pos->x += scrollbar_trough_width(); } pos->y = (Height2Pixel(screen.row) diff --git a/src/screen.h b/src/screen.h index 3ac9a82..bdab7a9 100644 --- a/src/screen.h +++ b/src/screen.h @@ -29,10 +29,10 @@ #define IS_CUT_BUFFER(a) (((a) >= XA_CUT_BUFFER0) && ((a) <= XA_CUT_BUFFER7)) #define ZERO_SCROLLBACK do { \ - if (eterm_options & OPT_HOME_ON_OUTPUT) TermWin.view_start = 0; \ + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT)) TermWin.view_start = 0; \ } while (0) #define REFRESH_ZERO_SCROLLBACK do { \ - if (eterm_options & OPT_HOME_ON_OUTPUT) TermWin.view_start = 0; \ + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT)) TermWin.view_start = 0; \ } while (0) #define CHECK_SELECTION do { \ if (selection.op) selection_check(); \ diff --git a/src/scrollbar.c b/src/scrollbar.c index cf39332..604f9e3 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -383,7 +383,7 @@ scrollbar_draw_uparrow(unsigned char image_state, unsigned char force_modes) } if (!image_mode_is(image_up, MODE_MASK)) { /* Solid mode. Redraw every time since it's cheap. */ - if (eterm_options & OPT_SCROLLBAR_FLOATING) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING)) { XSetWindowBackground(Xdisplay, scrollbar.up_win, PixColors[bgColor]); XClearWindow(Xdisplay, scrollbar.up_win); } else { @@ -453,7 +453,7 @@ scrollbar_draw_downarrow(unsigned char image_state, unsigned char force_modes) } if (!image_mode_is(image_down, MODE_MASK)) { /* Solid mode. Redraw every time since it's cheap. */ - if (eterm_options & OPT_SCROLLBAR_FLOATING) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING)) { XSetWindowBackground(Xdisplay, scrollbar.dn_win, PixColors[bgColor]); XClearWindow(Xdisplay, scrollbar.dn_win); } else { @@ -538,7 +538,7 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes) /* Solid mode. Redraw every time since it's cheap. */ #ifdef XTERM_SCROLLBAR if (scrollbar.type == SCROLLBAR_XTERM) { - int x = ((eterm_options & OPT_SCROLLBAR_RIGHT) ? 1 : 0); + int x = ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? 1 : 0); XSetForeground(Xdisplay, gc_stipple, images[image_sa].current->bg); XFillRectangle(Xdisplay, scrollbar.sa_win, gc_stipple, x + 1, 0, scrollbar_anchor_width() - x - 1, scrollbar_anchor_height()); @@ -547,7 +547,7 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes) #endif /* XTERM_SCROLLBAR */ #if defined(MOTIF_SCROLLBAR) || defined(NEXT_SCROLLBAR) if (scrollbar.type == SCROLLBAR_MOTIF || scrollbar.type == SCROLLBAR_NEXT) { - if (eterm_options & OPT_SCROLLBAR_FLOATING) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING)) { XSetWindowBackground(Xdisplay, scrollbar.sa_win, PixColors[bgColor]); XClearWindow(Xdisplay, scrollbar.sa_win); } else { @@ -656,7 +656,7 @@ scrollbar_draw_trough(unsigned char image_state, unsigned char force_modes) } if (!image_mode_is(image_sb, MODE_MASK)) { /* Solid mode. Redraw every time since it's cheap. */ - if ((eterm_options & OPT_SCROLLBAR_FLOATING) || (scrollbar.type == SCROLLBAR_XTERM)) { + if ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING)) || (scrollbar.type == SCROLLBAR_XTERM)) { XSetWindowBackground(Xdisplay, scrollbar.win, PixColors[bgColor]); XClearWindow(Xdisplay, scrollbar.win); } else { @@ -695,7 +695,7 @@ scrollbar_init(int width, int height) /* Create the scrollbar trough window. It will be the parent to the other windows. */ scrollbar.win = - XCreateWindow(Xdisplay, TermWin.parent, ((eterm_options & OPT_SCROLLBAR_RIGHT) ? (width - scrollbar_trough_width()) : (0)), + XCreateWindow(Xdisplay, TermWin.parent, ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? (width - scrollbar_trough_width()) : (0)), bbar_calc_docked_height(BBAR_DOCKED_TOP), scrollbar_trough_width(), height, 0, Xdepth, InputOutput, CopyFromParent, CWOverrideRedirect | CWBackPixel | CWBorderPixel | CWColormap, &Attributes); XDefineCursor(Xdisplay, scrollbar.win, cursor); @@ -817,9 +817,9 @@ scrollbar_resize(int width, int height) D_SCROLLBAR(("scrollbar_resize(%d, %d)\n", width, height)); scrollbar_calc_size(width, height); D_SCROLLBAR((" -> XMoveResizeWindow(Xdisplay, 0x%08x, %d, y, %d, %d)\n", scrollbar.win, - ((eterm_options & OPT_SCROLLBAR_RIGHT) ? (width - scrollbar_trough_width()) : (0)), + ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? (width - scrollbar_trough_width()) : (0)), scrollbar_trough_width(), scrollbar_trough_height())); - XMoveResizeWindow(Xdisplay, scrollbar.win, ((eterm_options & OPT_SCROLLBAR_RIGHT) ? (width - scrollbar_trough_width()) : (0)), + XMoveResizeWindow(Xdisplay, scrollbar.win, ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? (width - scrollbar_trough_width()) : (0)), bbar_calc_docked_height(BBAR_DOCKED_TOP), scrollbar_trough_width(), scrollbar_trough_height()); scrollbar_draw_trough(IMAGE_STATE_CURRENT, MODE_MASK); scrollbar_reposition_and_draw(MODE_MASK); diff --git a/src/startup.c b/src/startup.c index 7ddacc4..e02f435 100644 --- a/src/startup.c +++ b/src/startup.c @@ -118,7 +118,7 @@ eterm_bootstrap(int argc, char *argv[]) } XSetErrorHandler((XErrorHandler) xerror_handler); - if (eterm_options & OPT_INSTALL) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_INSTALL)) { cmap = XCreateColormap(Xdisplay, Xroot, Xvisual, AllocNone); XInstallColormap(Xdisplay, cmap); } else { @@ -235,7 +235,7 @@ eterm_bootstrap(int argc, char *argv[]) /* Initialize the scrollbar */ scrollbar_init(szHint.width, szHint.height - bbar_calc_docked_height(BBAR_DOCKED)); - scrollbar_mapping((eterm_options & OPT_SCROLLBAR) && !((eterm_options & OPT_SCROLLBAR_POPUP) && !TermWin.focus)); + scrollbar_mapping((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) && !((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP)) && !TermWin.focus)); /* Initialize the menu subsystem. */ menu_init(); diff --git a/src/term.c b/src/term.c index 96f3788..79048a8 100644 --- a/src/term.c +++ b/src/term.c @@ -290,14 +290,14 @@ lookup_key(XEvent * ev) } if (len) { /* Only home for keypresses with length. */ - if (eterm_options & OPT_HOME_ON_INPUT) { + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_INPUT)) { TermWin.view_start = 0; } } /* This is a special mode that reports all extended keysyms (above 0xff00) to the application as escape sequences. Very few applications use it, but it can be a handy thing to have. */ - if ((eterm_options & OPT_REPORT_AS_KEYSYMS) && (keysym >= 0xff00)) { + if ((BITFIELD_IS_SET(vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS)) && (keysym >= 0xff00)) { len = sprintf((char *) kbuf, "\033[k%X;%X~", (unsigned int) (ev->xkey.state & 0xff), (unsigned int) (keysym & 0xff)); tt_write(kbuf, len); LK_RET(); @@ -468,7 +468,7 @@ lookup_key(XEvent * ev) kbuf[0] = (((PrivateModes & PrivMode_BackSpace) ? !(shft | ctrl) : (shft | ctrl)) ? '\b' : '\177'); #endif #ifdef MULTI_CHARSET - if ((eterm_options & OPT_MBYTE_CURSOR) && scr_multi2()) { + if ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_MBYTE_CURSOR)) && scr_multi2()) { memmove(kbuf + len, kbuf, len); len *= 2; } @@ -530,7 +530,7 @@ lookup_key(XEvent * ev) kbuf[2] = ("dacb"[keysym - XK_Left]); } #ifdef MULTI_CHARSET - if ((eterm_options & OPT_MBYTE_CURSOR) + if ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_MBYTE_CURSOR)) && ((keysym == XK_Left && scr_multi2()) || (keysym == XK_Right && scr_multi1()))) { memmove(kbuf + len, kbuf, len); @@ -624,7 +624,7 @@ lookup_key(XEvent * ev) #ifdef KS_DELETE len = strlen(strcpy(kbuf, KS_DELETE)); #ifdef MULTI_CHARSET - if ((eterm_options & OPT_MBYTE_CURSOR) && scr_multi1()) { + if ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_MBYTE_CURSOR)) && scr_multi1()) { memmove(kbuf + len, kbuf, len); len *= 2; } @@ -1541,16 +1541,16 @@ process_terminal_mode(int mode, int priv, unsigned int nargs, int arg[]) #endif case 1010: /* Scroll to bottom on TTY output */ - if (eterm_options & OPT_HOME_ON_OUTPUT) - eterm_options &= ~OPT_HOME_ON_OUTPUT; + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT)) + BITFIELD_CLEAR(vt_options, VT_OPTIONS_HOME_ON_OUTPUT); else - eterm_options |= OPT_HOME_ON_OUTPUT; + BITFIELD_SET(vt_options, VT_OPTIONS_HOME_ON_OUTPUT); break; case 1012: /* Scroll to bottom on TTY input */ - if (eterm_options & OPT_HOME_ON_INPUT) - eterm_options &= ~OPT_HOME_ON_INPUT; + if (BITFIELD_IS_SET(vt_options, VT_OPTIONS_HOME_ON_INPUT)) + BITFIELD_CLEAR(vt_options, VT_OPTIONS_HOME_ON_INPUT); else - eterm_options |= OPT_HOME_ON_INPUT; + BITFIELD_SET(vt_options, VT_OPTIONS_HOME_ON_INPUT); break; case 1047: /* Alternate screen & clear */ @@ -2249,18 +2249,18 @@ xterm_seq(int op, const char *str) break; case 11: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_SCROLLBAR_RIGHT); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT); scr_touch(); parent_resize(); break; case 12: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_SCROLLBAR_FLOATING); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_SCROLLBAR_FLOATING); scrollbar_reposition_and_always_draw(); break; case 13: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_SCROLLBAR_POPUP); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_SCROLLBAR_POPUP); break; case 14: nstr = (char *) strsep(&tnstr, ";"); @@ -2277,21 +2277,21 @@ xterm_seq(int op, const char *str) break; case 20: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_VISUAL_BELL); + OPT_SET_OR_TOGGLE(nstr, vt_options, VT_OPTIONS_VISUAL_BELL); break; #ifdef MAPALERT_OPTION case 21: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_MAP_ALERT); + OPT_SET_OR_TOGGLE(nstr, vt_options, VT_OPTIONS_MAP_ALERT); break; #endif case 22: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_XTERM_SELECT); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_XTERM_SELECT); break; case 23: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_SELECT_WHOLE_LINE); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_SELECT_WHOLE_LINE); break; case 24: nstr = (char *) strsep(&tnstr, ";"); @@ -2302,18 +2302,18 @@ xterm_seq(int op, const char *str) break; case 25: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_SELECT_TRAILING_SPACES); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_SELECT_TRAILING_SPACES); break; case 26: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_REPORT_AS_KEYSYMS); + OPT_SET_OR_TOGGLE(nstr, vt_options, VT_OPTIONS_REPORT_AS_KEYSYMS); break; case 27: nstr = (char *) strsep(&tnstr, ";"); - OPT_SET_OR_TOGGLE(nstr, eterm_options, OPT_NO_INPUT); + OPT_SET_OR_TOGGLE(nstr, eterm_options, ETERM_OPTIONS_NO_INPUT); wm_hints = XGetWMHints(Xdisplay, TermWin.parent); wm_hints->flags |= InputHint; - wm_hints->input = ((eterm_options & OPT_NO_INPUT) ? False : True); + wm_hints->input = ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_INPUT)) ? False : True); XSetWMHints(Xdisplay, TermWin.parent, wm_hints); XFree(wm_hints); break; diff --git a/src/windows.c b/src/windows.c index 9063664..b5e1722 100644 --- a/src/windows.c +++ b/src/windows.c @@ -365,7 +365,7 @@ Create_Windows(int argc, char *argv[]) unsigned int width = 0, height = 0; MWMHints mwmhints; - if (eterm_options & OPT_BORDERLESS) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS)) { prop = XInternAtom(Xdisplay, "_MOTIF_WM_INFO", True); if (prop == None) { print_warning("Window Manager does not support MWM hints. Bypassing window manager control for borderless window.\n"); @@ -380,7 +380,7 @@ Create_Windows(int argc, char *argv[]) } Attributes.colormap = cmap; - szHint.base_width = (2 * TermWin.internalBorder + ((eterm_options & OPT_SCROLLBAR) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0)); + szHint.base_width = (2 * TermWin.internalBorder + ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0)); szHint.base_height = (2 * TermWin.internalBorder) + bbar_calc_docked_height(BBAR_DOCKED); flags = (rs_geometry ? XParseGeometry(rs_geometry, &x, &y, &width, &height) : 0); @@ -434,8 +434,8 @@ Create_Windows(int argc, char *argv[]) classHint.res_name = (char *) rs_name; classHint.res_class = APL_NAME; wmHint.window_group = TermWin.parent; - wmHint.input = ((eterm_options & OPT_NO_INPUT) ? False : True); - wmHint.initial_state = (eterm_options & OPT_ICONIC ? IconicState : NormalState); + wmHint.input = ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_INPUT)) ? False : True); + wmHint.initial_state = (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_ICONIC) ? IconicState : NormalState); wmHint.window_group = TermWin.parent; wmHint.flags = (InputHint | StateHint | WindowGroupHint); #ifdef PIXMAP_SUPPORT @@ -457,12 +457,12 @@ Create_Windows(int argc, char *argv[]) cursor = XCreateFontCursor(Xdisplay, XC_left_ptr); /* the vt window */ - TermWin.x = (((eterm_options & OPT_SCROLLBAR) && !(eterm_options & OPT_SCROLLBAR_RIGHT)) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0); + TermWin.x = (((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR)) && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT))) ? (scrollbar_get_width() + (2 * scrollbar_get_shadow())) : 0); TermWin.y = bbar_calc_docked_height(BBAR_DOCKED_TOP); TermWin.vt = XCreateWindow(Xdisplay, TermWin.parent, TermWin.x, TermWin.y, szHint.width, szHint.height, 0, Xdepth, InputOutput, CopyFromParent, CWBackPixel | CWBorderPixel | CWOverrideRedirect | CWColormap, &Attributes); D_X11(("Created terminal window 0x%08x at %dx%d\n", TermWin.vt, TermWin.x, TermWin.y)); - if (!(background_is_pixmap()) && !(eterm_options & OPT_BORDERLESS)) { + if (!(background_is_pixmap()) && !(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_BORDERLESS))) { XSetWindowBackground(Xdisplay, TermWin.vt, PixColors[bgColor]); XClearWindow(Xdisplay, TermWin.vt); } @@ -499,7 +499,7 @@ Create_Windows(int argc, char *argv[]) TermWin.gc = LIBAST_X_CREATE_GC(GCForeground | GCBackground | GCFont | GCGraphicsExposures, &gcvalue); } - if (eterm_options & OPT_NO_CURSOR) { + if (BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_NO_CURSOR)) { scr_cursor_visible(0); } } @@ -510,7 +510,7 @@ resize_parent(unsigned int width, unsigned int height) { XWindowAttributes attr; - if (!(eterm_options & OPT_RESIZE_GRAVITY) || !XGetWindowAttributes(Xdisplay, TermWin.parent, &attr)) { + if (!(BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_RESIZE_GRAVITY)) || !XGetWindowAttributes(Xdisplay, TermWin.parent, &attr)) { XResizeWindow(Xdisplay, TermWin.parent, width, height); } else { Window junkwin; @@ -592,7 +592,7 @@ term_resize(int width, int height) width = TERM_WINDOW_FULL_WIDTH(); height = TERM_WINDOW_FULL_HEIGHT(); XMoveResizeWindow(Xdisplay, TermWin.vt, - ((eterm_options & OPT_SCROLLBAR_RIGHT) ? (0) : ((scrollbar_is_visible())? (scrollbar_trough_width()) : (0))), + ((BITFIELD_IS_SET(eterm_options, ETERM_OPTIONS_SCROLLBAR_RIGHT)) ? (0) : ((scrollbar_is_visible())? (scrollbar_trough_width()) : (0))), bbar_calc_docked_height(BBAR_DOCKED_TOP), width, height); if (width != last_width || height != last_height) { render_simage(images[image_bg].current, TermWin.vt, width, height, image_bg, 0);