repo: rxvt-unicode-sixel action: commit revision: path_from: revision_from: e8b7f384b58b46725c7d62f8b8a1ffd12c45e6fe: path_to: revision_to:
commit e8b7f384b58b46725c7d62f8b8a1ffd12c45e6fe Author: Marc LehmannDate: Tue Feb 24 11:48:40 2004 +0000 *** empty log message *** diff --git a/Changes b/Changes
--- a/Changes
+++ b/Changes
@@ -11,13 +11,14 @@
- 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 ; \007).
- fix bug in locale-handling that kept the correct locale from
being selected.
- implemented esc-seq. to switch locales (\033 ] 9 ; \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
diff --git a/src/screen.C b/src/screen.C
--- a/src/screen.C
+++ b/src/screen.C
@@ -1837,21 +1837,20 @@ rxvt_term::scr_printscreen (int fullhist)
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;
@@ -1893,18 +1892,13 @@ rxvt_term::scr_refresh (unsigned char refresh_type)
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]);
@@ -1932,7 +1926,6 @@ rxvt_term::scr_refresh (unsigned char refresh_type)
*srp = SET_FGCOLOR (*srp, ccol1);
*srp = SET_BGCOLOR (*srp, ccol2);
#endif
-
}
}
@@ -2213,7 +2206,6 @@ rxvt_term::scr_refresh (unsigned char refresh_type)
#ifndef NO_CURSORCOLOR
*srp = (*srp & ~ (RS_fgMask | RS_bgMask)) | cc1;
#endif
-
}
else if (oldcursor.row >= 0)
{
@@ -2221,6 +2213,11 @@ rxvt_term::scr_refresh (unsigned char refresh_type)
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),
-----END OF PAGE-----