--- rxvt-unicode/src/init.C 2003/12/18 07:31:19 1.15 +++ rxvt-unicode/src/init.C 2004/01/31 02:14:58 1.21 @@ -1,7 +1,7 @@ /*--------------------------------*-C-*---------------------------------* * File: init.c *----------------------------------------------------------------------* - * $Id: init.C,v 1.15 2003/12/18 07:31:19 pcg Exp $ + * $Id: init.C,v 1.21 2004/01/31 02:14:58 pcg Exp $ * * All portions of code are copyright by their respective author/s. * Copyright (c) 1992 John Bovey, University of Kent at Canterbury @@ -333,10 +333,11 @@ const char *const xa_names[NUM_XA] = { + "TEXT", "COMPOUND_TEXT", + "UTF8_STRING", "MULTIPLE", "TARGETS", - "TEXT", "TIMESTAMP", "VT_SELECTION", "INCR", @@ -526,7 +527,7 @@ if ((rs[Rs_display_name] = getenv ("DISPLAY")) == NULL) rs[Rs_display_name] = ":0"; - rxvt_get_options (this, r_argc, r_argv); + get_options (r_argc, r_argv); free (r_argv); #ifdef LOCAL_X_IS_UNIX @@ -547,7 +548,7 @@ exit (EXIT_FAILURE); } - rxvt_extract_resources (this, Xdisplay, rs[Rs_name]); + extract_resources (Xdisplay, rs[Rs_name]); /* * set any defaults not already set @@ -662,7 +663,7 @@ } #ifdef HAVE_SCROLLBARS - rxvt_setup_scrollbar (this, rs[Rs_scrollBar_align], rs[Rs_scrollstyle], + setup_scrollbar (rs[Rs_scrollBar_align], rs[Rs_scrollstyle], rs[Rs_scrollBar_thickness]); #endif @@ -801,7 +802,7 @@ { #if HAVE_XSETLOCALE || HAVE_SETLOCALE free (this->locale); - this->locale = strdup (setlocale (LC_CTYPE, "")); + this->locale = rxvt_strdup (setlocale (LC_CTYPE, "")); #endif #if HAVE_NL_LANGINFO free (codeset); @@ -871,7 +872,7 @@ meta_char = (Options & Opt_meta8 ? 0x80 : C0_ESC); #endif - rxvt_get_ourmods (this); + get_ourmods (); if (!(Options & Opt_scrollTtyOutput)) PrivateModes |= PrivMode_TtyOutputInh; @@ -886,12 +887,12 @@ #endif /* add value for scrollBar */ - if (scrollbar_visible (this)) + if (scrollbar_visible ()) { PrivateModes |= PrivMode_scrollBar; SavedModes |= PrivMode_scrollBar; } - if (menubar_visible (this)) + if (menubar_visible ()) { PrivateModes |= PrivMode_menuBar; SavedModes |= PrivMode_menuBar; @@ -917,9 +918,8 @@ } /*----------------------------------------------------------------------*/ -/* INTPROTO */ void -rxvt_Get_Colours (pR) +rxvt_term::Get_Colours () { int i; @@ -927,24 +927,24 @@ { rxvt_color xcol; - if (!R->rs[Rs_color + i]) + if (!rs[Rs_color + i]) continue; - if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) + if (!rXParseAllocColor (&xcol, rs[Rs_color + i])) { #ifndef XTERM_REVERSE_VIDEO - if (i < 2 && (R->Options & Opt_reverseVideo)) + if (i < 2 && (Options & Opt_reverseVideo)) { - R->rs[Rs_color + i] = def_colorName[!i]; + rs[Rs_color + i] = def_colorName[!i]; } else #endif - R->rs[Rs_color + i] = def_colorName[i]; + rs[Rs_color + i] = def_colorName[i]; - if (!R->rs[Rs_color + i]) + if (!rs[Rs_color + i]) continue; - if (!rxvt_rXParseAllocColor(aR_ &xcol, R->rs[Rs_color + i])) + if (!rXParseAllocColor (&xcol, rs[Rs_color + i])) { switch (i) { @@ -957,27 +957,27 @@ break; #ifndef NO_CURSORCOLOR case Color_cursor2: - xcol = R->PixColors[Color_fg]; + xcol = PixColors[Color_fg]; break; #endif /* ! NO_CURSORCOLOR */ case Color_pointer: - xcol = R->PixColors[Color_fg]; + xcol = PixColors[Color_fg]; break; default: - xcol = R->PixColors[Color_bg]; /* None */ + xcol = PixColors[Color_bg]; /* None */ break; } } } - R->PixColors[i] = xcol; - SET_PIXCOLOR (R, i); + PixColors[i] = xcol; + SET_PIXCOLOR (i); } - if (XDEPTH <= 2 || !R->rs[Rs_color + Color_pointer]) - R->PixColors[Color_pointer] = R->PixColors[Color_fg]; - if (XDEPTH <= 2 || !R->rs[Rs_color + Color_border]) - R->PixColors[Color_border] = R->PixColors[Color_fg]; + if (XDEPTH <= 2 || !rs[Rs_color + Color_pointer]) + PixColors[Color_pointer] = PixColors[Color_fg]; + if (XDEPTH <= 2 || !rs[Rs_color + Color_border]) + PixColors[Color_border] = PixColors[Color_fg]; /* * get scrollBar/menuBar shadow colors @@ -989,9 +989,9 @@ if (XDEPTH <= 2) { /* Monochrome */ - R->PixColors[Color_scroll] = R->PixColors[Color_fg]; - R->PixColors[Color_topShadow] = R->PixColors[Color_bg]; - R->PixColors[Color_bottomShadow] = R->PixColors[Color_bg]; + PixColors[Color_scroll] = PixColors[Color_fg]; + PixColors[Color_topShadow] = PixColors[Color_bg]; + PixColors[Color_bottomShadow] = PixColors[Color_bg]; } else { @@ -1000,33 +1000,33 @@ * xcol[1] == top shadow * xcol[2] == bot shadow */ - xcol[1] = R->PixColors[Color_scroll]; + xcol[1] = PixColors[Color_scroll]; # ifdef PREFER_24BIT - xcol[0].set (R, 65535, 65535, 65535); - /* XFreeColors(R->Xdisplay, XCMAP, &(xcol[0].pixel), 1, ~0); */ + xcol[0].set (this, 65535, 65535, 65535); + /* XFreeColors(Xdisplay, XCMAP, &(xcol[0].pixel), 1, ~0); */ # else - xcol[0].set (WhitePixel(R->Xdisplay, Xscreen)); + xcol[0].set (this, WhitePixel (Xdisplay, Xscreen)); # endif unsigned short pr1, pg1, pb1, pr0, pg0, pb0; - xcol[0].get (R, pr0, pg0, pb0); - xcol[1].get (R, pr1, pg1, pb1); + xcol[0].get (this, pr0, pg0, pb0); + xcol[1].get (this, pr1, pg1, pb1); /* bottomShadowColor */ - if (!xcol[2].set (aR_ pr1 / 2, pg1 / 2, pb1 / 2)) - xcol[2] = R->PixColors[Color_Black]; + if (!xcol[2].set (this, pr1 / 2, pg1 / 2, pb1 / 2)) + xcol[2] = PixColors[Color_Black]; - R->PixColors[Color_bottomShadow] = xcol[2]; + PixColors[Color_bottomShadow] = xcol[2]; /* topShadowColor */ - if (!xcol[1].set (aR_ + if (!xcol[1].set (this, min (pr0, max (pr0 / 5, pr1) * 7 / 5), min (pg0, max (pg0 / 5, pg1) * 7 / 5), min (pb0, max (pb0 / 5, pb1) * 7 / 5))) - xcol[1] = R->PixColors[Color_White]; + xcol[1] = PixColors[Color_White]; - R->PixColors[Color_topShadow] = xcol[1]; + PixColors[Color_topShadow] = xcol[1]; } #endif /* KEEP_SCROLLCOLOR */ } @@ -1044,12 +1044,11 @@ { /* bright colors */ i -= 8; #ifndef NO_BRIGHTCOLOR - rs[Rs_color + idx] = rs[Rs_color + minBrightCOLOR + i]; return; #endif - } + if (i >= 0 && i <= 7) /* normal colors */ rs[Rs_color + idx] = rs[Rs_color + minCOLOR + i]; } @@ -1060,9 +1059,8 @@ * Probe the modifier keymap to get the Meta (Alt) and Num_Lock settings * Use resource ``modifier'' to override the Meta modifier */ -/* INTPROTO */ void -rxvt_get_ourmods(pR) +rxvt_term::get_ourmods () { int i, j, k; int requestedmeta, realmeta, realalt; @@ -1075,12 +1073,12 @@ }; requestedmeta = realmeta = realalt = 0; - rsmod = R->rs[Rs_modifier]; + rsmod = rs[Rs_modifier]; if (rsmod && STRCASECMP(rsmod, "mod1") >= 0 && STRCASECMP(rsmod, "mod5") <= 0) requestedmeta = rsmod[3] - '0'; - map = XGetModifierMapping(R->Xdisplay); + map = XGetModifierMapping(Xdisplay); kc = map->modifiermap; for (i = 1; i < 6; i++) { @@ -1089,10 +1087,10 @@ { if (kc[k] == 0) break; - switch (XKeycodeToKeysym(R->Xdisplay, kc[k], 0)) + switch (XKeycodeToKeysym(Xdisplay, kc[k], 0)) { case XK_Num_Lock: - R->ModNumLockMask = modmasks[i - 1]; + ModNumLockMask = modmasks[i - 1]; /* FALLTHROUGH */ default: continue; /* for(;;) */ @@ -1124,106 +1122,104 @@ : (realmeta ? realmeta : (realalt ? realalt : 0))); if (i) - R->ModMetaMask = modmasks[i - 1]; + ModMetaMask = modmasks[i - 1]; } /*----------------------------------------------------------------------*/ /* rxvt_Create_Windows() - Open and map the window */ -/* EXTPROTO */ void -rxvt_Create_Windows(pR_ int argc, const char *const *argv) +rxvt_term::create_windows (int argc, const char *const *argv) { XClassHint classHint; XWMHints wmHint; XGCValues gcvalue; long vt_emask; -#ifdef PREFER_24BIT - XSetWindowAttributes attributes; XWindowAttributes gattr; - XCMAP = DefaultColormap(R->Xdisplay, Xscreen); - XVISUAL = DefaultVisual(R->Xdisplay, Xscreen); + Xcmap = DefaultColormap (Xdisplay, Xscreen); + Xvisual = DefaultVisual (Xdisplay, Xscreen); + Xscreen = DefaultScreen (Xdisplay); - if (R->Options & Opt_transparent) + if (Options & Opt_transparent) { - XGetWindowAttributes(R->Xdisplay, RootWindow(R->Xdisplay, Xscreen), - &gattr); - XDEPTH = gattr.depth; + XGetWindowAttributes (Xdisplay, RootWindow(Xdisplay, Xscreen), &gattr); + Xdepth = gattr.depth; } else { - XDEPTH = DefaultDepth(R->Xdisplay, Xscreen); + Xdepth = DefaultDepth(Xdisplay, Xscreen); +#ifdef PREFER_24BIT /* * If depth is not 24, look for a 24bit visual. */ - if (XDEPTH != 24) + if (Xdepth != 24) { XVisualInfo vinfo; - if (XMatchVisualInfo(R->Xdisplay, Xscreen, 24, TrueColor, &vinfo)) + if (XMatchVisualInfo(Xdisplay, Xscreen, 24, TrueColor, &vinfo)) { - XDEPTH = 24; - XVISUAL = vinfo.visual; - XCMAP = XCreateColormap(R->Xdisplay, - RootWindow(R->Xdisplay, Xscreen), - XVISUAL, AllocNone); + Xdepth = 24; + Xvisual = vinfo.visual; + Xcmap = XCreateColormap(Xdisplay, + RootWindow(Xdisplay, Xscreen), + Xvisual, AllocNone); } } - } #endif + } /* grab colors before netscape does */ - rxvt_Get_Colours(aR); + Get_Colours (); - rxvt_change_font(aR_ 1, NULL); - rxvt_window_calc(aR_ 0, 0); - R->old_width = R->szHint.width; - R->old_height = R->szHint.height; + change_font (1, NULL); + window_calc (0, 0); + old_width = szHint.width; + old_height = szHint.height; /* parent window - reverse video so we can see placement errors * sub-window placement & size in rxvt_resize_subwindows() */ #ifdef PREFER_24BIT + XSetWindowAttributes attributes; - attributes.background_pixel = R->PixColors[Color_fg]; - attributes.border_pixel = R->PixColors[Color_border]; - attributes.colormap = XCMAP; - R->TermWin.parent[0] = XCreateWindow(R->Xdisplay, Xroot, - R->szHint.x, R->szHint.y, - R->szHint.width, R->szHint.height, - R->TermWin.ext_bwidth, - XDEPTH, InputOutput, - XVISUAL, + attributes.background_pixel = PixColors[Color_fg]; + attributes.border_pixel = PixColors[Color_border]; + attributes.colormap = Xcmap; + TermWin.parent[0] = XCreateWindow (Xdisplay, DefaultRootWindow (Xdisplay), + szHint.x, szHint.y, + szHint.width, szHint.height, + TermWin.ext_bwidth, + Xdepth, InputOutput, + Xvisual, CWBackPixel | CWBorderPixel | CWColormap, &attributes); #else - - R->TermWin.parent[0] = XCreateSimpleWindow(R->Xdisplay, Xroot, - R->szHint.x, R->szHint.y, - R->szHint.width, - R->szHint.height, - R->TermWin.ext_bwidth, - R->PixColors[Color_border], - R->PixColors[Color_fg]); + TermWin.parent[0] = XCreateSimpleWindow (Xdisplay, DefaultRootWindow (Xdisplay), + szHint.x, szHint.y, + szHint.width, + szHint.height, + TermWin.ext_bwidth, + PixColors[Color_border], + PixColors[Color_fg]); #endif - rxvt_xterm_seq(aR_ XTerm_title, R->rs[Rs_title], CHAR_ST); - rxvt_xterm_seq(aR_ XTerm_iconName, R->rs[Rs_iconName], CHAR_ST); + xterm_seq (XTerm_title, rs[Rs_title], CHAR_ST); + xterm_seq (XTerm_iconName, rs[Rs_iconName], CHAR_ST); - classHint.res_name = (char *)R->rs[Rs_name]; + classHint.res_name = (char *)rs[Rs_name]; classHint.res_class = (char *)APL_CLASS; wmHint.flags = (InputHint | StateHint | WindowGroupHint); wmHint.input = True; - wmHint.initial_state = (R->Options & Opt_iconic ? IconicState + wmHint.initial_state = (Options & Opt_iconic ? IconicState : NormalState); - wmHint.window_group = R->TermWin.parent[0]; + wmHint.window_group = TermWin.parent[0]; - XSetWMProperties(R->Xdisplay, R->TermWin.parent[0], NULL, NULL, - (char **)argv, argc, &R->szHint, &wmHint, &classHint); - XSelectInput(R->Xdisplay, R->TermWin.parent[0], + XSetWMProperties(Xdisplay, TermWin.parent[0], NULL, NULL, + (char **)argv, argc, &szHint, &wmHint, &classHint); + XSelectInput(Xdisplay, TermWin.parent[0], (KeyPressMask #if defined(MOUSE_WHEEL) && defined(MOUSE_SLIP_WHEELING) | KeyReleaseMask @@ -1232,11 +1228,11 @@ | StructureNotifyMask)); /* vt cursor: Black-on-White is standard, but this is more popular */ - R->TermWin_cursor = XCreateFontCursor(R->Xdisplay, XC_xterm); + TermWin_cursor = XCreateFontCursor(Xdisplay, XC_xterm); #if defined(HAVE_SCROLLBARS) || defined(MENUBAR) /* cursor (menuBar/scrollBar): Black-on-White */ - R->leftptr_cursor = XCreateFontCursor(R->Xdisplay, XC_left_ptr); + leftptr_cursor = XCreateFontCursor(Xdisplay, XC_left_ptr); #endif #ifdef POINTER_BLANK @@ -1246,97 +1242,96 @@ blackcolour.red = 0; blackcolour.green = 0; blackcolour.blue = 0; - Font f = XLoadFont (R->Xdisplay, "fixed"); - R->blank_cursor = XCreateGlyphCursor (R->Xdisplay, f, f, ' ', ' ', + Font f = XLoadFont (Xdisplay, "fixed"); + blank_cursor = XCreateGlyphCursor (Xdisplay, f, f, ' ', ' ', &blackcolour, &blackcolour); - XUnloadFont (R->Xdisplay, f); + XUnloadFont (Xdisplay, f); } #endif /* the vt window */ - R->TermWin.vt = XCreateSimpleWindow(R->Xdisplay, R->TermWin.parent[0], - R->window_vt_x, R->window_vt_y, + TermWin.vt = XCreateSimpleWindow(Xdisplay, TermWin.parent[0], + window_vt_x, window_vt_y, TermWin_TotalWidth(), TermWin_TotalHeight(), 0, - R->PixColors[Color_fg], - R->PixColors[Color_bg]); + PixColors[Color_fg], + PixColors[Color_bg]); #ifdef DEBUG_X - - XStoreName(R->Xdisplay, R->TermWin.vt, "vt window"); + XStoreName(Xdisplay, TermWin.vt, "vt window"); #endif - R->pointer_unblank (); - vt_emask = (ExposureMask | ButtonPressMask | ButtonReleaseMask | PropertyChangeMask); + #ifdef POINTER_BLANK + pointer_unblank (); - if ((R->Options & Opt_pointerBlank)) + if ((Options & Opt_pointerBlank)) vt_emask |= PointerMotionMask; else #endif - vt_emask |= (Button1MotionMask | Button3MotionMask); - XSelectInput(R->Xdisplay, R->TermWin.vt, vt_emask); + + XSelectInput(Xdisplay, TermWin.vt, vt_emask); #if defined(MENUBAR) && (MENUBAR_MAX > 1) if (menuBar_height()) { - R->menuBar.win = XCreateSimpleWindow(R->Xdisplay, R->TermWin.parent[0], - R->window_vt_x, 0, + menuBar.win = XCreateSimpleWindow(Xdisplay, TermWin.parent[0], + window_vt_x, 0, TermWin_TotalWidth(), menuBar_TotalHeight(), 0, - R->PixColors[Color_fg], - R->PixColors[Color_scroll]); + PixColors[Color_fg], + PixColors[Color_scroll]); #ifdef DEBUG_X - XStoreName(R->Xdisplay, R->menuBar.win, "menubar"); + XStoreName(Xdisplay, menuBar.win, "menubar"); #endif - XDefineCursor(R->Xdisplay, R->menuBar.win, R->pointer_leftptr); - XSelectInput(R->Xdisplay, R->menuBar.win, + XDefineCursor(Xdisplay, menuBar.win, pointer_leftptr); + XSelectInput(Xdisplay, menuBar.win, (ExposureMask | ButtonPressMask | ButtonReleaseMask | Button1MotionMask)); } #endif #ifdef XPM_BACKGROUND - if (R->rs[Rs_backgroundPixmap] != NULL - && !(R->Options & Opt_transparent)) + if (rs[Rs_backgroundPixmap] != NULL + && !(Options & Opt_transparent)) { - const char *p = R->rs[Rs_backgroundPixmap]; + const char *p = rs[Rs_backgroundPixmap]; if ((p = STRCHR(p, ';')) != NULL) { p++; - rxvt_scale_pixmap(aR_ p); + scale_pixmap (p); } - rxvt_set_bgPixmap(aR_ R->rs[Rs_backgroundPixmap]); - rxvt_scr_touch(aR_ True); + set_bgPixmap (rs[Rs_backgroundPixmap]); + scr_touch (True); } #endif /* graphics context for the vt window */ - gcvalue.foreground = R->PixColors[Color_fg]; - gcvalue.background = R->PixColors[Color_bg]; + gcvalue.foreground = PixColors[Color_fg]; + gcvalue.background = PixColors[Color_bg]; gcvalue.graphics_exposures = 1; - R->TermWin.gc = XCreateGC(R->Xdisplay, R->TermWin.vt, + TermWin.gc = XCreateGC(Xdisplay, TermWin.vt, GCForeground | GCBackground | GCGraphicsExposures, &gcvalue); #if defined(MENUBAR) || defined(RXVT_SCROLLBAR) - gcvalue.foreground = R->PixColors[Color_topShadow]; - R->topShadowGC = XCreateGC(R->Xdisplay, R->TermWin.vt, + gcvalue.foreground = PixColors[Color_topShadow]; + topShadowGC = XCreateGC(Xdisplay, TermWin.vt, GCForeground, &gcvalue); - gcvalue.foreground = R->PixColors[Color_bottomShadow]; - R->botShadowGC = XCreateGC(R->Xdisplay, R->TermWin.vt, + gcvalue.foreground = PixColors[Color_bottomShadow]; + botShadowGC = XCreateGC(Xdisplay, TermWin.vt, GCForeground, &gcvalue); - gcvalue.foreground = R->PixColors[(XDEPTH <= 2 ? Color_fg + gcvalue.foreground = PixColors[(XDEPTH <= 2 ? Color_fg : Color_scroll)]; - R->scrollbarGC = XCreateGC(R->Xdisplay, R->TermWin.vt, + scrollbarGC = XCreateGC(Xdisplay, TermWin.vt, GCForeground, &gcvalue); #endif } @@ -1374,7 +1369,7 @@ if (tty_fd < 0) { #ifndef NO_SETOWNER_TTYDEV - rxvt_privileged_ttydev (aR_ SAVE); + privileged_ttydev (SAVE); #endif if ((tty_fd = rxvt_get_tty (ttydev)) < 0) @@ -1431,7 +1426,10 @@ dup2 (tty_fd, STDIN_FILENO); #endif - rxvt_privileged_utmp (this, SAVE); +#ifdef UTMP_SUPPORT + privileged_utmp (SAVE); +#endif + #if defined(HAVE_STRUCT_UTMP) && defined(HAVE_TTYSLOT) dup2 (fdstdin, STDIN_FILENO); @@ -1604,7 +1602,7 @@ * GET TTY CURRENT STATE * * ------------------------------------------------------------------------- */ /* rxvt_get_ttymode() */ -/* INTPROTO */ +/* EXTPROTO */ void rxvt_get_ttymode(ttymode_t *tio, int erase) {