ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvt.h
(Generate patch)

Comparing rxvt-unicode/src/rxvt.h (file contents):
Revision 1.4 by pcg, Tue Nov 25 15:25:17 2003 UTC vs.
Revision 1.26 by pcg, Fri Jan 30 15:58:07 2004 UTC

1/*
2 * $Id: rxvt.h,v 1.4 2003/11/25 15:25:17 pcg Exp $
3 */
4
5#ifndef _RXVT_H_ /* include once only */ 1#ifndef RXVT_H_ /* include once only */
6#define _RXVT_H_ 2#define RXVT_H_
7 3
8#include "rxvtlib.h" 4#include "rxvtlib.h"
9 5
10#include "feature.h" 6#include "feature.h"
11 7
15#include <X11/Xatom.h> 11#include <X11/Xatom.h>
16 12
17#include "defaultfont.h" 13#include "defaultfont.h"
18#include "rxvtcolor.h" 14#include "rxvtcolor.h"
19#include "iom.h" 15#include "iom.h"
16#include "salloc.h"
17
18#include <wchar.h>
20 19
21/* 20/*
22 ***************************************************************************** 21 *****************************************************************************
23 * SYSTEM HACKS 22 * SYSTEM HACKS
24 ***************************************************************************** 23 *****************************************************************************
315enum { 314enum {
316 PRIMARY = 0, 315 PRIMARY = 0,
317 SECONDARY 316 SECONDARY
318}; 317};
319 318
320enum {
321 SBYTE = 0,
322 WBYTE
323};
324
325
326#define RS_None 0 /* Normal */ 319#define RS_None 0 /* Normal */
327 320
328#define RS_fgMask 0x000001FFu /* 512 colors */ 321#define RS_fgMask 0x000001FFu /* 512 colors */
329#define RS_bgMask 0x0003FE00u /* 512 colors */ 322#define RS_bgMask 0x0003FE00u /* 512 colors */
330#define RS_Bold 0x00040000u /* bold */ 323#define RS_Bold 0x00040000u /* bold */
331#define RS_Blink 0x00080000u /* blink */ 324#define RS_Blink 0x00080000u /* blink */
332#define RS_RVid 0x00100000u /* reverse video */ 325#define RS_RVid 0x00100000u /* reverse video */
333#define RS_Uline 0x00200000u /* underline */ 326#define RS_Uline 0x00200000u /* underline */
334 327
335#define RS_wide 0x00400000u /* only multibyte characters */
336#define IS_WIDE(r) ((r) & RS_wide)
337
338#define RS_fontMask 0xff000000u /* plenty(?) of fonts */ 328#define RS_fontMask 0xffc00000u /* plenty(?) of fonts */
339#define RS_fontShift 24 329#define RS_fontShift 22
340 330
341#define RS_baseattrMask (RS_Bold|RS_Blink|RS_RVid|RS_Uline) 331#define RS_baseattrMask (RS_Bold|RS_Blink|RS_RVid|RS_Uline)
342#define RS_attrMask (RS_baseattrMask|RS_fontMask|RS_wide) 332#define RS_attrMask (RS_baseattrMask|RS_fontMask)
343 333
344#define Sel_none 0 /* Not waiting */ 334#define Sel_none 0 /* Not waiting */
345#define Sel_normal 0x01 /* normal selection */ 335#define Sel_normal 0x01 /* normal selection */
346#define Sel_incr 0x02 /* incremental selection */ 336#define Sel_incr 0x02 /* incremental selection */
347#define Sel_direct 0x00 337#define Sel_direct 0x00
348#define Sel_Primary 0x01 338#define Sel_Primary 0x01
349#define Sel_Secondary 0x02 339#define Sel_Secondary 0x02
350#define Sel_Clipboard 0x03 340#define Sel_Clipboard 0x03
351#define Sel_whereMask 0x0f 341#define Sel_whereMask 0x0f
352#define Sel_CompoundText 0x10 /* last request was Compound */ 342#define Sel_CompoundText 0x10 /* last request was COMPOUND_TEXT */
343#define Sel_UTF8String 0x20 /* last request was UTF8_STRING */
353 344
354enum { 345enum {
355 C0_NUL = 0x00, 346 C0_NUL = 0x00,
356 C0_SOH, C0_STX, C0_ETX, C0_EOT, C0_ENQ, C0_ACK, C0_BEL, 347 C0_SOH, C0_STX, C0_ETX, C0_EOT, C0_ENQ, C0_ACK, C0_BEL,
357 C0_BS , C0_HT , C0_LF , C0_VT , C0_FF , C0_CR , C0_SO , C0_SI , 348 C0_BS , C0_HT , C0_LF , C0_VT , C0_FF , C0_CR , C0_SO , C0_SI ,
452 TOTAL_COLORS = NRS_COLORS /* */ 443 TOTAL_COLORS = NRS_COLORS /* */
453#endif 444#endif
454}; 445};
455 446
456#define Color_Bits 9 447#define Color_Bits 9
457#define NPIXCLR_SETS 9 /* (256 + 14) bits / 32 bits */ 448#define NPIXCLR_SETS ((TOTAL_COLORS + 31) / 32)
458#define NPIXCLR_BITS 32 449#define NPIXCLR_BITS 32
459 450
460#define DEFAULT_RSTYLE (RS_None | (Color_fg) | (Color_bg<<Color_Bits)) 451#define DEFAULT_RSTYLE (RS_None | (Color_fg) | (Color_bg<<Color_Bits))
461 452
462/* 453/*
463 * Resource list 454 * Resource list
464 */ 455 */
465enum { 456enum {
480 Rs_backgroundPixmap, 471 Rs_backgroundPixmap,
481#endif 472#endif
482#if (MENUBAR_MAX) 473#if (MENUBAR_MAX)
483 Rs_menu, 474 Rs_menu,
484#endif 475#endif
485#ifndef NO_BOLDFONT
486 Rs_boldFont,
487#endif
488#ifdef GREEK_SUPPORT 476#ifdef GREEK_SUPPORT
489 Rs_greek_keyboard, 477 Rs_greek_keyboard,
490 Rs_greektoggle_key, 478 Rs_greektoggle_key,
491#endif 479#endif
492 Rs_loginShell, 480 Rs_loginShell,
551 Rs_answerbackstring, 539 Rs_answerbackstring,
552 Rs_tripleclickwords, 540 Rs_tripleclickwords,
553 Rs_cursorBlink, 541 Rs_cursorBlink,
554 Rs_pointerBlank, 542 Rs_pointerBlank,
555 Rs_pointerBlankDelay, 543 Rs_pointerBlankDelay,
544 Rs_imLocale,
556 NUM_RESOURCES 545 NUM_RESOURCES
557}; 546};
558 547
548// see init.C:xa_named, which must be kept in sync
559enum { 549enum {
560 TIMEOUT_INCR = 0, 550 XA_TEXT = 0,
561 NUM_TIMEOUTS
562};
563
564enum {
565 XA_COMPOUND_TEXT = 0, 551 XA_COMPOUND_TEXT,
552 XA_UTF8_STRING,
566 XA_MULTIPLE, 553 XA_MULTIPLE,
567 XA_TARGETS, 554 XA_TARGETS,
568 XA_TEXT,
569 XA_TIMESTAMP, 555 XA_TIMESTAMP,
570 XA_VT_SELECTION, 556 XA_VT_SELECTION,
571 XA_INCR, 557 XA_INCR,
572 XA_WMDELETEWINDOW, 558 XA_WMDELETEWINDOW,
573#ifdef TRANSPARENT 559#ifdef TRANSPARENT
578 XA_DNDSELECTION, 564 XA_DNDSELECTION,
579#endif /* OFFIX_DND */ 565#endif /* OFFIX_DND */
580 XA_CLIPBOARD, 566 XA_CLIPBOARD,
581 NUM_XA 567 NUM_XA
582}; 568};
583
584/*
585 * number of graphics points
586 * divisible by 2 (num lines)
587 * divisible by 4 (num rect)
588 */
589#define NGRX_PTS 1000
590 569
591/* DEC private modes */ 570/* DEC private modes */
592#define PrivMode_132 (1LU<<0) 571#define PrivMode_132 (1LU<<0)
593#define PrivMode_132OK (1LU<<1) 572#define PrivMode_132OK (1LU<<1)
594#define PrivMode_rVideo (1LU<<2) 573#define PrivMode_rVideo (1LU<<2)
625#else 604#else
626# define PrivMode_Default \ 605# define PrivMode_Default \
627(PrivMode_Autowrap|PrivMode_aplKP|PrivMode_ShiftKeys|PrivMode_VisibleCursor) 606(PrivMode_Autowrap|PrivMode_aplKP|PrivMode_ShiftKeys|PrivMode_VisibleCursor)
628#endif 607#endif
629 608
630#ifdef PREFER_24BIT
631# define XDEPTH R->Xdepth 609#define XDEPTH R->Xdepth
632# define XCMAP R->Xcmap 610#define XCMAP R->Xcmap
633# define XVISUAL R->Xvisual 611#define XVISUAL R->Xvisual
634#else 612
635# ifdef DEBUG_DEPTH
636# define XDEPTH DEBUG_DEPTH
637# else
638# define XDEPTH DefaultDepth(R->Xdisplay,Xscreen)
639# define XCMAP DefaultColormap(R->Xdisplay,Xscreen)
640# define XVISUAL DefaultVisual(R->Xdisplay,Xscreen)
641# endif
642#endif
643#define IMBUFSIZ 128 /* input modifier buffer sizes */ 613#define IMBUFSIZ 128 /* input modifier buffer sizes */
644#ifndef BUFSIZ 614#ifndef BUFSIZ
645# define BUFSIZ 4096 615# define BUFSIZ 4096
646#endif 616#endif
647#define KBUFSZ 512 /* size of keyboard mapping buffer */ 617#define KBUFSZ 512 /* size of keyboard mapping buffer */
648 618
649/* 619/*
650 ***************************************************************************** 620 *****************************************************************************
651 * MACRO DEFINES 621 * MACRO DEFINES
652 ***************************************************************************** 622 *****************************************************************************
666#define STRLEN(x) strlen((const char *)(x)) 636#define STRLEN(x) strlen((const char *)(x))
667#define STRCHR(x, y) strchr((const char *)(x), (int)(y)) 637#define STRCHR(x, y) strchr((const char *)(x), (int)(y))
668#define STRRCHR(x, y) strrchr((const char *)(x), (int)(y)) 638#define STRRCHR(x, y) strrchr((const char *)(x), (int)(y))
669 639
670/* convert pixel dimensions to row/column values. Everything as int32_t */ 640/* convert pixel dimensions to row/column values. Everything as int32_t */
671#define Pixel2Col(x) Pixel2Width((int32_t)(x) - (int32_t)R->TermWin.int_bwidth) 641#define Pixel2Col(x) Pixel2Width((int32_t)(x) - (int32_t)TermWin.int_bwidth)
672#define Pixel2Row(y) Pixel2Height((int32_t)(y) - (int32_t)R->TermWin.int_bwidth) 642#define Pixel2Row(y) Pixel2Height((int32_t)(y) - (int32_t)TermWin.int_bwidth)
673#define Pixel2Width(x) ((int32_t)(x) / (int32_t)R->TermWin.fwidth) 643#define Pixel2Width(x) ((int32_t)(x) / (int32_t)TermWin.fwidth)
674#define Pixel2Height(y) ((int32_t)(y) / (int32_t)R->TermWin.fheight) 644#define Pixel2Height(y) ((int32_t)(y) / (int32_t)TermWin.fheight)
675#define Col2Pixel(col) ((int32_t)Width2Pixel(col) + (int32_t)R->TermWin.int_bwidth) 645#define Col2Pixel(col) ((int32_t)Width2Pixel(col) + (int32_t)TermWin.int_bwidth)
676#define Row2Pixel(row) ((int32_t)Height2Pixel(row) + (int32_t)R->TermWin.int_bwidth) 646#define Row2Pixel(row) ((int32_t)Height2Pixel(row) + (int32_t)TermWin.int_bwidth)
677#define Width2Pixel(n) ((int32_t)(n) * (int32_t)R->TermWin.fwidth) 647#define Width2Pixel(n) ((int32_t)(n) * (int32_t)TermWin.fwidth)
678#define Height2Pixel(n) ((int32_t)(n) * (int32_t)R->TermWin.fheight) 648#define Height2Pixel(n) ((int32_t)(n) * (int32_t)TermWin.fheight)
679 649
680#define TermWin_TotalWidth() ((int32_t)R->TermWin.width + 2 * (int32_t)R->TermWin.int_bwidth) 650#define TermWin_TotalWidth() ((int32_t)TermWin.width + 2 * (int32_t)TermWin.int_bwidth)
681#define TermWin_TotalHeight() ((int32_t)R->TermWin.height + 2 * (int32_t)R->TermWin.int_bwidth) 651#define TermWin_TotalHeight() ((int32_t)TermWin.height + 2 * (int32_t)TermWin.int_bwidth)
682 652
683#define Xscreen DefaultScreen(R->Xdisplay)
684#define Xroot DefaultRootWindow(R->Xdisplay) 653#define Xroot DefaultRootWindow(R->Xdisplay)
685 654
686/* how to build & extract colors and attributes */ 655/* how to build & extract colors and attributes */
687#define GET_BASEFG(x) (((x) & RS_fgMask)) 656#define GET_BASEFG(x) (((x) & RS_fgMask))
688#define GET_BASEBG(x) (((x) & RS_bgMask)>>Color_Bits) 657#define GET_BASEBG(x) (((x) & RS_bgMask)>>Color_Bits)
715#define SET_FGCOLOR(x,fg) (((x) & ~RS_fgMask) | (fg)) 684#define SET_FGCOLOR(x,fg) (((x) & ~RS_fgMask) | (fg))
716#define SET_BGCOLOR(x,bg) (((x) & ~RS_bgMask) | ((bg)<<Color_Bits)) 685#define SET_BGCOLOR(x,bg) (((x) & ~RS_bgMask) | ((bg)<<Color_Bits))
717#define SET_ATTR(x,a) (((x) & ~RS_attrMask)| (a)) 686#define SET_ATTR(x,a) (((x) & ~RS_attrMask)| (a))
718 687
719#define SET_PIXCOLOR(h, x) ((h)->pixcolor_set[(x) / NPIXCLR_BITS] |= (1 << ((x) % NPIXCLR_BITS))) 688#define SET_PIXCOLOR(h, x) ((h)->pixcolor_set[(x) / NPIXCLR_BITS] |= (1 << ((x) % NPIXCLR_BITS)))
720#define ISSET_PIXCOLOR(h, x) ((h)->pixcolor_set[(x) / NPIXCLR_BITS] & (1 << ((x) % NPIXCLR_BITS))) 689#define ISSET_PIXCOLOR(h, x) ((h)->pixcolor_set[(x) / NPIXCLR_BITS] & (1 << ((x) % NPIXCLR_BITS)))
721 690
722#ifdef HAVE_SCROLLBARS 691#ifdef HAVE_SCROLLBARS
723# define scrollbar_TotalWidth() (R->scrollBar.width + R->sb_shadow * 2) 692# define scrollbar_TotalWidth() (scrollBar.width + sb_shadow * 2)
724#else 693#else
725# define scrollbar_TotalWidth() (0) 694# define scrollbar_TotalWidth() (0)
726#endif 695#endif
727#define scrollbar_isMotion() (R->scrollBar.state == 'm') 696#define scrollbar_isMotion() (R->scrollBar.state == 'm')
728#define scrollbar_isUp() (R->scrollBar.state == 'U') 697#define scrollbar_isUp() (R->scrollBar.state == 'U')
729#define scrollbar_isDn() (R->scrollBar.state == 'D') 698#define scrollbar_isDn() (R->scrollBar.state == 'D')
730#define scrollbar_isUpDn() isupper (R->scrollBar.state) 699#define scrollbar_isUpDn() isupper (R->scrollBar.state)
731#define isScrollbarWindow(w) (R->scrollBar.state && (w) == R->scrollBar.win) 700#define isScrollbarWindow(w) (R->scrollBar.state && (w) == R->scrollBar.win)
732
733#define scrollbar_setIdle() R->scrollBar.state = 1
734#define scrollbar_setMotion() R->scrollBar.state = 'm'
735#define scrollbar_setUp() R->scrollBar.state = 'U'
736#define scrollbar_setDn() R->scrollBar.state = 'D'
737 701
738#define scrollbarnext_dnval() (R->scrollBar.end + (R->scrollBar.width + 1)) 702#define scrollbarnext_dnval() (R->scrollBar.end + (R->scrollBar.width + 1))
739#define scrollbarnext_upButton(y) ((y) > R->scrollBar.end \ 703#define scrollbarnext_upButton(y) ((y) > R->scrollBar.end \
740 && (y) <= scrollbarnext_dnval()) 704 && (y) <= scrollbarnext_dnval())
741#define scrollbarnext_dnButton(y) ((y) > scrollbarnext_dnval()) 705#define scrollbarnext_dnButton(y) ((y) > scrollbarnext_dnval())
754#define scrollbar_size() (R->scrollBar.end - R->scrollBar.beg \ 718#define scrollbar_size() (R->scrollBar.end - R->scrollBar.beg \
755 - scrollbar_minheight()) 719 - scrollbar_minheight())
756 720
757#if (MENUBAR_MAX > 1) 721#if (MENUBAR_MAX > 1)
758/* rendition style flags */ 722/* rendition style flags */
759# define menuBar_height() (R->TermWin.fheight + SHADOW) 723# define menuBar_height() (TermWin.fheight + SHADOW)
760# define menuBar_TotalHeight() (menuBar_height() + SHADOW + menuBar_margin) 724# define menuBar_TotalHeight() (menuBar_height() + SHADOW + menuBar_margin)
761# define isMenuBarWindow(w) ((w) == R->menuBar.win) 725# define isMenuBarWindow(w) ((w) == R->menuBar.win)
762#else 726#else
763# define menuBar_height() (0) 727# define menuBar_height() (0)
764# define menuBar_TotalHeight() (0) 728# define menuBar_TotalHeight() (0)
773 737
774#ifndef STRICT_FONT_CHECKING 738#ifndef STRICT_FONT_CHECKING
775# define rxvt_get_fontwidest(font) ((font)->max_bounds.width) 739# define rxvt_get_fontwidest(font) ((font)->max_bounds.width)
776#endif 740#endif
777 741
778#define rxvt_Gr_ButtonPress(x,y) rxvt_Gr_ButtonReport (r, 'P',(x),(y)) 742#define rxvt_Gr_ButtonPress(x,y) rxvt_Gr_ButtonReport (R, 'P',(x),(y))
779#define rxvt_Gr_ButtonRelease(x,y) rxvt_Gr_ButtonReport (r, 'R',(x),(y)) 743#define rxvt_Gr_ButtonRelease(x,y) rxvt_Gr_ButtonReport (R, 'R',(x),(y))
780 744
781#ifdef UTMP_SUPPORT 745#ifdef UTMP_SUPPORT
782# if !defined(RXVT_UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX) 746# if !defined(RXVT_UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX)
783# undef HAVE_UTMPX_H 747# undef HAVE_UTMPX_H
784# undef HAVE_STRUCT_UTMPX 748# undef HAVE_STRUCT_UTMPX
839 */ 803 */
840#ifdef MENUBAR 804#ifdef MENUBAR
841# include "menubar.h" 805# include "menubar.h"
842#endif 806#endif
843 807
808#define BLINK_INTERVAL 0.5
809#define TEXT_BLINK_INTERVAL 0.5
810
844struct mbstate { 811struct mbstate {
845 unsigned char orig; 812 mbstate_t mbs;
846 uint32_t reg;
847 int cnt;
848 813
849 mbstate () 814 mbstate ()
850 { 815 {
851 cnt = 0; 816 MEMSET (&mbs, 0, sizeof (mbs));
852 } 817 }
853}; 818};
854 819
855struct rxvt_term : rxvt_vars { 820struct rxvt_term : rxvt_vars {
856 struct mbstate mbstate; 821 struct mbstate mbstate;
857#ifdef __GNUC__ 822
858 unsigned char want_refresh:1, 823 unsigned char want_refresh:1,
859 want_full_refresh:1, 824#ifdef TRANSPARENT
860 am_transparent:1, 825 want_full_refresh:1, /* awaiting full screen refresh */
861 am_pixmap_trans:1, 826#endif
862 current_screen:1, 827#if defined(XPM_BACKGROUND) || defined(TRANSPARENT)
863 hate_those_clicks:1, 828 am_transparent:1, /* is a transparent term */
829 am_pixmap_trans:1, /* transparency w/known root pixmap */
830#endif
831 current_screen:1, /* primary or secondary */
832 hate_those_clicks:1, /* a.k.a. keep mark position */
864 num_scr_allow:1, 833 num_scr_allow:1,
865 bypass_keystate:1; 834 bypass_keystate:1,
866 unsigned char chstat:1, 835#ifdef CURSOR_BLINK
867 lost_multi:1,
868 multi_byte:1,
869 hidden_cursor:1, 836 hidden_cursor:1,
837#endif
838#ifdef TEXT_BLINK
839 hidden_text:1,
840#endif
841#ifdef POINTER_BLANK
870 hidden_pointer:1, 842 hidden_pointer:1,
843#endif
871 parsed_geometry:1; 844 parsed_geometry:1,
872#else 845 seen_input:1, /* wether any input has been seen so far */
873 unsigned char want_refresh, 846 enc_utf8:1; /* wether terminal reads/writes utf-8 */
874# ifdef TRANSPARENT
875 want_full_refresh, /* awaiting full screen refresh */
876# endif
877# if defined(XPM_BACKGROUND) || defined(TRANSPARENT)
878 am_transparent, /* is a transparent term */
879 am_pixmap_trans, /* transparency w/known root pixmap */
880# endif
881 current_screen, /* primary or secondary */
882 hate_those_clicks, /* a.k.a. keep mark position */
883 num_scr_allow,
884 bypass_keystate,
885# ifdef MULTICHAR_SET
886 chstat,
887 lost_multi, /* set ==> we only got half a glyph */
888 multi_byte, /* set ==> currently using 2 bytes per glyph */
889# endif
890# ifdef CURSOR_BLINK
891 hidden_cursor,
892# endif
893# ifdef POINTER_BLANK
894 hidden_pointer,
895# endif
896 parsed_geometry;
897#endif /* !__GNUC__ */
898 847
899 unsigned char refresh_type, 848 unsigned char refresh_type,
900#ifdef UTMP_SUPPORT 849#ifdef UTMP_SUPPORT
901 next_utmp_action, 850 next_utmp_action,
902#endif 851#endif
913#ifdef GREEK_SUPPORT 862#ifdef GREEK_SUPPORT
914 short greek_mode; /* greek keyboard mode */ 863 short greek_mode; /* greek keyboard mode */
915#endif 864#endif
916 short rvideo; 865 short rvideo;
917 int16_t num_scr; /* screen: number lines scrolled */ 866 int16_t num_scr; /* screen: number lines scrolled */
918 uint16_t prev_ncol, /* screen: previous number of columns */ 867 unsigned int prev_ncol, /* screen: previous number of columns */
919 prev_nrow; /* screen: previous number of rows */ 868 prev_nrow; /* screen: previous number of rows */
920#ifdef RXVT_GRAPHICS 869#ifdef RXVT_GRAPHICS
921 uint16_t gr_prev_start; 870 uint16_t gr_prev_start;
922#endif 871#endif
923/* ---------- */ 872/* ---------- */
924 rend_t rstyle; 873 rend_t rstyle;
925/* ---------- */ 874/* ---------- */
926 uint32_t pixcolor_set[NPIXCLR_SETS]; 875 uint32_t pixcolor_set[NPIXCLR_SETS];
927/* ---------- */ 876/* ---------- */
928#ifdef SELECTION_SCROLLING 877#ifdef SELECTION_SCROLLING
929 int scroll_selection_delay, 878 int scroll_selection_delay,
930 scroll_selection_lines; 879 scroll_selection_lines;
931 enum page_dirn scroll_selection_dir; 880 enum page_dirn scroll_selection_dir;
949 fnum, /* logical font number */ 898 fnum, /* logical font number */
950 last_bot, /* scrollbar last bottom position */ 899 last_bot, /* scrollbar last bottom position */
951 last_top, /* scrollbar last top position */ 900 last_top, /* scrollbar last top position */
952 last_state, /* scrollbar last state */ 901 last_state, /* scrollbar last state */
953 scrollbar_len, 902 scrollbar_len,
954 currmaxcol,
955#ifdef MENUBAR 903#ifdef MENUBAR
956 menu_readonly, /* okay to alter menu? */ 904 menu_readonly, /* okay to alter menu? */
957 Arrows_x, 905 Arrows_x,
958#endif 906#endif
959#if (MENUBAR_MAX > 1) 907#if MENUBAR_MAX > 1
960 Nbars, 908 Nbars,
961#endif 909#endif
962 window_vt_x, 910 window_vt_x,
963 window_vt_y, 911 window_vt_y,
964 window_sb_x, 912 window_sb_x,
976#endif 924#endif
977 ttymode; 925 ttymode;
978 unsigned long PrivateModes, 926 unsigned long PrivateModes,
979 SavedModes; 927 SavedModes;
980/* ---------- */ 928/* ---------- */
981#ifdef PREFER_24BIT
982 Visual *Xvisual;
983#endif
984/* ---------- */
985 Atom xa[NUM_XA]; 929 Atom xa[NUM_XA];
986/* ---------- */ 930/* ---------- */
987#ifdef MENUBAR 931#ifdef MENUBAR
988 GC menubarGC; 932 GC menubarGC;
989#endif 933#endif
1016#if (defined(HAVE_SETEUID) || defined(HAVE_SETREUID)) && !defined(__CYGWIN32__) 960#if (defined(HAVE_SETEUID) || defined(HAVE_SETREUID)) && !defined(__CYGWIN32__)
1017 uid_t euid; 961 uid_t euid;
1018 gid_t egid; 962 gid_t egid;
1019#endif 963#endif
1020/* ---------- */ 964/* ---------- */
1021 Cursor pointer_leftptr; 965 Cursor leftptr_cursor;
1022#ifdef POINTER_BLANK 966#ifdef POINTER_BLANK
1023 Cursor pointer_blank; 967 Cursor blank_cursor;
1024#endif 968#endif
1025/* ---------- */ 969/* ---------- */
1026 const char *ttydev; /* pty/tty name */ 970 const char *ttydev; /* pty/tty name */
1027#ifndef NO_BACKSPACE_KEY 971#ifndef NO_BACKSPACE_KEY
1028 const char *key_backspace; 972 const char *key_backspace;
1087 struct timeval lastcursorchange; 1031 struct timeval lastcursorchange;
1088#endif 1032#endif
1089#ifdef POINTER_BLANK 1033#ifdef POINTER_BLANK
1090 struct timeval lastmotion; 1034 struct timeval lastmotion;
1091#endif 1035#endif
1092 struct timeval timeout[NUM_TIMEOUTS];
1093 1036
1094/* these three don't need to be kept but do so to placate some mem checkers */ 1037/* these three don't need to be kept but do so to placate some mem checkers */
1095 char *env_windowid; /* environmental variable WINDOWID */ 1038 char *env_windowid; /* environmental variable WINDOWID */
1096 char *env_display; /* environmental variable DISPLAY */ 1039 char *env_display; /* environmental variable DISPLAY */
1097 char *env_term; /* environmental variable TERM */ 1040 char *env_term; /* environmental variable TERM */
1098 char *env_colorfgbg; 1041 char *env_colorfgbg;
1099 char *buffer;
1100 char *locale; 1042 char *locale;
1043 char *codeset;
1101 char charsets[4]; 1044 char charsets[4];
1102 unsigned char *v_buffer; /* pointer to physical buffer */ 1045 unsigned char *v_buffer; /* pointer to physical buffer */
1103 unsigned char *v_bufstr; /* beginning of area to write */
1104 unsigned char *v_bufptr; /* end of area to write */ 1046 unsigned int v_buflen; /* size of area to write */
1105 unsigned char *v_bufend; /* end of physical buffer */
1106 char *newfont[MAX_NFONTS]; 1047 char *newfont[MAX_NFONTS];
1107#ifdef KEYSYM_RESOURCE 1048#ifdef KEYSYM_RESOURCE
1108 const unsigned char *Keysym_map[256]; 1049 const unsigned char *Keysym_map[256];
1109#endif 1050#endif
1110 const char *rs[NUM_RESOURCES]; 1051 const char *rs[NUM_RESOURCES];
1111/* command input buffering */ 1052/* command input buffering */
1112 unsigned char *cmdbuf_ptr, *cmdbuf_endp; 1053 unsigned char *cmdbuf_ptr, *cmdbuf_endp;
1113 unsigned char cmdbuf_base[BUFSIZ]; 1054 unsigned char cmdbuf_base[BUFSIZ];
1114 unsigned char kbuf[KBUFSZ]; 1055
1056 rxvt_salloc *ralloc;
1057 rxvt_salloc *talloc;
1058
1059 void paste (const unsigned char *data, unsigned int len);
1060
1061 void flush ();
1062
1063 void check_cb (check_watcher &w); check_watcher check_ev;
1064 void destroy_cb (time_watcher &w); time_watcher destroy_ev;
1115 1065
1116 void pty_cb (io_watcher &w, short revents); io_watcher pty_ev; 1066 void pty_cb (io_watcher &w, short revents); io_watcher pty_ev;
1117 void x_cb (io_watcher &w, short revents); io_watcher x_ev; 1067 void x_cb (io_watcher &w, short revents); io_watcher x_ev;
1118 1068
1119 void flush (); 1069 void incr_cb (time_watcher &w); time_watcher incr_ev;
1070
1071#ifdef CURSOR_BLINK
1072 void cursor_blink_cb (time_watcher &w); time_watcher cursor_blink_ev;
1073#endif
1074#ifdef TEXT_BLINK
1075 void text_blink_cb (time_watcher &w); time_watcher text_blink_ev;
1076#endif
1077
1078#ifdef POINTER_BLANK
1079 void pointer_cb (time_watcher &w); time_watcher pointer_ev;
1080 void pointer_blank ();
1081 void pointer_unblank ();
1082#endif
1083
1084 void tt_printf (const char *fmt,...);
1085 void tt_write (const unsigned char *data, unsigned int len);
1086
1087 void tt_winch ();
1120 1088
1121 rxvt_term (); 1089 rxvt_term ();
1122 ~rxvt_term (); 1090 ~rxvt_term ();
1091 void destroy ();
1123 1092
1124 bool init (int argc, const char *const *argv); 1093 bool init (int argc, const char *const *argv);
1125 bool init_vars (); 1094 bool init_vars ();
1126 1095
1127 uint32_t next_char (); 1096 uint32_t next_char ();
1128 1097
1129 bool pty_fill (size_t count); 1098 bool pty_fill ();
1130 void process_x_events (); 1099 void process_x_events ();
1131 1100
1132 void *operator new (size_t s); 1101 void *operator new (size_t s);
1133 void operator delete (void *p, size_t s); 1102 void operator delete (void *p, size_t s);
1103
1104 void init_secondary ();
1105 const char **init_resources (int argc, const char *const *argv);
1106 void init_env ();
1107 void set_locale (const char *locale);
1108 void init_xlocale ();
1109 void init_command (const char *const *argv);
1110 int run_command (const char *const *argv);
1111 int run_child (const char *const *argv);
1112
1113 void color_aliases(int idx);
1114 void recolour_cursor ();
1115 void create_windows (int argc, const char *const *argv);
1116 void resize_all_windows (unsigned int width, unsigned int height, int ignoreparent);
1117 void window_calc (unsigned int width, unsigned int height);
1118 void set_preedit_area (XRectangle * preedit_rect, XRectangle * status_rect, XRectangle * needed_rect);
1119
1120#if USE_XIM
1121 void set_size (XRectangle *size);
1122 void set_position (XPoint *pos);
1123 void set_color (unsigned long *fg, unsigned long *bg);
1124#endif
1125
1126 void resize_scrollbar ();
1127
1128 void pixel_position (int *x, int *y);
1129
1130 void selection_click (int clicks, int x, int y);
1131 void selection_extend (int x, int y, int flag);
1132 void selection_rotate (int x, int y);
1133
1134 /* screen(!) */
1135 void scr_blank_line (text_t *et, rend_t *er, unsigned int width, rend_t efs);
1136 void scr_blank_screen_mem (text_t **tp, rend_t **rp, unsigned int row, rend_t efs);
1137 int scr_scroll_text (int row1, int row2, int count, int spec);
1138 void scr_reset ();
1139 void scr_reset_realloc ();
1140 void scr_release ();
1141 void scr_clear ();
1142 void scr_refresh (unsigned char refresh_type);
1143 bool scr_refresh_rend (rend_t mask, rend_t value);
1144 void scr_erase_screen (int mode);
1145 void scr_touch (bool refresh);
1146 void scr_expose (int x, int y, int width, int height, bool refresh);
1134}; 1147};
1148
1149#define SET_LOCALE(locale) rxvt_set_locale (locale)
1150extern void rxvt_set_locale (const char *locale);
1135 1151
1136#ifndef __attribute__ 1152#ifndef __attribute__
1137# ifdef __GNUC__ 1153# ifdef __GNUC__
1138# if (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || (__GNUC__ < 2) 1154# if (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || (__GNUC__ < 2)
1139# define __attribute__(x) 1155# define __attribute__(x)
1157#ifdef DEBUG_malloc 1173#ifdef DEBUG_malloc
1158# include "dmalloc.h" /* This comes last */ 1174# include "dmalloc.h" /* This comes last */
1159#endif 1175#endif
1160 1176
1161#endif /* _RXVT_H_ */ 1177#endif /* _RXVT_H_ */
1178

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines