[BACK]Return to display.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mg

Diff for /src/usr.bin/mg/display.c between version 1.7 and 1.8

version 1.7, 2002/01/18 08:37:08 version 1.8, 2002/02/14 00:11:46
Line 291 
Line 291 
 {  {
         VIDEO   *vp;          VIDEO   *vp;
   
           c &= 0xff;
   
         vp = vscreen[vtrow];          vp = vscreen[vtrow];
         if (vtcol >= ncol)          if (vtcol >= ncol)
                 vp->v_text[ncol - 1] = '$';                  vp->v_text[ncol - 1] = '$';
Line 320 
Line 322 
 {  {
         VIDEO *vp;          VIDEO *vp;
   
           c &= 0xff;
   
         vp = vscreen[vtrow];          vp = vscreen[vtrow];
   
         if (vtcol >= ncol)          if (vtcol >= ncol)
                 vp->v_text[ncol - 1] = '$';                  vp->v_text[ncol - 1] = '$';
         else if (c == '\t'          else if (c == '\t'
Line 331 
Line 334 
                 ) {                  ) {
                 do {                  do {
                         vtpute(' ');                          vtpute(' ');
                 }                  } while (((vtcol + lbound) & 0x07) != 0 && vtcol < ncol);
                 while (((vtcol + lbound) & 0x07) != 0 && vtcol < ncol);  
         } else if (ISCTRL(c) != FALSE) {          } else if (ISCTRL(c) != FALSE) {
                 vtpute('^');                  vtpute('^');
                 vtpute(CCHR(c));                  vtpute(CCHR(c));
Line 392 
Line 394 
                 }                  }
         }          }
         hflag = FALSE;                  /* Not hard.             */          hflag = FALSE;                  /* Not hard.             */
         wp = wheadp;          for (wp = wheadp; wp != NULL; wp = wp->w_wndp) {
         while (wp != NULL) {                  /*
                 if (wp->w_flag != 0) {  /* Need update.          */                   * Nothing to be done.
                         if ((wp->w_flag & WFFORCE) == 0) {                   */
                                 lp = wp->w_linep;                  if (wp->w_flag == 0)
                                 for (i = 0; i < wp->w_ntrows; ++i) {                          continue;
                                         if (lp == wp->w_dotp)  
                                                 goto out;                  if ((wp->w_flag & WFFORCE) == 0) {
                                         if (lp == wp->w_bufp->b_linep)                          lp = wp->w_linep;
                                                 break;                          for (i = 0; i < wp->w_ntrows; ++i) {
                                         lp = lforw(lp);                                  if (lp == wp->w_dotp)
                                 }                                          goto out;
                                   if (lp == wp->w_bufp->b_linep)
                                           break;
                                   lp = lforw(lp);
                         }                          }
                         i = wp->w_force;        /* Reframe this one.     */                  }
                         if (i > 0) {                  /*
                                 --i;                   * Put the middle-line in place.
                                 if (i >= wp->w_ntrows)                   */
                                         i = wp->w_ntrows - 1;                  i = wp->w_force;
                         } else if (i < 0) {                  if (i > 0) {
                                 i += wp->w_ntrows;                          --i;
                                 if (i < 0)                          if (i >= wp->w_ntrows)
                                         i = 0;                                  i = wp->w_ntrows - 1;
                         } else                  } else if (i < 0) {
                                 i = wp->w_ntrows / 2;                          i += wp->w_ntrows;
                         lp = wp->w_dotp;                          if (i < 0)
                         while (i != 0 && lback(lp) != wp->w_bufp->b_linep) {                                  i = 0;
                                 --i;                  } else
                                 lp = lback(lp);                          i = wp->w_ntrows / 2; /* current center,
                         }                                                 * no change */
                         wp->w_linep = lp;  
                         wp->w_flag |= WFHARD;   /* Force full.           */                  /*
                    * Find the line
                    */
                   lp = wp->w_dotp;
                   while (i != 0 && lback(lp) != wp->w_bufp->b_linep) {
                           --i;
                           lp = lback(lp);
                   }
                   wp->w_linep = lp;
                   wp->w_flag |= WFHARD;   /* Force full.           */
         out:          out:
                         lp = wp->w_linep;       /* Try reduced update.   */                  lp = wp->w_linep;       /* Try reduced update.   */
                         i = wp->w_toprow;                  i = wp->w_toprow;
                         if ((wp->w_flag & ~WFMODE) == WFEDIT) {                  if ((wp->w_flag & ~WFMODE) == WFEDIT) {
                                 while (lp != wp->w_dotp) {                          while (lp != wp->w_dotp) {
                                         ++i;                                  ++i;
                                         lp = lforw(lp);                                  lp = lforw(lp);
                                 }                          }
                           vscreen[i]->v_color = CTEXT;
                           vscreen[i]->v_flag |= (VFCHG | VFHBAD);
                           vtmove(i, 0);
                           for (j = 0; j < llength(lp); ++j)
                                   vtputc(lgetc(lp, j));
                           vteeol();
                   } else if ((wp->w_flag & (WFEDIT | WFHARD)) != 0) {
                           hflag = TRUE;
                           while (i < wp->w_toprow + wp->w_ntrows) {
                                 vscreen[i]->v_color = CTEXT;                                  vscreen[i]->v_color = CTEXT;
                                 vscreen[i]->v_flag |= (VFCHG | VFHBAD);                                  vscreen[i]->v_flag |= (VFCHG | VFHBAD);
                                 vtmove(i, 0);                                  vtmove(i, 0);
                                 for (j = 0; j < llength(lp); ++j)                                  if (lp != wp->w_bufp->b_linep) {
                                         vtputc(lgetc(lp, j));                                          for (j = 0; j < llength(lp); ++j)
                                 vteeol();                                                  vtputc(lgetc(lp, j));
                         } else if ((wp->w_flag & (WFEDIT | WFHARD)) != 0) {                                          lp = lforw(lp);
                                 hflag = TRUE;  
                                 while (i < wp->w_toprow + wp->w_ntrows) {  
                                         vscreen[i]->v_color = CTEXT;  
                                         vscreen[i]->v_flag |= (VFCHG | VFHBAD);  
                                         vtmove(i, 0);  
                                         if (lp != wp->w_bufp->b_linep) {  
                                                 for (j = 0; j < llength(lp); ++j)  
                                                         vtputc(lgetc(lp, j));  
                                                 lp = lforw(lp);  
                                         }  
                                         vteeol();  
                                         ++i;  
                                 }                                  }
                                   vteeol();
                                   ++i;
                         }                          }
                         if ((wp->w_flag & WFMODE) != 0)  
                                 modeline(wp);  
                         wp->w_flag = 0;  
                         wp->w_force = 0;  
                 }                  }
                 wp = wp->w_wndp;                  if ((wp->w_flag & WFMODE) != 0)
                           modeline(wp);
                   wp->w_flag = 0;
                   wp->w_force = 0;
         }          }
         lp = curwp->w_linep;    /* Cursor location.      */          lp = curwp->w_linep;    /* Cursor location.      */
         currow = curwp->w_toprow;          currow = curwp->w_toprow;

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8