--- rxvt-unicode/src/init.C 2004/03/22 17:18:25 1.45 +++ rxvt-unicode/src/init.C 2004/05/09 18:19:49 1.51 @@ -1,5 +1,5 @@ /*--------------------------------*-C-*---------------------------------* - * File: init.c + * File: init.C *----------------------------------------------------------------------* * * All portions of code are copyright by their respective author/s. @@ -315,7 +315,8 @@ COLOR_CURSOR_BACKGROUND, COLOR_CURSOR_FOREGROUND, #endif /* ! NO_CURSORCOLOR */ - NULL, /* Color_pointer */ + NULL, /* Color_pointer_fg */ + NULL, /* Color_pointer_bg */ NULL, /* Color_border */ #ifndef NO_BOLD_UNDERLINE_REVERSE NULL, /* Color_BD */ @@ -325,6 +326,9 @@ #ifdef OPTION_HC NULL, #endif +#if TINTING + NULL, +#endif #ifdef KEEP_SCROLLCOLOR COLOR_SCROLLBAR, COLOR_SCROLLTROUGH, @@ -646,7 +650,8 @@ color_aliases (Color_cursor); color_aliases (Color_cursor2); #endif /* NO_CURSORCOLOR */ - color_aliases (Color_pointer); + color_aliases (Color_pointer_fg); + color_aliases (Color_pointer_bg); color_aliases (Color_border); #ifndef NO_BOLD_UNDERLINE_REVERSE color_aliases (Color_BD); @@ -896,7 +901,7 @@ xcol = PixColors[Color_fg]; break; #endif /* ! NO_CURSORCOLOR */ - case Color_pointer: + case Color_pointer_fg: xcol = PixColors[Color_fg]; break; default: @@ -910,10 +915,12 @@ SET_PIXCOLOR (i); } - 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]; + if (XDEPTH <= 2) + { + if (!rs[Rs_color + Color_pointer_fg]) PixColors[Color_pointer_fg] = PixColors[Color_fg]; + if (!rs[Rs_color + Color_pointer_bg]) PixColors[Color_pointer_bg] = PixColors[Color_bg]; + if (!rs[Rs_color + Color_border] ) PixColors[Color_border] = PixColors[Color_fg]; + } /* * get scrollBar/menuBar shadow colors @@ -1067,11 +1074,11 @@ void rxvt_term::create_windows (int argc, const char *const *argv) { - XClassHint classHint; - XWMHints wmHint; - XGCValues gcvalue; - long vt_emask; - + XClassHint classHint; + XWMHints wmHint; + XGCValues gcvalue; + long vt_emask; + XSetWindowAttributes attributes; XWindowAttributes gattr; if (Options & Opt_transparent) @@ -1094,14 +1101,10 @@ 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 () - */ + /* sub-window placement & size in rxvt_resize_subwindows () */ #ifdef PREFER_24BIT - XSetWindowAttributes attributes; - - attributes.background_pixel = PixColors[Color_fg]; + attributes.background_pixel = PixColors[Color_bg]; attributes.border_pixel = PixColors[Color_border]; attributes.colormap = display->cmap; TermWin.parent[0] = XCreateWindow (display->display, DefaultRootWindow (display->display), @@ -1110,31 +1113,36 @@ TermWin.ext_bwidth, display->depth, InputOutput, display->visual, - CWBackPixel | CWBorderPixel | CWColormap, &attributes); + CWColormap | CWBackPixel | CWBorderPixel, &attributes); #else TermWin.parent[0] = XCreateSimpleWindow (display->display, DefaultRootWindow (display->display), - szHint.x, szHint.y, - szHint.width, - szHint.height, - TermWin.ext_bwidth, - PixColors[Color_border], - PixColors[Color_fg]); + szHint.x, szHint.y, + szHint.width, szHint.height, + TermWin.ext_bwidth, + PixColors[Color_border], + PixColors[Color_bg]); #endif - xterm_seq (XTerm_title, rs[Rs_title], CHAR_ST); - xterm_seq (XTerm_iconName, rs[Rs_iconName], CHAR_ST); + process_xterm_seq (XTerm_title, rs[Rs_title], CHAR_ST); + process_xterm_seq (XTerm_iconName, rs[Rs_iconName], CHAR_ST); classHint.res_name = (char *)rs[Rs_name]; classHint.res_class = (char *)RESCLASS; - wmHint.flags = (InputHint | StateHint | WindowGroupHint); + wmHint.flags = InputHint | StateHint | WindowGroupHint; wmHint.input = True; - wmHint.initial_state = (Options & Opt_iconic ? IconicState - : NormalState); + wmHint.initial_state = Options & Opt_iconic ? IconicState : NormalState; wmHint.window_group = TermWin.parent[0]; XSetWMProperties (display->display, TermWin.parent[0], NULL, NULL, - (char **)argv, argc, &szHint, &wmHint, &classHint); + (char **)argv, argc, &szHint, &wmHint, &classHint); + +#ifndef NO_FRILLS + long pid = getpid (); + XChangeProperty (display->display, TermWin.parent[0], + display->atom ("_NET_WM_PID"), XA_CARDINAL, 32, + PropModeReplace, (unsigned char *)&pid, 1); +#endif XSelectInput (display->display, TermWin.parent[0], KeyPressMask @@ -1179,17 +1187,19 @@ XStoreName (display->display, TermWin.vt, "vt window"); #endif - vt_emask = (ExposureMask | ButtonPressMask | ButtonReleaseMask - | PropertyChangeMask); + attributes.bit_gravity = NorthWestGravity; + XChangeWindowAttributes (display->display, TermWin.vt, CWBitGravity, &attributes); + + vt_emask = ExposureMask | ButtonPressMask | ButtonReleaseMask | PropertyChangeMask; #ifdef POINTER_BLANK pointer_unblank (); - if ((Options & Opt_pointerBlank)) + if (Options & Opt_pointerBlank) vt_emask |= PointerMotionMask; else #endif - vt_emask |= (Button1MotionMask | Button3MotionMask); + vt_emask |= Button1MotionMask | Button3MotionMask; XSelectInput (display->display, TermWin.vt, vt_emask); vt_ev.start (display, TermWin.vt);