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: Fri, 28 Dec 2001 08:33:38 -0500

Index: emacs/src/xterm.c
diff -c emacs/src/xterm.c:1.695 emacs/src/xterm.c:1.696
*** emacs/src/xterm.c:1.695     Thu Dec 20 13:31:34 2001
--- emacs/src/xterm.c   Fri Dec 28 08:33:37 2001
***************
*** 476,482 ****
                               GC, int));
  static int x_phys_cursor_in_rect_p P_ ((struct window *, XRectangle *));
  static void x_draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row 
*));
! static void notice_overwritten_cursor P_ ((struct window *, int, int));
  static void x_flush P_ ((struct frame *f));
  static void x_update_begin P_ ((struct frame *));
  static void x_update_window_begin P_ ((struct window *));
--- 476,483 ----
                               GC, int));
  static int x_phys_cursor_in_rect_p P_ ((struct window *, XRectangle *));
  static void x_draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row 
*));
! static void notice_overwritten_cursor P_ ((struct window *, enum 
glyph_row_area,
!                                          int, int, int, int));
  static void x_flush P_ ((struct frame *f));
  static void x_update_begin P_ ((struct frame *));
  static void x_update_window_begin P_ ((struct window *));
***************
*** 5207,5213 ****
          x1 -= left_area_width;
        }
  
!       notice_overwritten_cursor (w, x0, x1);
      }
  
    /* Value is the x-position up to which drawn, relative to AREA of W.
--- 5208,5215 ----
          x1 -= left_area_width;
        }
  
!       notice_overwritten_cursor (w, area, x0, x1,
!                                row->y, MATRIX_ROW_BOTTOM_Y (row));
      }
  
    /* Value is the x-position up to which drawn, relative to AREA of W.
***************
*** 5429,5435 ****
    
    /* Notice if the cursor will be cleared by this operation.  */
    if (!updated_row->full_width_p)
!     notice_overwritten_cursor (w, output_cursor.x, -1);
  
    from_x = output_cursor.x;
       
--- 5431,5440 ----
    
    /* Notice if the cursor will be cleared by this operation.  */
    if (!updated_row->full_width_p)
!     notice_overwritten_cursor (w, updated_area,
!                              output_cursor.x, -1,
!                              updated_row->y,
!                              MATRIX_ROW_BOTTOM_Y (updated_row));
  
    from_x = output_cursor.x;
       
***************
*** 7780,7786 ****
              x_draw_glyphs (w, start_x, row, TEXT_AREA, 
                             start_hpos, end_hpos, draw, 0);
  
!             row->mouse_face_p = draw == DRAW_MOUSE_FACE || DRAW_IMAGE_RAISED;
            }
        }
  
--- 7785,7792 ----
              x_draw_glyphs (w, start_x, row, TEXT_AREA, 
                             start_hpos, end_hpos, draw, 0);
  
!             row->mouse_face_p
!               = draw == DRAW_MOUSE_FACE || draw == DRAW_IMAGE_RAISED;
            }
        }
  
***************
*** 11098,11119 ****
                             Text Cursor
   ***********************************************************************/
  
! /* Notice if the text cursor of window W has been overwritten by a
!    drawing operation that outputs N glyphs starting at START_X and
!    ending at END_X in the line given by output_cursor.vpos.
!    Coordinates are area-relative.  END_X < 0 means all the rest
!    of the line after START_X has been written.  */
  
  static void
! notice_overwritten_cursor (w, start_x, end_x)
       struct window *w;
!      int start_x, end_x;
  {
!   if (updated_area == TEXT_AREA
        && w->phys_cursor_on_p
!       && output_cursor.vpos == w->phys_cursor.vpos
!       && start_x <= w->phys_cursor.x
!       && (end_x < 0 || end_x > w->phys_cursor.x))
      w->phys_cursor_on_p = 0;
  }
  
--- 11104,11128 ----
                             Text Cursor
   ***********************************************************************/
  
! /* Notice when the text cursor of window W has been completely
!    overwritten by a drawing operation that outputs glyphs in AREA
!    starting at X0 and ending at X1 in the line starting at Y0 and
!    ending at Y1.  X coordinates are area-relative.  X1 < 0 means all
!    the rest of the line after X0 has been written.  Y coordinates
!    are window-relative.  */
  
  static void
! notice_overwritten_cursor (w, area, x0, x1, y0, y1)
       struct window *w;
!      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;
  }
  



reply via email to

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