--- rxvt-unicode/src/screen.C 2014/12/13 12:24:33 1.453 +++ rxvt-unicode/src/screen.C 2015/01/18 13:08:46 1.454 @@ -2120,18 +2120,13 @@ ccol2 = Color_bg; #endif - if (focus && cursor_type != 2) + if (focus && cursor_type == 0) { rend_t rend = cur_rend; - if (cursor_type == 1) - rend ^= RS_Uline; - else - { - rend ^= RS_RVid; - rend = SET_FGCOLOR (rend, ccol1); - rend = SET_BGCOLOR (rend, ccol2); - } + rend ^= RS_RVid; + rend = SET_FGCOLOR (rend, ccol1); + rend = SET_BGCOLOR (rend, ccol2); scr_set_char_rend (ROW(screen.cur.row), cur_col, rend); } @@ -2143,9 +2138,9 @@ // save the current cursor coordinates if the cursor is visible // and either the window is unfocused or the cursor style is - // vertical bar, so as to clear the outline cursor in the next - // refresh if the cursor moves or becomes invisible - if (showcursor && (!focus || cursor_type == 2) && screen.cur.row - view_start < nrow) + // underline or vertical bar, so as to clear the outline cursor in + // the next refresh if the cursor moves or becomes invisible + if (showcursor && (!focus || cursor_type != 0) && screen.cur.row - view_start < nrow) { oldcursor.row = screen.cur.row - view_start; oldcursor.col = screen.cur.col; @@ -2449,16 +2444,23 @@ { if (focus) { - if (cursor_type != 2) + if (cursor_type == 0) scr_set_char_rend (ROW(screen.cur.row), cur_col, cur_rend); else if (oldcursor.row >= 0) { XSetForeground (dpy, gc, pix_colors[ccol1]); - XFillRectangle (dpy, vt, gc, - Col2Pixel (cur_col), - Row2Pixel (oldcursor.row), - 1, - Height2Pixel (1)); + if (cursor_type == 1) + XFillRectangle (dpy, vt, gc, + Col2Pixel (cur_col), + Row2Pixel (oldcursor.row + 1) - 2, + Width2Pixel (1), + 2); + else + XFillRectangle (dpy, vt, gc, + Col2Pixel (cur_col), + Row2Pixel (oldcursor.row), + 2, + Height2Pixel (1)); } } else if (oldcursor.row >= 0)