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.33 by pcg, Fri Feb 13 13:28:17 2004 UTC vs.
Revision 1.41 by pcg, Sun Feb 22 08:28:36 2004 UTC

1/*--------------------------------*-C-*---------------------------------* 1/*--------------------------------*-C-*---------------------------------*;
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>
11 * Copyright (c) 1997 mj olesen <olesen@me.QueensU.CA> 11 * Copyright (c) 1997 mj olesen <olesen@me.QueensU.CA>
12 * - extensive modifications 12 * - extensive modifications
13 * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de> 13 * Copyright (c) 1997,1998 Oezguer Kesim <kesim@math.fu-berlin.de>
14 * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com> 14 * Copyright (c) 1998-2001 Geoff Wing <gcw@pobox.com>
15 * - extensive modifications 15 * - extensive modifications
16 * Copyright (c) 2003-2004 Marc Lehmann <pcg@goof.com>
16 * 17 *
17 * This program is free software; you can redistribute it and/or modify 18 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by 19 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2 of the License, or 20 * the Free Software Foundation; either version 2 of the License, or
20 * (at your option) any later version. 21 * (at your option) any later version.
90 text_blink_ev (this, &rxvt_term::text_blink_cb), 91 text_blink_ev (this, &rxvt_term::text_blink_cb),
91#endif 92#endif
92#ifdef POINTER_BLANK 93#ifdef POINTER_BLANK
93 pointer_ev (this, &rxvt_term::pointer_cb), 94 pointer_ev (this, &rxvt_term::pointer_cb),
94#endif 95#endif
96#ifdef USE_XIM
97 im_ev (this, &rxvt_term::im_cb),
98#endif
95 check_ev (this, &rxvt_term::check_cb), 99 check_ev (this, &rxvt_term::check_cb),
96 destroy_ev (this, &rxvt_term::destroy_cb), 100 destroy_ev (this, &rxvt_term::destroy_cb),
97 pty_ev (this, &rxvt_term::pty_cb), 101 pty_ev (this, &rxvt_term::pty_cb),
98 incr_ev (this, &rxvt_term::incr_cb), 102 incr_ev (this, &rxvt_term::incr_cb)
99#ifdef USE_XIM
100 im_ev (this, &rxvt_term::im_cb)
101#endif
102{ 103{
103 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; 104 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
104} 105}
105 106
106rxvt_term::~rxvt_term () 107rxvt_term::~rxvt_term ()
107{ 108{
108 if (cmd_fd >= 0) 109 if (cmd_fd >= 0)
109 close (cmd_fd); 110 close (cmd_fd);
111
112#ifndef NO_SETOWNER_TTYDEV
113 privileged_ttydev (RESTORE);
114#endif
115#ifdef UTMP_SUPPORT
116 privileged_utmp (RESTORE);
117#endif
118
119 delete TermWin.fontset;
120
121 if (display)
122 if (TermWin.parent[0])
123 XDestroyWindow (display->display, TermWin.parent[0]);
124
125 // TODO: free pixcolours, colours should become part of rxvt_display
126
127 delete PixColors;
128
129 displays.put (display);
110 130
111 scr_release (); 131 scr_release ();
112 132
113 free (env_windowid); 133 free (env_windowid);
114 free (env_display); 134 free (env_display);
115 free (env_term); 135 free (env_term);
116 free (env_colorfgbg); 136 free (env_colorfgbg);
117 free (locale); 137 free (locale);
118 free (codeset); 138 free (codeset);
119 139
120#ifndef NO_SETOWNER_TTYDEV
121 privileged_ttydev (RESTORE);
122#endif
123#ifdef UTMP_SUPPORT
124 privileged_utmp (RESTORE);
125#endif
126
127 // TODO: free pixcolours, colours should become part of rxvt_display
128
129 delete PixColors;
130 delete TermWin.fontset;
131
132 displays.put (display);
133
134 delete envv; 140 delete envv;
135 delete argv; 141 delete argv;
136} 142}
137 143
138void 144void
139rxvt_term::destroy () 145rxvt_term::destroy ()
140{ 146{
141 if (display) 147 if (display)
142 { 148 {
143 if (TermWin.parent[0])
144 XDestroyWindow (display->display, TermWin.parent[0]);
145
146 rootwin_ev.stop (display); 149 rootwin_ev.stop (display);
147 termwin_ev.stop (display); 150 termwin_ev.stop (display);
148 vt_ev.stop (display); 151 vt_ev.stop (display);
149
150#ifdef USE_XIM 152#ifdef USE_XIM
151 im_destroy (); 153 im_destroy ();
152 im_ev.stop (display); 154 im_ev.stop (display);
153#endif 155#endif
154#ifdef HAVE_SCROLLBARS 156#ifdef HAVE_SCROLLBARS
260 create_windows (argc, argv); 262 create_windows (argc, argv);
261 263
262 init_xlocale (); 264 init_xlocale ();
263 265
264 scr_reset (); /* initialize screen */ 266 scr_reset (); /* initialize screen */
265#ifdef RXVT_GRAPHICS
266 Gr_reset (); /* reset graphics */
267#endif
268 267
269#if 0 268#if 0
270#ifdef DEBUG_X
271 XSynchronize (display->display, True); 269 XSynchronize (display->display, True);
272#endif
273#endif 270#endif
274 271
275#ifdef HAVE_SCROLLBARS 272#ifdef HAVE_SCROLLBARS
276 if (Options & Opt_scrollBar) 273 if (Options & Opt_scrollBar)
277 resize_scrollbar (); /* create and map scrollbar */ 274 resize_scrollbar (); /* create and map scrollbar */
718 * init = 1 - initialize 715 * init = 1 - initialize
719 * 716 *
720 * fontname == FONT_UP - switch to bigger font 717 * fontname == FONT_UP - switch to bigger font
721 * fontname == FONT_DN - switch to smaller font 718 * fontname == FONT_DN - switch to smaller font
722 */ 719 */
723void 720bool
724rxvt_term::change_font (int init, const char *fontname) 721rxvt_term::change_font (const char *fontname)
725{} 722{
723 if (fontname == FONT_UP)
724 {
725 // TODO
726 }
727 else if (fontname == FONT_DN)
728 {
729 // TODO
730 }
731 else
732 {
733 rxvt_fontset *fs = new rxvt_fontset (this);
726 734
727void 735 if (fs && fs->populate (fontname))
736 {
737 delete TermWin.fontset;
738 TermWin.fontset = fs;
739 TermWin.fwidth = fs->base_font ()->width;
740 TermWin.fheight = fs->base_font ()->height;
741 TermWin.fbase = fs->base_font ()->ascent;
742
743 // TODO: screen needs to be told about new fonts
744
745 return true;
746 }
747 }
748
749 return false;
750}
751
752bool
728rxvt_term::font_up_down (int n, int direction) 753rxvt_term::font_up_down (int n, int direction)
729{} 754{
755 return false;
756}
730 757
731/*----------------------------------------------------------------------*/ 758/*----------------------------------------------------------------------*/
732/*----------------------------------------------------------------------*/ 759/*----------------------------------------------------------------------*/
733/* xterm sequences - title, iconName, color (exptl) */ 760/* xterm sequences - title, iconName, color (exptl) */
734void 761void
995 0, TermWin_TotalWidth (), menuBar_TotalHeight ()); 1022 0, TermWin_TotalWidth (), menuBar_TotalHeight ());
996 1023
997 XMoveResizeWindow (display->display, TermWin.vt, window_vt_x, 1024 XMoveResizeWindow (display->display, TermWin.vt, window_vt_x,
998 window_vt_y, TermWin_TotalWidth (), 1025 window_vt_y, TermWin_TotalWidth (),
999 TermWin_TotalHeight ()); 1026 TermWin_TotalHeight ());
1000#ifdef RXVT_GRAPHICS
1001 if (old_height)
1002 Gr_Resize (old_width - szHint.base_width,
1003 old_height - szHint.base_height);
1004#endif
1005 scr_clear (); 1027 scr_clear ();
1006#ifdef XPM_BACKGROUND 1028#ifdef XPM_BACKGROUND
1007 resize_pixmap (); 1029 resize_pixmap ();
1008#endif 1030#endif
1009 1031
1315 if (Input_Context) 1337 if (Input_Context)
1316 return; 1338 return;
1317 1339
1318#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) 1340#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1319 if (rs[Rs_imLocale]) 1341 if (rs[Rs_imLocale])
1320 setlocale (LC_CTYPE, rs[Rs_imLocale]); 1342 SET_LOCALE (rs[Rs_imLocale]);
1321#endif 1343#endif
1322 1344
1323 p = rs[Rs_inputMethod]; 1345 p = rs[Rs_inputMethod];
1324 if (p && *p) 1346 if (p && *p)
1325 { 1347 {
1356 goto done; 1378 goto done;
1357 1379
1358done: 1380done:
1359#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE) 1381#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1360 if (rs[Rs_imLocale]) 1382 if (rs[Rs_imLocale])
1361 setlocale (LC_CTYPE, locale); 1383 SET_LOCALE (locale);
1362#endif 1384#endif
1363} 1385}
1364 1386
1365void 1387void
1366rxvt_term::IMSetStatusPosition () 1388rxvt_term::IMSetStatusPosition ()

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines