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.134 by root, Fri Feb 4 11:41:23 2005 UTC vs.
Revision 1.138 by root, Wed Feb 16 20:32:05 2005 UTC

30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 30 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 *---------------------------------------------------------------------*/ 31 *---------------------------------------------------------------------*/
32 32
33#include "../config.h" /* NECESSARY */ 33#include "../config.h" /* NECESSARY */
34#include "rxvt.h" /* NECESSARY */ 34#include "rxvt.h" /* NECESSARY */
35#include "main.intpro" /* PROTOS for internal routines */
36 35
37#include <csignal> 36#include <csignal>
38#include <cstring> 37#include <cstring>
39 38
40#ifdef TTY_GID_SUPPORT 39#ifdef TTY_GID_SUPPORT
253 //if (menuBar.win) 252 //if (menuBar.win)
254 // XDestroyWindow (disp, menuBar.win); 253 // XDestroyWindow (disp, menuBar.win);
255#endif 254#endif
256 delete TermWin.drawable; 255 delete TermWin.drawable;
257 // destroy all windows 256 // destroy all windows
258 if (TermWin.parent[0]) 257 if (TermWin.parent[0]
258#if ENABLE_FRILLS
259 && !rs[Rs_embed]
260#endif
261 )
259 XDestroyWindow (disp, TermWin.parent[0]); 262 XDestroyWindow (disp, TermWin.parent[0]);
260 } 263 }
261 264
262 // TODO: free pixcolours, colours should become part of rxvt_display 265 // TODO: free pixcolours, colours should become part of rxvt_display
263 266
362{ 365{
363 for (rxvt_term **t = rxvt_term::termlist.begin (); t < rxvt_term::termlist.end (); t++) 366 for (rxvt_term **t = rxvt_term::termlist.begin (); t < rxvt_term::termlist.end (); t++)
364 (*t)->emergency_cleanup (); 367 (*t)->emergency_cleanup ();
365} 368}
366 369
370#if ENABLE_FRILLS
371static void
372print_x_error (Display *dpy, XErrorEvent *event)
373{
374 char buffer[BUFSIZ];
375 char mesg[BUFSIZ];
376 char number[32];
377 char *mtype = "XlibMessage";
378 XGetErrorText(dpy, event->error_code, buffer, BUFSIZ);
379 XGetErrorDatabaseText(dpy, mtype, "XError", "X Error", mesg, BUFSIZ);
380 rxvt_warn ("An X Error occured, trying to continue after report.\n");
381 rxvt_warn ("%s: %s\n", mesg, buffer);
382 XGetErrorDatabaseText(dpy, mtype, "MajorCode", "Request Major code %d", mesg, BUFSIZ);
383 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->request_code);
384 sprintf(number, "%d", event->request_code);
385 XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ);
386 rxvt_warn ("(which is %s)\n", buffer);
387 if (event->request_code >= 128) {
388 XGetErrorDatabaseText(dpy, mtype, "MinorCode", "Request Minor code %d",
389 mesg, BUFSIZ);
390 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->minor_code);
391 }
392 if ((event->error_code == BadWindow) ||
393 (event->error_code == BadPixmap) ||
394 (event->error_code == BadCursor) ||
395 (event->error_code == BadFont) ||
396 (event->error_code == BadDrawable) ||
397 (event->error_code == BadColor) ||
398 (event->error_code == BadGC) ||
399 (event->error_code == BadIDChoice) ||
400 (event->error_code == BadValue) ||
401 (event->error_code == BadAtom)) {
402 if (event->error_code == BadValue)
403 XGetErrorDatabaseText(dpy, mtype, "Value", "Value 0x%x",
404 mesg, BUFSIZ);
405 else if (event->error_code == BadAtom)
406 XGetErrorDatabaseText(dpy, mtype, "AtomID", "AtomID 0x%x",
407 mesg, BUFSIZ);
408 else
409 XGetErrorDatabaseText(dpy, mtype, "ResourceID", "ResourceID 0x%x",
410 mesg, BUFSIZ);
411 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->resourceid);
412 }
413 XGetErrorDatabaseText(dpy, mtype, "ErrorSerial", "Error Serial #%d",
414 mesg, BUFSIZ);
415 rxvt_warn (strncat (mesg, "\n", BUFSIZ), event->serial);
416}
417#endif
418
367int 419int
368rxvt_xerror_handler (Display *display, XErrorEvent *event) 420rxvt_xerror_handler (Display *display, XErrorEvent *event)
369{ 421{
370 if (GET_R->allowedxerror == -1) 422 if (GET_R->allowedxerror == -1)
371 GET_R->allowedxerror = event->error_code; 423 GET_R->allowedxerror = event->error_code;
372 else 424 else
373 { 425 {
374 //TODO: GET_R is most likely not the terminal which caused the error 426 //TODO: GET_R is most likely not the terminal which caused the error
375 //TODO: maybe just output the error and continue? 427 //TODO: maybe just output the error and continue?
428#if ENABLE_FRILLS
429 print_x_error (display, event);
430#else
376 old_xerror_handler (display, event); 431 old_xerror_handler (display, event);
377 GET_R->destroy (); 432#endif
378 } 433 }
379 434
380 return 0; 435 return 0;
381} 436}
382 437
660 if (!parsed_geometry) 715 if (!parsed_geometry)
661 { 716 {
662 parsed_geometry = 1; 717 parsed_geometry = 1;
663 if (rs[Rs_geometry]) 718 if (rs[Rs_geometry])
664 flags = XParseGeometry (rs[Rs_geometry], &x, &y, &w, &h); 719 flags = XParseGeometry (rs[Rs_geometry], &x, &y, &w, &h);
720
665 if (flags & WidthValue) 721 if (flags & WidthValue)
666 { 722 {
667 TermWin.ncol = BOUND_POSITIVE_INT16 (w); 723 TermWin.ncol = BOUND_POSITIVE_INT16 (w);
668 szHint.flags |= USSize; 724 szHint.flags |= USSize;
669 } 725 }
726
670 if (flags & HeightValue) 727 if (flags & HeightValue)
671 { 728 {
672 TermWin.nrow = BOUND_POSITIVE_INT16 (h); 729 TermWin.nrow = BOUND_POSITIVE_INT16 (h);
673 szHint.flags |= USSize; 730 szHint.flags |= USSize;
674 } 731 }
732
675 if (flags & XValue) 733 if (flags & XValue)
676 { 734 {
677 szHint.x = x; 735 szHint.x = x;
678 szHint.flags |= USPosition; 736 szHint.flags |= USPosition;
679 if (flags & XNegative) 737 if (flags & XNegative)
680 { 738 {
681 recalc_x = 1; 739 recalc_x = 1;
682 szHint.win_gravity = NorthEastGravity; 740 szHint.win_gravity = NorthEastGravity;
683 } 741 }
684 } 742 }
743
685 if (flags & YValue) 744 if (flags & YValue)
686 { 745 {
687 szHint.y = y; 746 szHint.y = y;
688 szHint.flags |= USPosition; 747 szHint.flags |= USPosition;
689 if (flags & YNegative) 748 if (flags & YNegative)
1501 int i, found, had_im; 1560 int i, found, had_im;
1502 const char *p; 1561 const char *p;
1503 char **s; 1562 char **s;
1504 char buf[IMBUFSIZ]; 1563 char buf[IMBUFSIZ];
1505 1564
1565 SET_R (this);
1566
1506 im_destroy (); 1567 im_destroy ();
1507 1568
1508 D_MAIN ((stderr, "rxvt_IMInstantiateCallback ()")); 1569 D_MAIN ((stderr, "rxvt_IMInstantiateCallback ()"));
1509 if (Input_Context) 1570 if (Input_Context)
1510 return; 1571 return;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines