diff src/xdisp.c @ 83221:0fc4928cc48e

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-616 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-617 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-618 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-619 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-620 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-621 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-622 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-623 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-624 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-625 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-51 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-52 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-53 Merge from emacs--cvs-trunk--0 git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-261
author Karoly Lorentey <lorentey@elte.hu>
date Tue, 19 Oct 2004 17:00:02 +0000
parents fe1db7935e1a 97a5853254e0
children ae7fab96922c
line wrap: on
line diff
--- a/src/xdisp.c	Thu Oct 14 14:58:43 2004 +0000
+++ b/src/xdisp.c	Tue Oct 19 17:00:02 2004 +0000
@@ -9521,11 +9521,13 @@
 }
 
 
-/* Return overlay arrow string at row, or nil.  */
+/* Return overlay arrow string to display at row.
+   Return t if display as bitmap in left fringe.
+   Return nil if no overlay arrow.  */
 
 static Lisp_Object
-overlay_arrow_at_row (f, row, pbitmap)
-     struct frame *f;
+overlay_arrow_at_row (it, row, pbitmap)
+     struct it *it;
      struct glyph_row *row;
      int *pbitmap;
 {
@@ -9548,9 +9550,10 @@
 	  && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
 	{
 	  val = overlay_arrow_string_or_property (var, pbitmap);
-	  if (FRAME_WINDOW_P (f))
+	  if (FRAME_WINDOW_P (it->f)
+	      && WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0)
 	    return Qt;
-	  else if (STRINGP (val))
+	  if (STRINGP (val))
 	    return val;
 	  break;
 	}
@@ -14077,8 +14080,8 @@
 		     Building Desired Matrix Rows
  ***********************************************************************/
 
-/* Return a temporary glyph row holding the glyphs of an overlay
-   arrow.  Only used for non-window-redisplay windows.  */
+/* Return a temporary glyph row holding the glyphs of an overlay arrow.
+   Used for non-window-redisplay windows, and for windows w/o left fringe.  */
 
 static struct glyph_row *
 get_overlay_arrow_glyph_row (w, overlay_arrow_string)
@@ -14957,11 +14960,11 @@
      better to let it be displayed like cursors under X.  */
   if (! overlay_arrow_seen
       && (overlay_arrow_string
-	    = overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap),
+	    = overlay_arrow_at_row (it, row, &overlay_arrow_bitmap),
 	  !NILP (overlay_arrow_string)))
     {
       /* Overlay arrow in window redisplay is a fringe bitmap.  */
-      if (!FRAME_WINDOW_P (it->f))
+      if (STRINGP (overlay_arrow_string))
 	{
 	  struct glyph_row *arrow_row
 	    = get_overlay_arrow_glyph_row (it->w, overlay_arrow_string);
@@ -14986,10 +14989,12 @@
 	      row->used[TEXT_AREA] = p2 - row->glyphs[TEXT_AREA];
 	    }
 	}
-
+      else
+	{
+	  it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
+	  row->overlay_arrow_p = 1;
+	}
       overlay_arrow_seen = 1;
-      it->w->overlay_arrow_bitmap = overlay_arrow_bitmap;
-      row->overlay_arrow_p = 1;
     }
 
   /* Compute pixel dimensions of this line.  */