emacs-diffs
[Top][All Lists]
Advanced

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

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


From: Kim F. Storm
Subject: [Emacs-diffs] Changes to emacs/src/dispnew.c
Date: Thu, 27 Nov 2003 16:15:54 -0500

Index: emacs/src/dispnew.c
diff -c emacs/src/dispnew.c:1.322 emacs/src/dispnew.c:1.323
*** emacs/src/dispnew.c:1.322   Sat Nov 22 19:09:19 2003
--- emacs/src/dispnew.c Thu Nov 27 16:15:53 2003
***************
*** 5692,5700 ****
     to character positions.  */
  
  void
! buffer_posn_from_coords (w, x, y, object, pos)
       struct window *w;
       int *x, *y;
       Lisp_Object *object;
       struct display_pos *pos;
  {
--- 5692,5701 ----
     to character positions.  */
  
  void
! buffer_posn_from_coords (w, x, y, dx, dy, object, pos)
       struct window *w;
       int *x, *y;
+      int *dx, *dy;
       Lisp_Object *object;
       struct display_pos *pos;
  {
***************
*** 5702,5707 ****
--- 5703,5709 ----
    struct buffer *old_current_buffer = current_buffer;
    struct text_pos startp;
    struct glyph_row *row;
+   struct image *img;
    int x0, x1;
  
    current_buffer = XBUFFER (w->buffer);
***************
*** 5721,5727 ****
  
    current_buffer = old_current_buffer;
  
!   *object = STRINGP (it.string) ? it.string : w->buffer;
    *pos = it.current;
    *x = it.hpos;
    *y = it.vpos;
--- 5723,5737 ----
  
    current_buffer = old_current_buffer;
  
!   *dx = x0 + it.first_visible_x - it.current_x;
!   *dy = *y - it.current_y;
! 
!   if (it.what == IT_IMAGE
!       && (img = IMAGE_FROM_ID (it.f, it.image_id)) != NULL
!       && !NILP (img->spec))
!     *object = img->spec;
!   else
!     *object = STRINGP (it.string) ? it.string : w->buffer;
    *pos = it.current;
    *x = it.hpos;
    *y = it.vpos;
***************
*** 5734,5755 ****
     the string returned.  */
  
  Lisp_Object
! mode_line_string (w, x, y, part, charpos)
       struct window *w;
       int *x, *y;
       enum window_part part;
       int *charpos;
  {
    struct glyph_row *row;
    struct glyph *glyph, *end;
!   int x0;
    Lisp_Object string = Qnil;
  
    if (part == ON_MODE_LINE)
      row = MATRIX_MODE_LINE_ROW (w->current_matrix);
    else
      row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
! 
    *y = row - MATRIX_FIRST_TEXT_ROW (w->current_matrix);
  
    if (row->mode_line_p && row->enabled_p)
--- 5744,5766 ----
     the string returned.  */
  
  Lisp_Object
! mode_line_string (w, x, y, dx, dy, part, charpos)
       struct window *w;
       int *x, *y;
+      int *dx, *dy;
       enum window_part part;
       int *charpos;
  {
    struct glyph_row *row;
    struct glyph *glyph, *end;
!   int x0, y0;
    Lisp_Object string = Qnil;
  
    if (part == ON_MODE_LINE)
      row = MATRIX_MODE_LINE_ROW (w->current_matrix);
    else
      row = MATRIX_HEADER_LINE_ROW (w->current_matrix);
!   y0 = *y - row->y;
    *y = row - MATRIX_FIRST_TEXT_ROW (w->current_matrix);
  
    if (row->mode_line_p && row->enabled_p)
***************
*** 5771,5777 ****
        *x += x0 / WINDOW_FRAME_COLUMN_WIDTH (w);
      }
    else
!     *x = 0;
  
    return string;
  }
--- 5782,5797 ----
        *x += x0 / WINDOW_FRAME_COLUMN_WIDTH (w);
      }
    else
!     {
!       *x = 0;
!       x0 = 0;
!     }
! 
!   if (dx)
!     {
!       *dx = x0;
!       *dy = y0;
!     }
  
    return string;
  }
***************
*** 5782,5796 ****
     the string returned.  */
  
  Lisp_Object
! marginal_area_string (w, x, y, part, charpos)
       struct window *w;
       int *x, *y;
       enum window_part part;
       int *charpos;
  {
    struct glyph_row *row = w->current_matrix->rows;
    struct glyph *glyph, *end;
!   int x0, i, wy = *y;
    int area;
    Lisp_Object string = Qnil;
  
--- 5802,5817 ----
     the string returned.  */
  
  Lisp_Object
! marginal_area_string (w, x, y, dx, dy, part, charpos)
       struct window *w;
       int *x, *y;
+      int *dx, *dy;
       enum window_part part;
       int *charpos;
  {
    struct glyph_row *row = w->current_matrix->rows;
    struct glyph *glyph, *end;
!   int x0, y0, i, wy = *y;
    int area;
    Lisp_Object string = Qnil;
  
***************
*** 5804,5809 ****
--- 5825,5831 ----
    for (i = 0; row->enabled_p && i < w->current_matrix->nrows; ++i, ++row)
      if (wy >= row->y && wy < MATRIX_ROW_BOTTOM_Y (row))
        break;
+   y0 = *y - row->y;
    *y = row - MATRIX_FIRST_TEXT_ROW (w->current_matrix);
  
    if (row->enabled_p)
***************
*** 5836,5842 ****
        *x += x0 / WINDOW_FRAME_COLUMN_WIDTH (w);
      }
    else
!     *x = 0;
  
    return string;
  }
--- 5858,5873 ----
        *x += x0 / WINDOW_FRAME_COLUMN_WIDTH (w);
      }
    else
!     {
!       x0 = 0;
!       *x = 0;
!     }
! 
!   if (dx)
!     {
!       *dx = x0;
!       *dy = y0;
!     }
  
    return string;
  }




reply via email to

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