--- rxvt-unicode/src/rxvttoolkit.C 2011/05/11 18:41:33 1.125 +++ rxvt-unicode/src/rxvttoolkit.C 2012/01/13 12:40:53 1.130 @@ -451,7 +451,7 @@ screen = DefaultScreen (dpy); root = DefaultRootWindow (dpy); - assert (ARRAY_LENGTH(xa_names) == NUM_XA); + assert (ecb_array_length (xa_names) == NUM_XA); XInternAtoms (dpy, (char **)xa_names, NUM_XA, False, xa); XrmSetDatabase (dpy, get_resources (false)); @@ -688,7 +688,7 @@ rxvt_color::alloc (rxvt_screen *screen, const rgba &color) { //TODO: only supports 24 bit - int alpha = color.a >= 0xff00 ? 0xffff : color.a; + unsigned int alpha = color.a >= 0xff00 ? 0xffff : color.a; #if XFT XRenderPictFormat *format; @@ -727,7 +727,8 @@ d.blue = color.b; d.alpha = alpha; - return XftColorAllocValue (screen->dpy, screen->visual, screen->cmap, &d, &c); + if (XftColorAllocValue (screen->dpy, screen->visual, screen->cmap, &d, &c)) + return true; } #else c.red = color.r; @@ -736,20 +737,20 @@ if (screen->visual->c_class == TrueColor) { - c.pixel = (color.r >> (16 - rxvt_popcount (screen->visual->red_mask )) << rxvt_ctz (screen->visual->red_mask )) - | (color.g >> (16 - rxvt_popcount (screen->visual->green_mask)) << rxvt_ctz (screen->visual->green_mask)) - | (color.b >> (16 - rxvt_popcount (screen->visual->blue_mask )) << rxvt_ctz (screen->visual->blue_mask )); + c.pixel = (color.r >> (16 - ecb_popcount32 (screen->visual->red_mask )) << ecb_ctz32 (screen->visual->red_mask )) + | (color.g >> (16 - ecb_popcount32 (screen->visual->green_mask)) << ecb_ctz32 (screen->visual->green_mask)) + | (color.b >> (16 - ecb_popcount32 (screen->visual->blue_mask )) << ecb_ctz32 (screen->visual->blue_mask )); return true; } else if (XAllocColor (screen->dpy, screen->cmap, &c)) return true; - else - c.pixel = (color.r + color.g + color.b) > 128*3 - ? WhitePixelOfScreen (DefaultScreenOfDisplay (screen->dpy)) - : BlackPixelOfScreen (DefaultScreenOfDisplay (screen->dpy)); #endif + c.pixel = (color.r + color.g + color.b) > 128*3 + ? WhitePixelOfScreen (DefaultScreenOfDisplay (screen->dpy)) + : BlackPixelOfScreen (DefaultScreenOfDisplay (screen->dpy)); + return false; } @@ -913,6 +914,7 @@ incr_buf_size = incr_buf_fill = 0; selection_wait = Sel_normal; selection_type = selnum; + cb_sv = 0; } void @@ -962,7 +964,7 @@ void rxvt_selection::finish (char *data, unsigned int len) { - if (term) + if (!cb_sv) { if (data) term->paste (data, len); @@ -1179,8 +1181,7 @@ case SelectionNotify: if (selection_wait == Sel_normal - && xev.xselection.time == request_time - && xev.xselection.property == request_prop) + && xev.xselection.time == request_time) { timer_ev.stop (); handle_selection (xev.xselection.requestor, xev.xselection.property, true);