ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/main.C
(Generate patch)

Comparing rxvt-unicode/src/main.C (file contents):
Revision 1.222 by root, Sun Feb 12 09:44:04 2006 UTC vs.
Revision 1.232 by root, Tue May 1 21:30:01 2007 UTC

1/*--------------------------------*-C-*---------------------------------* 1/*----------------------------------------------------------------------*
2 * File: main.C 2 * File: main.C
3 *----------------------------------------------------------------------* 3 *----------------------------------------------------------------------*
4 * 4 *
5 * All portions of code are copyright by their respective author/s. 5 * All portions of code are copyright by their respective author/s.
6 * Copyright (c) 1992 John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk> 6 * Copyright (c) 1992 John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk>
56static char curlocale[128], savelocale[128]; 56static char curlocale[128], savelocale[128];
57 57
58bool 58bool
59rxvt_set_locale (const char *locale) NOTHROW 59rxvt_set_locale (const char *locale) NOTHROW
60{ 60{
61 int size = strlen (locale) + 1;
62
63 if (size > sizeof (curlocale))
64 rxvt_fatal ("locale string too long, aborting.\n");
65
61 if (!locale || !strncmp (locale, curlocale, 128)) 66 if (!locale || !memcmp (locale, curlocale, size))
62 return false; 67 return false;
63 68
64 strncpy (curlocale, locale, 128); 69 memcpy (curlocale, locale, size);
65 setlocale (LC_CTYPE, curlocale); 70 setlocale (LC_CTYPE, curlocale);
66 return true; 71 return true;
67} 72}
68 73
69void 74void
143} 148}
144#endif 149#endif
145 150
146rxvt_term::rxvt_term () 151rxvt_term::rxvt_term ()
147 : 152 :
148#if TRANSPARENT 153#if TRANSPARENT || ENABLE_PERL
149 rootwin_ev (this, &rxvt_term::rootwin_cb), 154 rootwin_ev (this, &rxvt_term::rootwin_cb),
150#endif 155#endif
151#ifdef HAVE_SCROLLBARS 156#ifdef HAVE_SCROLLBARS
152 scrollbar_ev (this, &rxvt_term::x_cb), 157 scrollbar_ev (this, &rxvt_term::x_cb),
153#endif 158#endif
198void rxvt_term::emergency_cleanup () 203void rxvt_term::emergency_cleanup ()
199{ 204{
200 if (cmd_pid) 205 if (cmd_pid)
201 kill (-cmd_pid, SIGHUP); 206 kill (-cmd_pid, SIGHUP);
202 207
208 pty_ev.stop ();
203 delete pty; pty = 0; 209 delete pty; pty = 0;
204} 210}
205 211
206rxvt_term::~rxvt_term () 212rxvt_term::~rxvt_term ()
207{ 213{
264 } 270 }
265 271
266 clear (); 272 clear ();
267 } 273 }
268 274
269 delete pix_colors_focused; 275 delete [] pix_colors_focused;
270#if OFF_FOCUS_FADING 276#if OFF_FOCUS_FADING
271 delete pix_colors_unfocused; 277 delete [] pix_colors_unfocused;
272#endif 278#endif
273 279
274 displays.put (display); 280 displays.put (display);
275 281
276 scr_release (); 282 scr_release ();
301{ 307{
302 HOOK_INVOKE ((this, HOOK_CHILD_EXIT, DT_INT, status, DT_END)); 308 HOOK_INVOKE ((this, HOOK_CHILD_EXIT, DT_INT, status, DT_END));
303 309
304 cmd_pid = 0; 310 cmd_pid = 0;
305 311
306 if (!OPTION (Opt_hold)) 312 if (!option (Opt_hold))
307 destroy (); 313 destroy ();
308} 314}
309 315
310void 316void
311rxvt_term::destroy () 317rxvt_term::destroy ()
325 im_ev.stop (display); 331 im_ev.stop (display);
326#endif 332#endif
327#if HAVE_SCROLLBARS 333#if HAVE_SCROLLBARS
328 scrollbar_ev.stop (display); 334 scrollbar_ev.stop (display);
329#endif 335#endif
330#if TRANSPARENT 336#if TRANSPARENT || ENABLE_PERL
331 rootwin_ev.stop (display); 337 rootwin_ev.stop (display);
332#endif 338#endif
333 incr_ev.stop (); 339 incr_ev.stop ();
334 termwin_ev.stop (display); 340 termwin_ev.stop (display);
335 vt_ev.stop (display); 341 vt_ev.stop (display);
475#ifdef KEYSYM_RESOURCE 481#ifdef KEYSYM_RESOURCE
476 keyboard->register_done (); 482 keyboard->register_done ();
477#endif 483#endif
478 484
479#ifdef HAVE_SCROLLBARS 485#ifdef HAVE_SCROLLBARS
480 if (OPTION (Opt_scrollBar)) 486 if (option (Opt_scrollBar))
481 scrollBar.setIdle (); /* set existence for size calculations */ 487 scrollBar.setIdle (); /* set existence for size calculations */
482#endif 488#endif
483 489
484 pty = ptytty::create (); 490 pty = ptytty::create ();
485 491
492#if 0 498#if 0
493 XSynchronize (dpy, True); 499 XSynchronize (dpy, True);
494#endif 500#endif
495 501
496#ifdef HAVE_SCROLLBARS 502#ifdef HAVE_SCROLLBARS
497 if (OPTION (Opt_scrollBar)) 503 if (option (Opt_scrollBar))
498 resize_scrollbar (); /* create and map scrollbar */ 504 resize_scrollbar (); /* create and map scrollbar */
499#endif 505#endif
500#ifdef TRANSPARENT 506#ifdef TRANSPARENT
501 if (OPTION (Opt_transparent)) 507 if (option (Opt_transparent))
502 { 508 {
503 XSelectInput (dpy, display->root, PropertyChangeMask); 509 XSelectInput (dpy, display->root, PropertyChangeMask);
504 check_our_parents (); 510 check_our_parents ();
505 rootwin_ev.start (display, display->root); 511 rootwin_ev.start (display, display->root);
506 } 512 }
513#endif
514#if ENABLE_PERL
515 rootwin_ev.start (display, display->root);
507#endif 516#endif
508 517
509 set_colorfgbg (); 518 set_colorfgbg ();
510 519
511 init_command (cmd_argv); 520 init_command (cmd_argv);
700 if (scrollBar.state) 709 if (scrollBar.state)
701 { 710 {
702 sb_w = scrollbar_TotalWidth (); 711 sb_w = scrollbar_TotalWidth ();
703 szHint.base_width += sb_w; 712 szHint.base_width += sb_w;
704 713
705 if (!OPTION (Opt_scrollBar_right)) 714 if (!option (Opt_scrollBar_right))
706 window_vt_x += sb_w; 715 window_vt_x += sb_w;
707 } 716 }
708 717
709 szHint.width_inc = fwidth; 718 szHint.width_inc = fwidth;
710 szHint.height_inc = fheight; 719 szHint.height_inc = fheight;
731 { 740 {
732 min_it (height, max_height); 741 min_it (height, max_height);
733 szHint.height = szHint.base_height + height; 742 szHint.height = szHint.base_height + height;
734 } 743 }
735 744
736 if (scrollBar.state && OPTION (Opt_scrollBar_right)) 745 if (scrollBar.state && option (Opt_scrollBar_right))
737 window_sb_x = szHint.width - sb_w; 746 window_sb_x = szHint.width - sb_w;
738 747
739 if (recalc_x) 748 if (recalc_x)
740 szHint.x += DisplayWidth (dpy, display->screen) - szHint.width - 2 * ext_bwidth; 749 szHint.x += DisplayWidth (dpy, display->screen) - szHint.width - 2 * ext_bwidth;
741 750
803 delete fontset[0]; 812 delete fontset[0];
804 fontset[0] = fs; 813 fontset[0] = fs;
805 814
806 prop = (*fs)[1]->properties (); 815 prop = (*fs)[1]->properties ();
807 prop.height += lineSpace; 816 prop.height += lineSpace;
817
808 fs->set_prop (prop); 818 fs->set_prop (prop, false);
809 819
810 fwidth = prop.width; 820 fwidth = prop.width;
811 fheight = prop.height; 821 fheight = prop.height;
812 fbase = prop.ascent; 822 fbase = prop.ascent;
813 823
822 { 832 {
823 fontset[style] = fs = new rxvt_fontset (this); 833 fontset[style] = fs = new rxvt_fontset (this);
824 rxvt_fontprop prop2 = prop; 834 rxvt_fontprop prop2 = prop;
825 835
826 if (res) 836 if (res)
827 prop2.weight = prop2.slant = rxvt_fontprop::unset; 837 {
838 fs->populate (res);
839 fs->set_prop (prop2, false);
840 }
828 else 841 else
829 { 842 {
830 res = fontset[0]->fontdesc; 843 fs->populate (fontset[0]->fontdesc);
831 844
832 if (SET_STYLE (0, style) & RS_Bold) prop2.weight = rxvt_fontprop::bold; 845 if (SET_STYLE (0, style) & RS_Bold) prop2.weight = rxvt_fontprop::bold;
833 if (SET_STYLE (0, style) & RS_Italic) prop2.slant = rxvt_fontprop::italic; 846 if (SET_STYLE (0, style) & RS_Italic) prop2.slant = rxvt_fontprop::italic;
847
848 fs->set_prop (prop2, true);
834 } 849 }
835 850
836 fs->populate (res);
837 fs->set_prop (prop2);
838 } 851 }
839#else 852#else
840 fontset[style] = fontset[0]; 853 fontset[style] = fontset[0];
841#endif 854#endif
842 } 855 }
935 pix_colors_focused[idx] = xcol; 948 pix_colors_focused[idx] = xcol;
936 949
937 /* XSetWindowAttributes attr; */ 950 /* XSetWindowAttributes attr; */
938 /* Cursor cursor; */ 951 /* Cursor cursor; */
939done: 952done:
940
941#if OFF_FOCUS_FADING
942 if (rs[Rs_fade])
943 {
944 rgba c;
945 pix_colors [Color_fade].get (c);
946 pix_colors_focused [idx].fade (this, atoi (rs[Rs_fade]), pix_colors_unfocused [idx], c);
947 }
948#endif
949
950 /*TODO: handle Color_BD, scrollbar background, etc. */ 953 /*TODO: handle Color_BD, scrollbar background, etc. */
951 954
955 update_fade_color (idx);
952 recolour_cursor (); 956 recolour_cursor ();
953 scr_recolour (); 957 scr_recolour ();
954} 958}
955 959
956#else 960#else

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines