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.367 by root, Wed Jan 18 11:47:51 2012 UTC vs.
Revision 1.375 by sf-exg, Sun Jun 3 17:48:28 2012 UTC

36#include "keyboard.h" 36#include "keyboard.h"
37#include "rxvtperl.h" 37#include "rxvtperl.h"
38 38
39#include <limits> 39#include <limits>
40 40
41#include <cassert> 41#include <assert.h>
42#include <csignal> 42#include <signal.h>
43#include <cstring> 43#include <string.h>
44 44
45#include <termios.h> 45#include <termios.h>
46 46
47#ifdef HAVE_XSETLOCALE 47#ifdef HAVE_XSETLOCALE
48# define X_LOCALE 48# define X_LOCALE
49# include <X11/Xlocale.h> 49# include <X11/Xlocale.h>
50#else 50#else
51# ifdef HAVE_SETLOCALE
52# include <clocale> 51# include <locale.h>
53# endif
54#endif 52#endif
55 53
56struct termios rxvt_term::def_tio; 54struct termios rxvt_term::def_tio;
57vector<rxvt_term *> rxvt_term::termlist; 55vector<rxvt_term *> rxvt_term::termlist;
58 56
350 348
351 delete this; 349 delete this;
352} 350}
353 351
354void 352void
355rxvt_term::set_option (uint8_t opt, bool set) 353rxvt_term::set_option (uint8_t opt, bool set) NOTHROW
356{ 354{
357 if (!opt) 355 if (!opt)
358 return; 356 return;
359 357
360 uint8_t mask = 1 << (opt & 7); 358 uint8_t mask = 1 << (opt & 7);
376 for (rxvt_term **t = rxvt_term::termlist.begin (); t < rxvt_term::termlist.end (); t++) 374 for (rxvt_term **t = rxvt_term::termlist.begin (); t < rxvt_term::termlist.end (); t++)
377 (*t)->emergency_cleanup (); 375 (*t)->emergency_cleanup ();
378} 376}
379 377
380#if !ENABLE_MINIMAL 378#if !ENABLE_MINIMAL
381static void 379static void ecb_cold
382print_x_error (Display *dpy, XErrorEvent *event) 380print_x_error (Display *dpy, XErrorEvent *event)
383{ 381{
384 char buffer[BUFSIZ]; 382 char buffer[BUFSIZ];
385 char mesg[BUFSIZ]; 383 char mesg[BUFSIZ];
386 char number[32]; 384 char number[32];
424 mesg, BUFSIZ); 422 mesg, BUFSIZ);
425 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->serial); 423 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->serial);
426} 424}
427#endif 425#endif
428 426
429int 427int ecb_cold
430rxvt_xerror_handler (Display *display, XErrorEvent *event) 428rxvt_xerror_handler (Display *display, XErrorEvent *event)
431{ 429{
432 if (GET_R->allowedxerror == -1) 430 if (GET_R->allowedxerror == -1)
433 GET_R->allowedxerror = event->error_code; 431 GET_R->allowedxerror = event->error_code;
434 else 432 else
443 } 441 }
444 442
445 return 0; 443 return 0;
446} 444}
447 445
448int 446int ecb_cold
449rxvt_xioerror_handler (Display *display) 447rxvt_xioerror_handler (Display *display)
450{ 448{
451 rxvt_warn ("X connection to '%s' broken, unable to recover, exiting.\n", 449 rxvt_warn ("X connection to '%s' broken, unable to recover, exiting.\n",
452 DisplayString (display)); 450 DisplayString (display));
453 rxvt_emergency_cleanup (); 451 rxvt_emergency_cleanup ();
573 old_xerror_handler = XSetErrorHandler ((XErrorHandler) rxvt_xerror_handler); 571 old_xerror_handler = XSetErrorHandler ((XErrorHandler) rxvt_xerror_handler);
574 // TODO: handle this with exceptions and tolerate the memory loss 572 // TODO: handle this with exceptions and tolerate the memory loss
575 XSetIOErrorHandler (rxvt_xioerror_handler); 573 XSetIOErrorHandler (rxvt_xioerror_handler);
576 574
577 XrmInitialize (); 575 XrmInitialize ();
576
577#ifdef HAVE_PIXBUF
578 g_type_init ();
579#endif
578} 580}
579 581
580/*----------------------------------------------------------------------*/ 582/*----------------------------------------------------------------------*/
581/* 583/*
582 * window size/position calculations for XSizeHint and other storage. 584 * window size/position calculations for XSizeHint and other storage.
766 768
767 delete fontset[0]; 769 delete fontset[0];
768 fontset[0] = fs; 770 fontset[0] = fs;
769 771
770 prop = (*fs)[rxvt_fontset::firstFont]->properties (); 772 prop = (*fs)[rxvt_fontset::firstFont]->properties ();
771 prop.height += lineSpace;
772 prop.width += letterSpace; 773 prop.width += letterSpace;
773 774
774 fs->set_prop (prop, false); 775 fs->set_prop (prop, false);
775 776
776 fwidth = prop.width; 777 fwidth = prop.width;
777 fheight = prop.height; 778 fheight = prop.height + lineSpace;
778 fbase = prop.ascent; 779 fbase = prop.ascent;
779 780
780 for (int style = 1; style < 4; style++) 781 for (int style = 1; style < 4; style++)
781 { 782 {
782#if ENABLE_STYLES 783#if ENABLE_STYLES
1528 im_destroy (); 1529 im_destroy ();
1529 1530
1530 if (Input_Context) 1531 if (Input_Context)
1531 return; 1532 return;
1532 1533
1533#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1534 if (rs[Rs_imLocale]) 1534 if (rs[Rs_imLocale])
1535 SET_LOCALE (rs[Rs_imLocale]); 1535 SET_LOCALE (rs[Rs_imLocale]);
1536#endif
1537 1536
1538 p = rs[Rs_inputMethod]; 1537 p = rs[Rs_inputMethod];
1539 if (p && *p) 1538 if (p && *p)
1540 { 1539 {
1541 bool found = false; 1540 bool found = false;
1568 1567
1569 /* try with no modifiers base IF the user didn't specify an IM */ 1568 /* try with no modifiers base IF the user didn't specify an IM */
1570 if (im_get_ic ("@im=none")) 1569 if (im_get_ic ("@im=none"))
1571 goto done; 1570 goto done;
1572 1571
1573done: ; 1572done:
1574#if defined(HAVE_XSETLOCALE) || defined(HAVE_SETLOCALE)
1575 if (rs[Rs_imLocale]) 1573 if (rs[Rs_imLocale])
1576 SET_LOCALE (locale); 1574 SET_LOCALE (locale);
1577#endif
1578} 1575}
1579 1576
1580void 1577void
1581rxvt_term::im_set_position () 1578rxvt_term::im_set_position ()
1582{ 1579{
1627{ 1624{
1628 Window cr; 1625 Window cr;
1629 XTranslateCoordinates (dpy, parent, display->root, 0, 0, &x, &y, &cr); 1626 XTranslateCoordinates (dpy, parent, display->root, 0, 0, &x, &y, &cr);
1630} 1627}
1631 1628
1632Pixmap
1633rxvt_term::get_pixmap_property (Atom property)
1634{
1635 Pixmap pixmap = None;
1636
1637 int aformat;
1638 unsigned long nitems, bytes_after;
1639 Atom atype;
1640 unsigned char *prop;
1641 int result = XGetWindowProperty (dpy, display->root, property,
1642 0L, 1L, False, XA_PIXMAP, &atype, &aformat,
1643 &nitems, &bytes_after, &prop);
1644 if (result == Success)
1645 {
1646 if (atype == XA_PIXMAP)
1647 pixmap = *(Pixmap *)prop;
1648 XFree (prop);
1649 }
1650
1651 return pixmap;
1652}
1653
1654#ifdef HAVE_BG_PIXMAP 1629#ifdef HAVE_BG_PIXMAP
1655 1630
1656void 1631void
1657rxvt_term::update_background () 1632rxvt_term::update_background ()
1658{ 1633{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines