--- rxvt-unicode/src/init.C 2014/09/05 19:02:53 1.337 +++ rxvt-unicode/src/init.C 2014/12/13 12:24:32 1.340 @@ -614,6 +614,8 @@ } #endif + // must be called after initialising the perl interpreter as it + // may invoke the `on_register_command' hook extract_keysym_resources (); /* @@ -748,6 +750,10 @@ this->argv = argv; this->envv = envv; + env = new char *[this->envv->size ()]; + for (int i = 0; i < this->envv->size (); i++) + env[i] = this->envv->at (i); + init2 (argv->size () - 1, argv->begin ()); } @@ -775,7 +781,7 @@ { SET_R (this); set_locale (""); - set_environ (envv); // a few things in X do not call setlocale :( + set_environ (env); // a few things in X do not call setlocale :( init_vars (); @@ -952,7 +958,7 @@ void rxvt_term::set_locale (const char *locale) { - set_environ (envv); + set_environ (env); free (this->locale); this->locale = setlocale (LC_CTYPE, locale); @@ -990,7 +996,7 @@ void rxvt_term::init_xlocale () { - set_environ (envv); + set_environ (env); #if USE_XIM if (!locale) @@ -1052,7 +1058,7 @@ /*----------------------------------------------------------------------*/ void -rxvt_term::get_colours () +rxvt_term::get_colors () { int i; @@ -1060,7 +1066,7 @@ pix_colors = pix_colors_focused; #endif - for (i = 0; i < (depth <= 2 ? 2 : NRS_COLORS); i++) + for (i = 0; i < NRS_COLORS; i++) { const char *name = rs[Rs_color + i]; @@ -1081,6 +1087,8 @@ if (!name) continue; + xcol.free (this); + if (!set_color (xcol, name)) { switch (i) @@ -1109,13 +1117,6 @@ rs[Rs_color + i] = name; } - if (depth <= 2) - { - if (!rs[Rs_color + Color_pointer_fg]) alias_color (Color_pointer_fg, Color_fg); - if (!rs[Rs_color + Color_pointer_bg]) alias_color (Color_pointer_bg, Color_bg); - if (!rs[Rs_color + Color_border] ) alias_color (Color_border, Color_fg); - } - /* * get scrollBar shadow colors * @@ -1123,35 +1124,25 @@ * from the fvwm window manager. */ #ifdef RXVT_SCROLLBAR - if (depth <= 2) - { - /* Monochrome */ - alias_color (Color_scroll, Color_fg); - alias_color (Color_topShadow, Color_bg); - alias_color (Color_bottomShadow, Color_bg); - } - else - { - pix_colors [Color_scroll].fade (this, 50, pix_colors [Color_bottomShadow]); + pix_colors [Color_scroll].fade (this, 50, pix_colors [Color_bottomShadow]); - rgba cscroll; - pix_colors [Color_scroll].get (cscroll); + rgba cscroll; + pix_colors [Color_scroll].get (cscroll); - /* topShadowColor */ - if (!pix_colors[Color_topShadow].set (this, - rgba ( - min ((int)rgba::MAX_CC, max (cscroll.r / 5, cscroll.r) * 7 / 5), - min ((int)rgba::MAX_CC, max (cscroll.g / 5, cscroll.g) * 7 / 5), - min ((int)rgba::MAX_CC, max (cscroll.b / 5, cscroll.b) * 7 / 5), - cscroll.a) - )) - alias_color (Color_topShadow, Color_White); - } + /* topShadowColor */ + if (!pix_colors[Color_topShadow].set (this, + rgba ( + min ((int)rgba::MAX_CC, max (cscroll.r / 5, cscroll.r) * 7 / 5), + min ((int)rgba::MAX_CC, max (cscroll.g / 5, cscroll.g) * 7 / 5), + min ((int)rgba::MAX_CC, max (cscroll.b / 5, cscroll.b) * 7 / 5), + cscroll.a) + )) + alias_color (Color_topShadow, Color_White); #endif #ifdef OFF_FOCUS_FADING - for (i = 0; i < (depth <= 2 ? 2 : NRS_COLORS); i++) - update_fade_color (i); + for (i = 0; i < NRS_COLORS; i++) + update_fade_color (i, true); #endif } @@ -1340,7 +1331,7 @@ dLocal (Display *, dpy); /* grab colors before netscape does */ - get_colours (); + get_colors (); if (!set_fonts ()) rxvt_fatal ("unable to load base fontset, please specify a valid one using -fn, aborting.\n"); @@ -1503,7 +1494,7 @@ #endif pointer_unblank (); - scr_recolour (); + scr_recolor (); } /*----------------------------------------------------------------------*/