--- rxvt-unicode/src/main.C 2006/01/12 00:11:13 1.174 +++ rxvt-unicode/src/main.C 2006/01/17 06:06:42 1.181 @@ -163,9 +163,6 @@ #ifdef HAVE_SCROLLBARS scrollbar_ev (this, &rxvt_term::x_cb), #endif -#ifdef MENUBAR - menubar_ev (this, &rxvt_term::x_cb), -#endif #ifdef CURSOR_BLINK cursor_blink_ev (this, &rxvt_term::cursor_blink_cb), #endif @@ -245,9 +242,6 @@ #ifdef USE_XIM im_destroy (); #endif -#ifdef MENUBAR - if (menubarGC) XFreeGC (disp, menubarGC); -#endif #ifdef XTERM_SCROLLBAR if (xscrollbarGC) XFreeGC (disp, xscrollbarGC); if (ShadowGC) XFreeGC (disp, ShadowGC); @@ -267,18 +261,13 @@ if (upArrowHi) XFreePixmap (disp, upArrowHi); if (downArrowHi) XFreePixmap (disp, downArrowHi); #endif -#if defined(MENUBAR) || defined(RXVT_SCROLLBAR) +#ifdef RXVT_SCROLLBAR if (topShadowGC) XFreeGC (disp, topShadowGC); if (botShadowGC) XFreeGC (disp, botShadowGC); if (scrollbarGC) XFreeGC (disp, scrollbarGC); #endif if (gc) XFreeGC (disp, gc); -#if defined(MENUBAR) && (MENUBAR_MAX > 1) - delete menuBar.drawable; - //if (menuBar.win) - // XDestroyWindow (disp, menuBar.win); -#endif delete drawable; // destroy all windows if (parent[0]) @@ -344,9 +333,6 @@ #if HAVE_SCROLLBARS scrollbar_ev.stop (display); #endif -#if MENUBAR - menubar_ev.stop (display); -#endif #if TRANSPARENT rootwin_ev.stop (display); #endif @@ -379,7 +365,7 @@ void rxvt_term::destroy_cb (time_watcher &w) { - SET_R (this); + make_current (); delete this; } @@ -480,33 +466,24 @@ rxvt_term::init (int argc, const char *const *argv) { SET_R (this); + set_locale (""); + set_environ (envv); // few things in X do not call setlocale :( - const char **cmd_argv; - - { - TEMP_ENV; // few things in X do not call setlocale :( - - set_locale (""); - - if (!init_vars ()) - return false; + if (!init_vars ()) + return false; - init_secondary (); + init_secondary (); - cmd_argv = init_resources (argc, argv); + const char **cmd_argv = init_resources (argc, argv); #ifdef KEYSYM_RESOURCE - keyboard->register_done (); + keyboard->register_done (); #endif -#if MENUBAR_MAX - menubar_read (rs[Rs_menu]); -#endif #ifdef HAVE_SCROLLBARS - if (OPTION (Opt_scrollBar)) - scrollBar.setIdle (); /* set existence for size calculations */ + if (OPTION (Opt_scrollBar)) + scrollBar.setIdle (); /* set existence for size calculations */ #endif - } #if ENABLE_PERL if (!rs[Rs_perl_ext_1]) @@ -529,60 +506,51 @@ } } #endif - rxvt_perl.init (); - setlocale (LC_CTYPE, curlocale); // perl destroys this info + rxvt_perl.init (this); HOOK_INVOKE ((this, HOOK_INIT, DT_END)); } #endif - { - TEMP_ENV; - - create_windows (argc, argv); + create_windows (argc, argv); - dDisp; + dDisp; - init_xlocale (); + init_xlocale (); - scr_reset (); // initialize screen + scr_reset (); // initialize screen #if 0 - XSynchronize (disp, True); + XSynchronize (disp, True); #endif #ifdef HAVE_SCROLLBARS - if (OPTION (Opt_scrollBar)) - resize_scrollbar (); /* create and map scrollbar */ -#endif -#if (MENUBAR_MAX) - if (menubar_visible ()) - XMapWindow (disp, menuBar.win); + if (OPTION (Opt_scrollBar)) + resize_scrollbar (); /* create and map scrollbar */ #endif #ifdef TRANSPARENT - if (OPTION (Opt_transparent)) - { - XSelectInput (disp, display->root, PropertyChangeMask); - check_our_parents (); - rootwin_ev.start (display, display->root); - } + if (OPTION (Opt_transparent)) + { + XSelectInput (disp, display->root, PropertyChangeMask); + check_our_parents (); + rootwin_ev.start (display, display->root); + } #endif - XMapWindow (disp, vt); - XMapWindow (disp, parent[0]); + XMapWindow (disp, vt); + XMapWindow (disp, parent[0]); - set_colorfgbg (); + set_colorfgbg (); - init_command (cmd_argv); + init_command (cmd_argv); - free (cmd_argv); + free (cmd_argv); - if (pty.pty >= 0) - pty_ev.start (pty.pty, EVENT_READ); + if (pty.pty >= 0) + pty_ev.start (pty.pty, EVENT_READ); - check_ev.start (); + check_ev.start (); - HOOK_INVOKE ((this, HOOK_START, DT_END)); - } + HOOK_INVOKE ((this, HOOK_START, DT_END)); return true; } @@ -627,9 +595,13 @@ } } sig_handlers; +char **rxvt_environ; // startup environment + void rxvt_init () { + rxvt_environ = environ; + /* * Save and then give up any super-user privileges * If we need privileges in any area then we must specifically request it. @@ -754,9 +726,9 @@ rxvt_privileges (RESTORE); if (action == SAVE) - makeutent (pty.name, rs[Rs_display_name]); + session.login (pty.name, cmd_pid, OPTION (Opt_loginShell), rs[Rs_display_name]); else - cleanutent (); + session.logout (); rxvt_privileges (IGNORE); } @@ -771,7 +743,7 @@ rxvt_term::window_calc (unsigned int newwidth, unsigned int newheight) { short recalc_x, recalc_y; - int x, y, sb_w, mb_h, flags; + int x, y, sb_w, flags; unsigned int w, h; unsigned int max_width, max_height; dDisp; @@ -842,10 +814,10 @@ szHint.base_width = szHint.base_height = 2 * int_bwidth; - sb_w = mb_h = 0; + sb_w = 0; window_vt_x = window_vt_y = int_bwidth; - if (scrollbar_visible ()) + if (scrollBar.state) { sb_w = scrollbar_TotalWidth (); szHint.base_width += sb_w; @@ -853,13 +825,6 @@ window_vt_x += sb_w; } - if (menubar_visible ()) - { - mb_h = menuBar_TotalHeight (); - szHint.base_height += mb_h; - window_vt_y += mb_h; - } - szHint.width_inc = fwidth; szHint.height_inc = fheight; szHint.min_width = szHint.base_width + szHint.width_inc; @@ -887,7 +852,7 @@ szHint.height = szHint.base_height + height; } - if (scrollbar_visible () && OPTION (Opt_scrollBar_right)) + if (scrollBar.state && OPTION (Opt_scrollBar_right)) window_sb_x = szHint.width - sb_w; if (recalc_x) @@ -1252,7 +1217,7 @@ if (fix_screen || newwidth != old_width || newheight != old_height) { - if (scrollbar_visible ()) + if (scrollBar.state) { XMoveResizeWindow (disp, scrollBar.win, window_sb_x, 0, @@ -1260,11 +1225,6 @@ resize_scrollbar (); } - if (menubar_visible ()) - XMoveResizeWindow (disp, menuBar.win, - window_vt_x, 0, - width, menuBar_TotalHeight ()); - XMoveResizeWindow (disp, vt, window_vt_x, window_vt_y, width, height); @@ -1458,7 +1418,7 @@ char **s; XIMStyles *xim_styles; - TEMP_ENV; + set_environ (envv); if (! ((p = XSetLocaleModifiers (modifiers)) && *p)) return false; @@ -1634,7 +1594,7 @@ char **s; char buf[IMBUFSIZ]; - SET_R (this); + make_current (); im_destroy ();