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.9 by pcg, Tue Dec 2 21:49:46 2003 UTC vs.
Revision 1.14 by pcg, Thu Dec 18 00:29:29 2003 UTC

1/*--------------------------------*-C-*---------------------------------* 1/*--------------------------------*-C-*---------------------------------*
2 * File: main.c 2 * File: main.c
3 *----------------------------------------------------------------------* 3 *----------------------------------------------------------------------*
4 * $Id: main.C,v 1.9 2003/12/02 21:49:46 pcg Exp $ 4 * $Id: main.C,v 1.14 2003/12/18 00:29:29 pcg Exp $
5 * 5 *
6 * All portions of code are copyright by their respective author/s. 6 * All portions of code are copyright by their respective author/s.
7 * Copyright (c) 1992 John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk> 7 * Copyright (c) 1992 John Bovey, University of Kent at Canterbury <jdb@ukc.ac.uk>
8 * - original version 8 * - original version
9 * Copyright (c) 1994 Robert Nation <nation@rocket.sanders.lockheed.com> 9 * Copyright (c) 1994 Robert Nation <nation@rocket.sanders.lockheed.com>
67#ifdef POINTER_BLANK 67#ifdef POINTER_BLANK
68 pointer_ev (this, &rxvt_term::pointer_cb), 68 pointer_ev (this, &rxvt_term::pointer_cb),
69#endif 69#endif
70 x_ev (this, &rxvt_term::x_cb), 70 x_ev (this, &rxvt_term::x_cb),
71 destroy_ev (this, &rxvt_term::destroy_cb), 71 destroy_ev (this, &rxvt_term::destroy_cb),
72 check_ev (this, &rxvt_term::check_cb) 72 check_ev (this, &rxvt_term::check_cb),
73 incr_ev (this, &rxvt_term::incr_cb)
73{ 74{
74 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; 75 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
75} 76}
76 77
77rxvt_term::~rxvt_term () 78rxvt_term::~rxvt_term ()
78{ 79{
79 rxvt_scr_release (this); 80 scr_release ();
80 81
82#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
83 free (locale);
84#endif
81#ifndef NO_SETOWNER_TTYDEV 85#ifndef NO_SETOWNER_TTYDEV
82 rxvt_privileged_ttydev (this, RESTORE); 86 rxvt_privileged_ttydev (this, RESTORE);
83#endif 87#endif
84#ifdef UTMP_SUPPORT 88#ifdef UTMP_SUPPORT
85 rxvt_privileged_utmp (this, RESTORE); 89 rxvt_privileged_utmp (this, RESTORE);
202 206
203 rxvt_Create_Windows (this, argc, argv); 207 rxvt_Create_Windows (this, argc, argv);
204 208
205 rxvt_init_xlocale (this); 209 rxvt_init_xlocale (this);
206 210
207 rxvt_scr_reset (this); /* initialize screen */ 211 scr_reset (); /* initialize screen */
208#ifdef RXVT_GRAPHICS 212#ifdef RXVT_GRAPHICS
209 rxvt_Gr_reset (this); /* reset graphics */ 213 rxvt_Gr_reset (this); /* reset graphics */
210#endif 214#endif
211 215
212#if 0 216#if 0
238 242
239 x_ev.start (Xfd, EVENT_READ); 243 x_ev.start (Xfd, EVENT_READ);
240 pty_ev.start (cmd_fd, EVENT_READ); 244 pty_ev.start (cmd_fd, EVENT_READ);
241 245
242 check_ev.start (); 246 check_ev.start ();
247
248 process_x_events ();
243 249
244 return true; 250 return true;
245} 251}
246 252
247/* ------------------------------------------------------------------------- * 253/* ------------------------------------------------------------------------- *
937 uint16_t old_ncol = R->prev_ncol; 943 uint16_t old_ncol = R->prev_ncol;
938 944
939 /* scr_reset only works on the primary screen */ 945 /* scr_reset only works on the primary screen */
940 if (R->old_height) /* this is not the first time through */ 946 if (R->old_height) /* this is not the first time through */
941 curr_screen = rxvt_scr_change_screen(aR_ PRIMARY); 947 curr_screen = rxvt_scr_change_screen(aR_ PRIMARY);
948
942 rxvt_scr_reset(aR); 949 R->scr_reset();
950
943 if (curr_screen >= 0) { /* this is not the first time through */ 951 if (curr_screen >= 0) { /* this is not the first time through */
944 rxvt_scr_change_screen(aR_ curr_screen); 952 rxvt_scr_change_screen(aR_ curr_screen);
945 rxvt_selection_check(aR_(old_ncol != R->TermWin.ncol ? 4 : 0)); 953 rxvt_selection_check(aR_(old_ncol != R->TermWin.ncol ? 4 : 0));
946 } 954 }
947 } 955 }
1116rxvt_IMInstantiateCallback(Display * unused 1124rxvt_IMInstantiateCallback(Display * unused
1117 __attribute__ ((unused)), XPointer client_data 1125 __attribute__ ((unused)), XPointer client_data
1118 __attribute__ ((unused)), XPointer call_data 1126 __attribute__ ((unused)), XPointer call_data
1119 __attribute__ ((unused))) 1127 __attribute__ ((unused)))
1120{ 1128{
1121 dR; 1129 dR;
1122 int i, found, had_im; 1130 int i, found, had_im;
1123 const char *p; 1131 const char *p;
1124 char **s; 1132 char **s;
1125 char buf[IMBUFSIZ]; 1133 char buf[IMBUFSIZ];
1126 1134
1127 D_MAIN((stderr, "rxvt_IMInstantiateCallback()")); 1135 D_MAIN((stderr, "rxvt_IMInstantiateCallback()"));
1128 if (R->Input_Context) 1136 if (R->Input_Context)
1129 return; 1137 return;
1130 1138
1131 found = had_im = 0; 1139#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1140 if (R->rs[Rs_imLocale])
1141 setlocale (LC_CTYPE, R->rs[Rs_imLocale]);
1142#endif
1143
1132 p = R->rs[Rs_inputMethod]; 1144 p = R->rs[Rs_inputMethod];
1133 if (p && *p) { 1145 if (p && *p)
1134 had_im = 1; 1146 {
1147 bool found = false;
1148
1135 s = rxvt_splitcommastring(p); 1149 s = rxvt_splitcommastring (p);
1136 for (i = 0; s[i]; i++) { 1150 for (i = 0; s[i]; i++)
1151 {
1137 if (*s[i]) { 1152 if (*s[i])
1153 {
1138 STRCPY(buf, "@im="); 1154 STRCPY (buf, "@im=");
1139 STRNCAT(buf, s[i], IMBUFSIZ - 5); 1155 STRNCAT (buf, s[i], IMBUFSIZ - 5);
1140 if ((p = XSetLocaleModifiers(buf)) != NULL && *p 1156 if ((p = XSetLocaleModifiers (buf)) && *p
1141 && (rxvt_IM_get_IC(aR) == True)) { 1157 && rxvt_IM_get_IC (aR))
1158 {
1142 found = 1; 1159 found = true;
1143 break; 1160 break;
1144 } 1161 }
1145 } 1162 }
1146 } 1163 }
1147 for (i = 0; s[i]; i++) 1164 for (i = 0; s[i]; i++)
1148 free(s[i]); 1165 free(s[i]);
1149 free(s); 1166 free(s);
1150 } 1167
1151 if (found) 1168 if (found)
1152 return; 1169 goto done;
1170 }
1153 1171
1154/* try with XMODIFIERS env. var. */ 1172/* try with XMODIFIERS env. var. */
1155 if ((p = XSetLocaleModifiers("")) != NULL && *p) { 1173 if ((p = XSetLocaleModifiers ("")) && *p
1156 rxvt_IM_get_IC(aR); 1174 && rxvt_IM_get_IC (aR))
1157 return; 1175 goto done;
1158 }
1159 1176
1160/* try with no modifiers base IF the user didn't specify an IM */ 1177/* try with no modifiers base IF the user didn't specify an IM */
1161 if (!had_im && (p = XSetLocaleModifiers("@im=none")) != NULL && *p 1178 if ((p = XSetLocaleModifiers ("@im=none")) && *p
1162 && rxvt_IM_get_IC(aR) == True) 1179 && rxvt_IM_get_IC (aR) == True)
1163 return; 1180 goto done;
1181
1182done:
1183#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1184 if (R->rs[Rs_imLocale])
1185 setlocale (LC_CTYPE, R->locale);
1186#endif
1164} 1187}
1165 1188
1166/* 1189/*
1167 * Try to open a XIM with the current modifiers, then see if we can 1190 * Try to open a XIM with the current modifiers, then see if we can
1168 * open a suitable preedit type 1191 * open a suitable preedit type

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines