--- rxvt-unicode/src/screen.C 2006/07/06 18:56:10 1.264 +++ rxvt-unicode/src/screen.C 2006/10/09 23:12:45 1.266 @@ -411,7 +411,7 @@ tabs = (char *)rxvt_malloc (ncol * sizeof (char)); - for (int col = ncol; col--; ) + for (int col = ncol; --col; ) tabs [col] = col % TABSIZE == 0; if (current_screen != PRIMARY) @@ -1980,6 +1980,8 @@ rend_t cc1; /* store colours at cursor position (s) */ #endif rend_t *crp; // cursor rendition pointer + rend_t ccol1, /* Cursor colour */ + ccol2; /* Cursor colour2 */ want_refresh = 0; /* screen is current */ @@ -2010,8 +2012,6 @@ */ { unsigned char setoldcursor; - rend_t ccol1, /* Cursor colour */ - ccol2; /* Cursor colour2 */ showcursor = (screen.flags & Screen_VisibleCursor); #ifdef CURSOR_BLINK @@ -2028,35 +2028,38 @@ crp = &ROW(screen.cur.row).r[col]; - if (showcursor && focus) - { - if (OPTION (Opt_cursorUnderline)) - *crp ^= RS_Uline; - else - { - *crp ^= RS_RVid; - #ifndef NO_CURSORCOLOR - cc1 = *crp & (RS_fgMask | RS_bgMask); - if (ISSET_PIXCOLOR (Color_cursor)) - ccol1 = Color_cursor; - else + cc1 = *crp & (RS_fgMask | RS_bgMask); + if (ISSET_PIXCOLOR (Color_cursor)) + ccol1 = Color_cursor; + else +#endif #ifdef CURSOR_COLOR_IS_RENDITION_COLOR - ccol1 = fgcolor_of (rstyle); + ccol1 = fgcolor_of (rstyle); #else - ccol1 = Color_fg; + ccol1 = Color_fg; +#endif + +#ifndef NO_CURSORCOLOR + if (ISSET_PIXCOLOR (Color_cursor2)) + ccol2 = Color_cursor2; + else #endif - if (ISSET_PIXCOLOR (Color_cursor2)) - ccol2 = Color_cursor2; - else #ifdef CURSOR_COLOR_IS_RENDITION_COLOR - ccol2 = bgcolor_of (rstyle); + ccol2 = bgcolor_of (rstyle); #else - ccol2 = Color_bg; + ccol2 = Color_bg; #endif + + if (showcursor && focus) + { + if (OPTION (Opt_cursorUnderline)) + *crp ^= RS_Uline; + else + { + *crp ^= RS_RVid; *crp = SET_FGCOLOR (*crp, ccol1); *crp = SET_BGCOLOR (*crp, ccol2); -#endif } } } @@ -2348,9 +2351,7 @@ */ rxvt_font *font = (*fontset[GET_STYLE (rend)])[GET_FONT (rend)]; - if (back == fore) - font->clear_rect (*drawable, xpixel, ypixel, fwidth * count, fheight, back); - else if (back == Color_bg && have_bg) + if (back == Color_bg && have_bg) { // this is very ugly, maybe push it into ->draw? @@ -2420,7 +2421,9 @@ #ifndef NO_CURSORCOLOR if (ISSET_PIXCOLOR (Color_cursor)) XSetForeground (dpy, gc, pix_colors[Color_cursor]); + else #endif + XSetForeground (dpy, gc, pix_colors[ccol1]); XDrawRectangle (dpy, drawBuffer, gc, Col2Pixel (col),