--- rxvt-unicode/src/rxvt.h 2004/08/25 03:52:09 1.121 +++ rxvt-unicode/src/rxvt.h 2005/02/14 18:47:54 1.146 @@ -12,7 +12,7 @@ #include #include #if ENABLE_FRILLS -#include +# include #endif #include "encoding.h" @@ -88,7 +88,10 @@ void * rxvt_malloc (size_t size); void * rxvt_calloc (size_t number, size_t size); void * rxvt_realloc (void *ptr, size_t size); -char * rxvt_wcstombs (const wchar_t *str, int len); +char * rxvt_wcstombs (const wchar_t *str, int len = -1); +wchar_t * rxvt_mbstowcs (const char *str, int len = -1); +char * rxvt_wcstoutf8 (const wchar_t *str, int len = -1); +wchar_t * rxvt_utf8towcs (const char *str, int len = -1); char * rxvt_strdup (const char *str); char * rxvt_r_basename (const char *str); void rxvt_vlog (const char *fmt, va_list arg_ptr); @@ -101,6 +104,7 @@ char * rxvt_Str_trim (char *str); int rxvt_Str_escaped (char *str); char ** rxvt_splitcommastring (const char *cs); +void rxvt_freecommastring (char **cs); char * rxvt_File_find (const char *file, const char *ext, const char *path); void rxvt_Draw_Shadow (Display *display, Window win, GC topShadow, GC botShadow, int x, int y, int w, int h); void rxvt_Draw_Triangle (Display *display, Window win, GC topShadow, GC botShadow, int x, int y, int w, int type); @@ -133,8 +137,8 @@ #ifdef XPM_BACKGROUND typedef struct { - short w, h, x, y; - Pixmap pixmap; + short w, h, x, y; + Pixmap pixmap; } bgPixmap_t; #endif @@ -143,10 +147,10 @@ * pared down from XButtonEvent */ struct mouse_event { - int clicks; - Time time; /* milliseconds */ - unsigned int state; /* key or button mask */ - unsigned int button; /* detail */ + int clicks; + Time time; /* milliseconds */ + unsigned int state; /* key or button mask */ + unsigned int button; /* detail */ }; #define MAX_IT(current, other) if ((other) > (current)) (current) = (other) @@ -498,6 +502,9 @@ Color_UL, Color_RV, #endif +#if ENABLE_FRILLS + Color_underline, +#endif #ifdef OPTION_HC Color_HC, #endif @@ -558,8 +565,9 @@ Rs_scrollBar_right, Rs_scrollBar_floating, Rs_scrollBar_align, -#endif Rs_scrollstyle, /* Rs_scrollBar_style */ + Rs_scrollBar_thickness, +#endif Rs_scrollTtyOutput, Rs_scrollTtyKeypress, Rs_scrollWithBuffer, @@ -597,10 +605,8 @@ Rs_ext_bwidth, Rs_int_bwidth, Rs_borderLess, -#endif - Rs_scrollBar_thickness, -#ifndef NO_LINESPACE Rs_lineSpace, + Rs_embed, #endif Rs_cutchars, Rs_modifier, @@ -611,6 +617,8 @@ Rs_pointerBlank, Rs_pointerBlankDelay, Rs_imLocale, + Rs_imFont, + Rs_pastableTabs, #ifndef NO_SECONDARY_SCREEN Rs_secondaryScreen, Rs_secondaryScroll, @@ -635,15 +643,24 @@ XA_VT_SELECTION, XA_INCR, XA_WMDELETEWINDOW, -#ifdef TRANSPARENT - XA_XROOTPMAPID, - XA_XSETROOTID, + XA_CLIPBOARD, +#if ENABLE_FRILLS + XA_NET_WM_PID, + XA_MOTIF_WM_HINTS, + XA_NET_WM_NAME, + XA_NET_WM_ICON_NAME, #endif -#ifdef OFFIX_DND /* OffiX Dnd (drag 'n' drop) support */ +#if USE_XIM + XA_WM_LOCALE_NAME, +#endif +#if TRANSPARENT + XA_XROOTPMAP_ID, + XA_ESETROOT_PMAP_ID, +#endif +#if OFFIX_DND /* OffiX Dnd (drag 'n' drop) support */ XA_DNDPROTOCOL, XA_DNDSELECTION, -#endif /* OFFIX_DND */ - XA_CLIPBOARD, +#endif NUM_XA }; @@ -743,6 +760,8 @@ #define strchr(x, y) strchr((const char *)(x), (int)(y)) #define strrchr(x, y) strrchr((const char *)(x), (int)(y)) +#define dDisp Display *disp = display->display + /* convert pixel dimensions to row/column values. Everything as int32_t */ #define Pixel2Col(x) Pixel2Width((int32_t)(x)) #define Pixel2Row(y) Pixel2Height((int32_t)(y)) @@ -850,13 +869,6 @@ # define XPMClearArea(a, b, c, d, e, f, g) #endif -#ifndef STRICT_FONT_CHECKING -# define rxvt_get_fontwidest(font) ((font)->max_bounds.width) -#endif - -#define rxvt_Gr_ButtonPress(x,y) rxvt_Gr_ButtonReport (R, 'P',(x),(y)) -#define rxvt_Gr_ButtonRelease(x,y) rxvt_Gr_ButtonReport (R, 'R',(x),(y)) - #ifdef UTMP_SUPPORT # if !defined(RXVT_UTMPX_FILE) || !defined(HAVE_STRUCT_UTMPX) # undef HAVE_UTMPX_H @@ -939,6 +951,8 @@ mbstate () { reset (); } }; +#define UNICODE_MASK 0x1fffffUL + #if UNICODE3 # define COMPOSE_LO 0x40000000UL # define COMPOSE_HI 0x400fffffUL @@ -977,6 +991,10 @@ #endif +#ifdef KEYSYM_RESOURCE + class keyboard_manager; +#endif + struct rxvt_term : zero_initialized, rxvt_vars { log_callback *log_hook; // log error messages through this hook, if != 0 @@ -1003,7 +1021,7 @@ #ifdef POINTER_BLANK hidden_pointer:1, #endif -// enc_utf8:1, /* wether terminal reads/writes utf-8 */ + enc_utf8:1, /* wether locale uses utf-8 */ seen_input:1, /* wether we have seen some program output yet */ seen_resize:1, /* wether we had a resize event */ parsed_geometry:1; @@ -1017,8 +1035,8 @@ selection_type; /* ---------- */ short rvideo; - int16_t num_scr; /* screen: number lines scrolled */ - unsigned int prev_ncol, /* screen: previous number of columns */ + int num_scr; /* screen: number lines scrolled */ + int prev_ncol, /* screen: previous number of columns */ prev_nrow; /* screen: previous number of rows */ /* ---------- */ rend_t rstyle; @@ -1059,9 +1077,10 @@ # endif allowedxerror; /* ---------- */ - unsigned int ModMetaMask, - ModNumLockMask, - old_width, /* last used width in screen resize */ + unsigned int ModLevel3Mask, + ModMetaMask, + ModNumLockMask; + int old_width, /* last used width in screen resize */ old_height; /* last used height in screen resize */ unsigned long priv_modes, SavedModes; @@ -1099,11 +1118,10 @@ Time selection_time, selection_request_time; pid_t cmd_pid; /* process id of child */ + char * incr_buf; + size_t incr_buf_size, incr_buf_fill; /* ---------- */ Cursor leftptr_cursor; -#ifdef POINTER_BLANK - Cursor blank_cursor; -#endif /* ---------- */ #ifndef NO_BACKSPACE_KEY const char *key_backspace; @@ -1111,11 +1129,6 @@ #ifndef NO_DELETE_KEY const char *key_delete; #endif -#ifdef USE_XIM - rxvt_xim *input_method; - XIC Input_Context; - XIMStyle input_style; -#endif struct mouse_event MEvent; XComposeStatus compose; ttymode_t tio; @@ -1172,16 +1185,15 @@ char *env_term; /* environmental variable TERM */ char *env_colorfgbg; char *locale; -#if 0 - char *codeset; -#endif char charsets[4]; unsigned char *v_buffer; /* pointer to physical buffer */ unsigned int v_buflen; /* size of area to write */ stringvec *argv, *envv; /* if != 0, will be freed on destroy time */ + #ifdef KEYSYM_RESOURCE - const unsigned char *Keysym_map[256]; + keyboard_manager *keyboard; #endif + const char *rs[NUM_RESOURCES]; /* command input buffering */ unsigned char *cmdbuf_ptr, *cmdbuf_endp; @@ -1203,7 +1215,8 @@ # endif #endif - void paste (const unsigned char *data, unsigned int len); + // modifies first argument(!) + void paste (unsigned char *data, unsigned int len); void flush (); @@ -1212,6 +1225,10 @@ xevent_watcher rootwin_ev; #endif + + void sig_term (sig_watcher &w); sig_watcher sw_term, sw_int; + void sig_chld (sig_watcher &w); sig_watcher sw_chld; + void x_cb (XEvent &xev); xevent_watcher termwin_ev; xevent_watcher vt_ev; @@ -1255,12 +1272,14 @@ void tt_printf (const char *fmt,...); void tt_write (const unsigned char *data, unsigned int len); + void pty_write (); void tt_winch (); rxvt_term (); ~rxvt_term (); void destroy (); + void emergency_cleanup (); bool init (int argc, const char *const *argv); bool init_vars (); @@ -1275,7 +1294,6 @@ void init_command (const char *const *argv); void run_command (const char *const *argv); int run_child (const char *const *argv); - static void child_exited (int pid); void color_aliases (int idx); void recolour_cursor (); @@ -1284,6 +1302,11 @@ void window_calc (unsigned int width, unsigned int height); #if USE_XIM + rxvt_xim *input_method; + XIC Input_Context; + XIMStyle input_style; + XPoint spot; // most recently sent spot position + void im_destroy (); void im_cb (); im_watcher im_ev; void im_set_size (XRectangle &size); @@ -1349,6 +1372,8 @@ // main.C void privileged_utmp (rxvt_privaction action); bool set_fonts (); + void set_string_property (Atom prop, const char *str, int len = -1); + void set_utf8_property (Atom prop, const char *str, int len = -1); void set_title (const char *str); void set_icon_name (const char *str); void set_window_color (int idx, const char *color); @@ -1443,7 +1468,7 @@ void scr_reverse_selection (); void scr_dump (int fd); void selection_check (int check_more); - int selection_paste (Window win, Atom prop, bool delete_prop); + void selection_paste (Window win, Atom prop, bool delete_prop); void selection_property (Window win, Atom prop); void selection_request (Time tm, int x, int y); int selection_request_other (Atom target, int selnum); @@ -1488,7 +1513,7 @@ void get_options (int argc, const char *const *argv); int parse_keysym (const char *str, const char *arg); void get_xdefaults (FILE *stream, const char *name); - void extract_resources (Display *display, const char *name); + void extract_resources (); // xpm.C int scale_pixmap (const char *geom); void resize_pixmap ();