--- rxvt-unicode/src/screen.C 2005/06/26 20:06:52 1.166 +++ rxvt-unicode/src/screen.C 2005/08/11 13:23:06 1.168 @@ -1950,19 +1950,23 @@ rxvt_term::scr_bell () { #ifndef NO_BELL + # ifndef NO_MAPALERT # ifdef MAPALERT_OPTION if (options & Opt_mapAlert) # endif XMapWindow (display->display, TermWin.parent[0]); # endif + if (options & Opt_visualBell) { scr_rvideo_mode (!rvideo); /* refresh also done */ + rxvt_usleep (VISUAL_BELL_DURATION); scr_rvideo_mode (!rvideo); /* refresh also done */ } else XBell (display->display, 0); + #endif } @@ -2306,27 +2310,27 @@ while (i && text[count] == NOCHAR) count++, i--; -#if ENABLE_STYLES - // force redraw after "careful" characters to avoid pixel droppings - if (srp[col] & RS_Careful && col < TermWin.ncol - 1 && 0) - drp[col + 1] = ~srp[col + 1]; - - // include previous careful character(s) if possible, looks nicer (best effort...) - while (text > stp - && srp[text - stp - 1] & RS_Careful - && RS_SAME (rend, srp[text - stp - 1])) - text--, count++, xpixel -= TermWin.fwidth; -#endif - /* * Determine the attributes for the string */ int fore = GET_FGCOLOR (rend); // desired foreground int back = GET_BGCOLOR (rend); // desired background - // only do special processing if ana attributes are set, which is rare - if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink)) + // only do special processing if any attributes are set, which is rare + if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink | RS_Careful)) { +#if ENABLE_STYLES + // force redraw after "careful" characters to avoid pixel droppings + if (srp[col] & RS_Careful && col < TermWin.ncol - 1 && 0) + drp[col + 1] = ~srp[col + 1]; + + // include previous careful character(s) if possible, looks nicer (best effort...) + while (text > stp + && srp[text - stp - 1] & RS_Careful + && RS_SAME (rend, srp[text - stp - 1])) + text--, count++, xpixel -= TermWin.fwidth; +#endif + bool invert = rend & RS_RVid; #ifndef NO_BOLD_UNDERLINE_REVERSE @@ -2363,6 +2367,12 @@ #ifndef NO_BOLD_UNDERLINE_REVERSE if (ISSET_PIXCOLOR (Color_RV)) back = Color_RV; + + if (fore == back) + { + fore = Color_bg; + back = Color_fg; + } #endif }