XFree86 3.2r - xterm patch #36 - 1997/1/16 - T.Dickey
This corrects something that I overlooked in patch #27 (21-aug-1996), which is
that when trimming the region to be repainted for the highlightSelection
resource of xterm, I still have to paint the background past the highlighted
region. This only happens when I first do a selection in a window that's
partly off-screen, then move the window on-screen.
--------------------------------------------------------------------------------
screen.c | 15 +++++++++++----
1 files changed, 11 insertions, 4 deletions
--------------------------------------------------------------------------------
Index: screen.c
--- xterm-35+/screen.c Wed Jan 8 18:18:35 1997
+++ xterm-36/screen.c Thu Jan 16 06:42:11 1997
@@ -439,6 +439,7 @@
register Char *attrs;
register int col = leftcol;
int maxcol = leftcol + ncols - 1;
+ int hi_col = maxcol;
int lastind;
int flags;
int fg = 0, bg = 0;
@@ -506,10 +507,12 @@
* apparent).
*/
if (screen->highlight_selection
- && maxcol >= screen->max_col
- && screen->send_mouse_pos != 3)
- while (maxcol > 0 && !(attrs[maxcol] & CHARDRAWN))
- maxcol--;
+/* && maxcol >= screen->max_col */
+ && screen->send_mouse_pos != 3) {
+ hi_col = screen->max_col;
+ while (hi_col > 0 && !(attrs[hi_col] & CHARDRAWN))
+ hi_col--;
+ }
/* remaining piece should be hilited */
hilite = True;
@@ -530,6 +533,7 @@
for (; col <= maxcol; col++) {
if ((attrs[col] != flags)
+ || (hilite && (col > hi_col))
#if OPT_ISO_COLORS
|| ((flags & FG_COLOR) && (extract_fg(fb[col],attrs[col]) != fg))
|| ((flags & BG_COLOR) && (extract_bg(fb[col]) != bg))
@@ -541,6 +545,9 @@
x += (col - lastind) * FontWidth(screen);
lastind = col;
+
+ if (hilite && (col > hi_col))
+ hilite = False;
flags = attrs[col];
if_OPT_ISO_COLORS(screen,{