--- rxvt-unicode/src/command.C 2004/09/05 09:32:59 1.168 +++ rxvt-unicode/src/command.C 2004/12/13 01:29:03 1.176 @@ -51,6 +51,7 @@ #include "command.h" #include +#include /*----------------------------------------------------------------------*/ @@ -419,7 +420,7 @@ case XK_Insert: /* Shift+Insert = paste mouse selection */ selection_request (ev.time, 0, 0); return; -#if TODO // TODO +#if TODO /* rxvt extras */ case XK_KP_Add: /* Shift+KP_Add = bigger font */ change_font (FONT_UP); @@ -1218,9 +1219,9 @@ } #endif - Window unused_root, unused_child; - int unused_root_x, unused_root_y; - unsigned int unused_mask; + Window unused_root, unused_child; + int unused_root_x, unused_root_y; + unsigned int unused_mask; switch (ev.type) { @@ -1335,12 +1336,9 @@ &ActualType, &ActualFormat, &Size, &RemainingBytes, &data); - XChangeProperty (display->display, display->root, - XA_CUT_BUFFER0, XA_STRING, - 8, PropModeReplace, - data, strlen (data)); + set_string_property (XA_CUT_BUFFER0, data); XFree (data); - selection_paste (display->root, XA_CUT_BUFFER0, True); + selection_paste (display->root, XA_CUT_BUFFER0, true); XSetInputFocus (display->display, display->root, RevertToNone, CurrentTime); } #endif /* OFFIX_DND */ @@ -1454,11 +1452,7 @@ #ifdef TRANSPARENT /* XXX: maybe not needed - leave in for now */ if (options & Opt_transparent) - { - check_our_parents (); - if (am_transparent) - want_refresh = want_full_refresh = 1; - } + check_our_parents (); #endif } break; @@ -1476,8 +1470,7 @@ case SelectionNotify: if (selection_wait == Sel_normal) - selection_paste (ev.xselection.requestor, - ev.xselection.property, True); + selection_paste (ev.xselection.requestor, ev.xselection.property, true); break; case SelectionRequest: @@ -2417,6 +2410,8 @@ MIN_IT (nw, (unsigned int) (wrootattr.width - sx)); MIN_IT (nh, (unsigned int) (wrootattr.height - sy)); + + XSync (display->display, False); allowedxerror = -1; image = XGetImage (display->display, rootpixmap, sx, sy, nw, nh, AllPlanes, ZPixmap); @@ -2472,7 +2467,9 @@ } } - if (!am_pixmap_trans) + if (am_pixmap_trans) + XSetWindowBackgroundPixmap (display->display, TermWin.vt, ParentRelative); + else { unsigned int n; /* @@ -2547,6 +2544,13 @@ scrollbar_show (0); } + if (am_transparent) + { + want_refresh = want_full_refresh = 1; + if (am_pixmap_trans) + flush (); + } + return pchanged; } #endif @@ -3514,10 +3518,10 @@ unsigned char * rxvt_term::get_to_st (unicode_t &ends_how) { - unicode_t seen_esc = 0, ch; + unicode_t ch; + bool seen_esc = false; unsigned int n = 0; - unsigned char *s; - unsigned char string[STRING_MAX]; + wchar_t string[STRING_MAX]; while ((ch = cmd_getc ()) != NOCHAR) { @@ -3530,7 +3534,7 @@ } else if (ch == C0_ESC) { - seen_esc = 1; + seen_esc = true; continue; } else if (ch == C0_BEL || ch == CHAR_ST) @@ -3538,7 +3542,7 @@ else if (ch < 0x20) return NULL; /* other control character - exit */ - seen_esc = 0; + seen_esc = false; if (n >= sizeof (string) - 1) // stop at some sane length @@ -3552,12 +3556,9 @@ string[n++] = '\0'; - if ((s = (unsigned char *)rxvt_malloc (n)) == NULL) - return NULL; - ends_how = (ch == 0x5c ? C0_ESC : ch); - strncpy (s, string, n); - return s; + + return (unsigned char *)rxvt_wcstombs (string); } /*----------------------------------------------------------------------*/ @@ -3668,7 +3669,7 @@ case XTerm_property: if (str[0] == '?') { - Atom prop = XInternAtom (display->display, str + 1, True); + Atom prop = display->atom (str + 1); Atom actual_type; int actual_format; unsigned long nitems; @@ -3696,10 +3697,7 @@ if (eq) { *eq = 0; - XChangeProperty (display->display, TermWin.parent[0], - display->atom (str), XA_STRING, 8, - PropModeReplace, (unsigned char *)eq + 1, - strlen (eq + 1)); + set_utf8_property (display->atom (str), eq + 1); } else XDeleteProperty (display->display, TermWin.parent[0], @@ -3763,7 +3761,7 @@ process_color_seq (XTerm_Color_RV, Color_RV, str, resp); break; #endif -#if TRANSPARENT || TINTING +#if TRANSPARENT && TINTING case XTerm_Color_tint: process_color_seq (XTerm_Color_tint, Color_tint, str, resp); check_our_parents ();