xterm-36.patch.txt

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,{