- fix a bug that kept escape codes to be generated for some
keysyms that also have string translations, when not --enable-xim.
reported by joel reed.
- - countless minor bugfixes.
- re-enabled esc-seq. for font-switching (\033 ] 50 ; <fontset> \007).
- fix bug in locale-handling that kept the correct locale from
being selected.
- implemented esc-seq. to switch locales (\033 ] 9 ; <locale> \007).
- removed greek support.
- allow NUL bytes (ctrl-@) to be entered even with XIM enabled.
+ - correct cursor width if !focus.
+ - many other minor bugfixes.
1.8 Mon Feb 2 20:09:18 CET 2004
- almost total conversion to C++. Except for introducing
void
rxvt_term::scr_refresh (unsigned char refresh_type)
{
- unsigned char clearfirst, /* first character writes before cell */
- clearlast, /* last character writes beyond cell */
- must_clear, /* use draw_string not draw_image_string */
- rvid, /* reverse video this position */
- showcursor; /* show the cursor */
- int16_t col, row, /* column/row we're processing */
- ocrow; /* old cursor row */
- int cursorwidth;
- int i, /* tmp */
- row_offset; /* basic offset in screen structure */
+ unsigned char clearfirst, /* first character writes before cell */
+ clearlast, /* last character writes beyond cell */
+ must_clear, /* use draw_string not draw_image_string */
+ rvid, /* reverse video this position */
+ showcursor; /* show the cursor */
+ int16_t col, row, /* column/row we're processing */
+ ocrow; /* old cursor row */
+ int i, /* tmp */
+ row_offset; /* basic offset in screen structure */
#ifndef NO_CURSORCOLOR
- rend_t cc1; /* store colours at cursor position (s) */
+ rend_t cc1; /* store colours at cursor position (s) */
#endif
- rend_t *drp, *srp; /* drawn-rend-pointer, screen-rend-pointer */
- text_t *dtp, *stp; /* drawn-text-pointer, screen-text-pointer */
+ rend_t *drp, *srp; /* drawn-rend-pointer, screen-rend-pointer */
+ text_t *dtp, *stp; /* drawn-text-pointer, screen-text-pointer */
if (refresh_type == NO_REFRESH || !TermWin.mapped)
return;
ccol2; /* Cursor colour2 */
showcursor = (screen.flags & Screen_VisibleCursor);
- cursorwidth = 0;
#ifdef CURSOR_BLINK
if (hidden_cursor)
showcursor = 0;
#endif
- cursorwidth = 0;
-
if (showcursor)
{
- cursorwidth++;
-
srp = & (screen.rend[screen.cur.row + TermWin.saveLines]
[screen.cur.col]);
*srp = SET_FGCOLOR (*srp, ccol1);
*srp = SET_BGCOLOR (*srp, ccol2);
#endif
-
}
}
#ifndef NO_CURSORCOLOR
*srp = (*srp & ~ (RS_fgMask | RS_bgMask)) | cc1;
#endif
-
}
else if (oldcursor.row >= 0)
{
if (ISSET_PIXCOLOR (Color_cursor))
XSetForeground (display->display, TermWin.gc, PixColors[Color_cursor]);
#endif
+ int cursorwidth = 1;
+ while (oldcursor.col + cursorwidth < TermWin.ncol
+ && drawn_text[oldcursor.row][oldcursor.col + cursorwidth] == NOCHAR)
+ cursorwidth++;
+
XDrawRectangle (display->display, drawBuffer, TermWin.gc,
Col2Pixel (oldcursor.col),
Row2Pixel (oldcursor.row),