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.342 by sf-exg, Sun Dec 19 00:49:32 2010 UTC vs.
Revision 1.353 by sf-exg, Sat Feb 12 00:30:00 2011 UTC

96text_t rxvt_composite_vec::compose (unicode_t c1, unicode_t c2) 96text_t rxvt_composite_vec::compose (unicode_t c1, unicode_t c2)
97{ 97{
98 compose_char *cc; 98 compose_char *cc;
99 99
100 // break compose chains, as stupid readline really likes to duplicate 100 // break compose chains, as stupid readline really likes to duplicate
101 // composing characters for some reason near the end of a line. 101 // composing characters for some reason, near the end of a line.
102 cc = (*this)[c1]; 102 cc = (*this)[c1];
103 while (cc) 103 while (cc)
104 { 104 {
105 if (cc->c2 == c2) return c1; 105 if (cc->c2 == c2) return c1;
106 cc = (*this)[cc->c1]; 106 cc = (*this)[cc->c1];
107 } 107 }
108 108
109 // check to see whether this combination already exists otherwise 109 // check to see whether this combination already exists otherwise
110 for (cc = v.end (); cc-- > v.begin (); ) 110 for (cc = v.end (); cc-- > v.begin (); )
111 {
112 if (cc->c1 == c1 && cc->c2 == c2) 111 if (cc->c1 == c1 && cc->c2 == c2)
113 return COMPOSE_LO + (cc - v.begin ()); 112 return COMPOSE_LO + (cc - v.begin ());
114 }
115 113
116 // allocate a new combination 114 // allocate a new combination
117 if (v.size () == COMPOSE_HI - COMPOSE_LO + 1) 115 if (v.size () == COMPOSE_HI - COMPOSE_LO + 1)
118 { 116 {
119 static int seen; 117 static int seen;
120 118
121 if (!seen++) 119 if (!seen++)
122 fprintf (stderr, "too many unrepresentable composite characters, try --enable-unicode3\n"); 120 rxvt_warn ("too many unrepresentable composite characters, try --enable-unicode3\n");
123 121
124 return REPLACEMENT_CHAR; 122 return REPLACEMENT_CHAR;
125 } 123 }
126 124
127 v.push_back (compose_char (c1, c2)); 125 v.push_back (compose_char (c1, c2));
189#endif 187#endif
190 child_ev.set <rxvt_term, &rxvt_term::child_cb> (this); 188 child_ev.set <rxvt_term, &rxvt_term::child_cb> (this);
191 flush_ev.set <rxvt_term, &rxvt_term::flush_cb> (this); 189 flush_ev.set <rxvt_term, &rxvt_term::flush_cb> (this);
192 destroy_ev.set <rxvt_term, &rxvt_term::destroy_cb> (this); 190 destroy_ev.set <rxvt_term, &rxvt_term::destroy_cb> (this);
193 pty_ev.set <rxvt_term, &rxvt_term::pty_cb> (this); 191 pty_ev.set <rxvt_term, &rxvt_term::pty_cb> (this);
194 incr_ev.set <rxvt_term, &rxvt_term::incr_cb> (this);
195 termwin_ev.set <rxvt_term, &rxvt_term::x_cb> (this); 192 termwin_ev.set <rxvt_term, &rxvt_term::x_cb> (this);
196 vt_ev.set <rxvt_term, &rxvt_term::x_cb> (this); 193 vt_ev.set <rxvt_term, &rxvt_term::x_cb> (this);
197 194
198 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base; 195 cmdbuf_ptr = cmdbuf_endp = cmdbuf_base;
199 196
228 delete fontset[i]; 225 delete fontset[i];
229#endif 226#endif
230 delete fontset[0]; 227 delete fontset[0];
231 228
232#ifdef HAVE_BG_PIXMAP 229#ifdef HAVE_BG_PIXMAP
233 bgPixmap.destroy (); 230 bg_destroy ();
234#endif
235#ifdef HAVE_AFTERIMAGE
236 if (asv)
237 destroy_asvisual (asv, 0);
238 if (asimman)
239 destroy_image_manager (asimman, 0);
240#endif 231#endif
241 232
242 if (display) 233 if (display)
243 { 234 {
244 selection_clear (); 235 selection_clear ();
281 // TODO: manage env vars in child only(!) 272 // TODO: manage env vars in child only(!)
282 free (env_display); 273 free (env_display);
283 free (env_term); 274 free (env_term);
284 free (locale); 275 free (locale);
285 free (v_buffer); 276 free (v_buffer);
286 free (incr_buf); 277
278 delete selection_req;
287 279
288 delete envv; 280 delete envv;
289 delete argv; 281 delete argv;
290 282
291#ifdef KEYSYM_RESOURCE 283#ifdef KEYSYM_RESOURCE
327#endif 319#endif
328 scrollbar_ev.stop (display); 320 scrollbar_ev.stop (display);
329#if ENABLE_TRANSPARENCY || ENABLE_PERL 321#if ENABLE_TRANSPARENCY || ENABLE_PERL
330 rootwin_ev.stop (display); 322 rootwin_ev.stop (display);
331#endif 323#endif
332 incr_ev.stop ();
333 termwin_ev.stop (display); 324 termwin_ev.stop (display);
334 vt_ev.stop (display); 325 vt_ev.stop (display);
335 } 326 }
336 327
337 flush_ev.stop (); 328 flush_ev.stop ();
394print_x_error (Display *dpy, XErrorEvent *event) 385print_x_error (Display *dpy, XErrorEvent *event)
395{ 386{
396 char buffer[BUFSIZ]; 387 char buffer[BUFSIZ];
397 char mesg[BUFSIZ]; 388 char mesg[BUFSIZ];
398 char number[32]; 389 char number[32];
399 char *mtype = "XlibMessage"; 390 const char mtype[] = "XlibMessage";
400 XGetErrorText(dpy, event->error_code, buffer, BUFSIZ); 391 XGetErrorText(dpy, event->error_code, buffer, BUFSIZ);
401 XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ); 392 XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ);
402 rxvt_warn ("An X Error occurred, trying to continue after report.\n"); 393 rxvt_warn ("An X Error occurred, trying to continue after report.\n");
403 rxvt_warn ("%s: %s\n", mesg, buffer); 394 rxvt_warn ("%s: %s\n", mesg, buffer);
404 XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", mesg, BUFSIZ); 395 XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", mesg, BUFSIZ);
958void 949void
959rxvt_term::set_colorfgbg () 950rxvt_term::set_colorfgbg ()
960{ 951{
961 unsigned int i; 952 unsigned int i;
962 const char *xpmb = ""; 953 const char *xpmb = "";
963 char fstr[sizeof ("default") + 1], bstr[sizeof ("default") + 1]; 954 char fstr[] = "default";
955 char bstr[] = "default";
964 956
965 strcpy (fstr, "default");
966 strcpy (bstr, "default");
967 for (i = Color_Black; i <= Color_White; i++) 957 for (i = Color_Black; i <= Color_White; i++)
968 if (pix_colors[Color_fg] == pix_colors[i]) 958 if (pix_colors[Color_fg] == pix_colors[i])
969 { 959 {
970 sprintf (fstr, "%d", (i - Color_Black)); 960 sprintf (fstr, "%d", i - Color_Black);
971 break; 961 break;
972 } 962 }
973 963
974 for (i = Color_Black; i <= Color_White; i++) 964 for (i = Color_Black; i <= Color_White; i++)
975 if (pix_colors[Color_bg] == pix_colors[i]) 965 if (pix_colors[Color_bg] == pix_colors[i])
976 { 966 {
977 sprintf (bstr, "%d", (i - Color_Black)); 967 sprintf (bstr, "%d", i - Color_Black);
978#ifdef BG_IMAGE_FROM_FILE 968#ifdef BG_IMAGE_FROM_FILE
979 xpmb = "default;"; 969 xpmb = "default;";
980#endif 970#endif
981 break; 971 break;
982 } 972 }
1085 XMoveResizeWindow (dpy, vt, 1075 XMoveResizeWindow (dpy, vt,
1086 window_vt_x, window_vt_y, 1076 window_vt_x, window_vt_y,
1087 width, height); 1077 width, height);
1088 1078
1089#ifdef HAVE_BG_PIXMAP 1079#ifdef HAVE_BG_PIXMAP
1090 if (bgPixmap.window_size_sensitive ()) 1080 if (bg_window_size_sensitive ())
1091 update_background (); 1081 update_background ();
1092#endif 1082#endif
1093 } 1083 }
1094 1084
1095 if (fix_screen || old_height == 0) 1085 if (fix_screen || old_height == 0)
1096 scr_reset (); 1086 scr_reset ();
1097
1098#ifdef HAVE_BG_PIXMAP
1099// TODO: this don't seem to have any effect - do we still need it ? If so - in which case exactly ?
1100// if (bgPixmap.pixmap)
1101// scr_touch (false);
1102#endif
1103 1087
1104#ifdef USE_XIM 1088#ifdef USE_XIM
1105 IMSetPosition (); 1089 IMSetPosition ();
1106#endif 1090#endif
1107} 1091}
1190 1174
1191 atom = XInternAtom (dpy, server, False); 1175 atom = XInternAtom (dpy, server, False);
1192 win = XGetSelectionOwner (dpy, atom); 1176 win = XGetSelectionOwner (dpy, atom);
1193 1177
1194 if (win != None) 1178 if (win != None)
1195 return True; 1179 return true;
1196 } 1180 }
1197 1181
1198 return False; 1182 return false;
1199} 1183}
1200 1184
1201void 1185void
1202rxvt_term::IMSendSpot () 1186rxvt_term::IMSendSpot ()
1203{ 1187{
1356 p = pet[pi]; 1340 p = pet[pi];
1357 1341
1358 if (!p) 1342 if (!p)
1359 continue; 1343 continue;
1360 1344
1361 s = rxvt_splitcommastring (p); 1345 s = rxvt_strsplit (',', p);
1362 1346
1363 for (i = found = 0; !found && s[i]; i++) 1347 for (i = found = 0; !found && s[i]; i++)
1364 { 1348 {
1365 if (!strcmp (s[i], "OverTheSpot")) 1349 if (!strcmp (s[i], "OverTheSpot"))
1366 input_style = XIMPreeditPosition | XIMStatusNothing; 1350 input_style = XIMPreeditPosition | XIMStatusNothing;
1378 input_style = XIMPreeditNothing | XIMStatusNothing; 1362 input_style = XIMPreeditNothing | XIMStatusNothing;
1379 1363
1380 for (j = 0; j < xim_styles->count_styles; j++) 1364 for (j = 0; j < xim_styles->count_styles; j++)
1381 if (input_style == xim_styles->supported_styles[j]) 1365 if (input_style == xim_styles->supported_styles[j])
1382 { 1366 {
1383 rxvt_freecommastring (s); 1367 rxvt_free_strsplit (s);
1384 1368
1385 found = 1; 1369 found = 1;
1386 goto foundpet; 1370 goto foundpet;
1387 } 1371 }
1388 1372
1389 } 1373 }
1390 1374
1391 rxvt_freecommastring (s); 1375 rxvt_free_strsplit (s);
1392 } 1376 }
1393 1377
1394foundpet: 1378foundpet:
1395 1379
1396 XFree (xim_styles); 1380 XFree (xim_styles);
1552 p = rs[Rs_inputMethod]; 1536 p = rs[Rs_inputMethod];
1553 if (p && *p) 1537 if (p && *p)
1554 { 1538 {
1555 bool found = false; 1539 bool found = false;
1556 1540
1557 s = rxvt_splitcommastring (p); 1541 s = rxvt_strsplit (',', p);
1558 1542
1559 for (i = 0; s[i]; i++) 1543 for (i = 0; s[i]; i++)
1560 { 1544 {
1561 if (*s[i]) 1545 if (*s[i])
1562 { 1546 {
1568 break; 1552 break;
1569 } 1553 }
1570 } 1554 }
1571 } 1555 }
1572 1556
1573 rxvt_freecommastring (s); 1557 rxvt_free_strsplit (s);
1574 1558
1575 if (found) 1559 if (found)
1576 goto done; 1560 goto done;
1577 } 1561 }
1578 1562
1671rxvt_term::update_background () 1655rxvt_term::update_background ()
1672{ 1656{
1673 if (update_background_ev.is_active ()) 1657 if (update_background_ev.is_active ())
1674 return; 1658 return;
1675 1659
1676 bgPixmap.invalidate (); 1660 bg_invalidate ();
1677 1661
1678 ev_tstamp to_wait = 0.5 - (ev::now () - bgPixmap.valid_since); 1662 ev_tstamp to_wait = 0.5 - (ev::now () - bg_valid_since);
1679 1663
1680 if (to_wait <= 0.) 1664 if (to_wait <= 0.)
1681 bgPixmap.render (); 1665 bg_render ();
1682 else 1666 else
1683 update_background_ev.start (to_wait); 1667 update_background_ev.start (to_wait);
1684} 1668}
1685 1669
1686void 1670void
1687rxvt_term::update_background_cb (ev::timer &w, int revents) 1671rxvt_term::update_background_cb (ev::timer &w, int revents)
1688{ 1672{
1689 make_current (); 1673 make_current ();
1690 1674
1691 update_background_ev.stop (); 1675 update_background_ev.stop ();
1692 bgPixmap.render (); 1676 bg_render ();
1693 refresh_check (); 1677 refresh_check ();
1694} 1678}
1695 1679
1696#endif /* HAVE_BG_PIXMAP */ 1680#endif /* HAVE_BG_PIXMAP */
1697 1681

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines