emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/xterm.c


From: Gerd Moellmann
Subject: [Emacs-diffs] Changes to emacs/src/xterm.c
Date: Tue, 23 Apr 2002 06:33:22 -0400

Index: emacs/src/xterm.c
diff -c emacs/src/xterm.c:1.725 emacs/src/xterm.c:1.726
*** emacs/src/xterm.c:1.725     Mon Apr 22 18:56:19 2002
--- emacs/src/xterm.c   Tue Apr 23 06:33:17 2002
***************
*** 11226,11238 ****
       enum glyph_row_area area;
       int x0, y0, x1, y1;
  {
!   if (area == TEXT_AREA
!       && w->phys_cursor_on_p
!       && y0 <= w->phys_cursor.y
!       && y1 >= w->phys_cursor.y + w->phys_cursor_height
!       && x0 <= w->phys_cursor.x
!       && (x1 < 0 || x1 > w->phys_cursor.x))
!     w->phys_cursor_on_p = 0;
  }
  
  
--- 11226,11254 ----
       enum glyph_row_area area;
       int x0, y0, x1, y1;
  {
!   if (area == TEXT_AREA && w->phys_cursor_on_p)
!     {
!       int cx0 = w->phys_cursor.x;
!       int cx1 = cx0 + w->phys_cursor_width;
!       int cy0 = w->phys_cursor.y;
!       int cy1 = cy0 + w->phys_cursor_height;
! 
!       if (x0 <= cx0 && (x1 < 0 || x1 >= cx1))
!       {
!         /* The cursor image will be completely removed from the
!            screen if the output area intersects the cursor area in
!            y-direction.  When we draw in [y0 y1[, and some part of
!            the cursor is at y < y0, that part must have been drawn
!            before.  When scrolling, the cursor is erased before
!            actually scrolling, so we don't come here.  When not
!            scrolling, the rows above the old cursor row must have
!            changed, and in this case these rows must have written
!            over the cursor image.  Likewise if part of the cursor is
!            below y1.  */
!         if ((y0 >= cy0 && y0 < cy1) || (y1 >= cy0 && y1 < cy1))
!           w->phys_cursor_on_p = 0;
!       }
!     }
  }
  
  
***************
*** 11312,11317 ****
--- 11328,11334 ----
    if (cursor_glyph->type == STRETCH_GLYPH
        && !x_stretch_cursor_p)
      wd = min (CANON_X_UNIT (f), wd);
+   w->phys_cursor_width = wd;
    
    /* The foreground of cursor_gc is typically the same as the normal
       background color, which can cause the cursor box to be invisible.  */
***************
*** 11395,11401 ****
--- 11412,11420 ----
        width = f->output_data.x->cursor_width;
        width = min (cursor_glyph->pixel_width, width);
    
+       w->phys_cursor_width = width;
        x_clip_to_row (w, row, gc, 0);
+       
        if (kind == BAR_CURSOR)
          XFillRectangle (dpy, window, gc,
                          WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
***************
*** 11448,11457 ****
                     hl, 0);
        w->phys_cursor_on_p = on_p;
  
        /* When we erase the cursor, and ROW is overlapped by other
         rows, make sure that these overlapping parts of other rows
         are redrawn.  */
!       if (hl == DRAW_NORMAL_TEXT && row->overlapped_p)
        {
          if (row > w->current_matrix->rows
              && MATRIX_ROW_OVERLAPS_SUCC_P (row - 1))
--- 11467,11483 ----
                     hl, 0);
        w->phys_cursor_on_p = on_p;
  
+       if (hl == DRAW_CURSOR)
+       {
+         struct glyph *cursor_glyph = get_phys_cursor_glyph (w);
+         if (cursor_glyph)
+           w->phys_cursor_width = cursor_glyph->pixel_width;
+       }
+ 
        /* When we erase the cursor, and ROW is overlapped by other
         rows, make sure that these overlapping parts of other rows
         are redrawn.  */
!       else if (hl == DRAW_NORMAL_TEXT && row->overlapped_p)
        {
          if (row > w->current_matrix->rows
              && MATRIX_ROW_OVERLAPS_SUCC_P (row - 1))
***************
*** 11715,11721 ****
        w->phys_cursor.hpos = hpos;
        w->phys_cursor.vpos = vpos;
        w->phys_cursor_type = new_cursor_type;
-       w->phys_cursor_width = new_cursor_width;
        w->phys_cursor_on_p = 1;
  
        switch (new_cursor_type)
--- 11741,11746 ----
***************
*** 11733,11739 ****
          break;
  
        case HBAR_CURSOR:
!           x_draw_bar_cursor (w, glyph_row, new_cursor_width, HBAR_CURSOR);
          break;
  
        case NO_CURSOR:
--- 11758,11764 ----
          break;
  
        case HBAR_CURSOR:
!         x_draw_bar_cursor (w, glyph_row, new_cursor_width, HBAR_CURSOR);
          break;
  
        case NO_CURSOR:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]