9523 |
} |
} |
9524 |
|
|
9525 |
|
|
9526 |
/* Return overlay arrow string at row, or nil. */ |
/* Return overlay arrow string to display at row. |
9527 |
|
Return t if display as bitmap in left fringe. |
9528 |
|
Return nil if no overlay arrow. */ |
9529 |
|
|
9530 |
static Lisp_Object |
static Lisp_Object |
9531 |
overlay_arrow_at_row (f, row, pbitmap) |
overlay_arrow_at_row (it, row, pbitmap) |
9532 |
struct frame *f; |
struct it *it; |
9533 |
struct glyph_row *row; |
struct glyph_row *row; |
9534 |
int *pbitmap; |
int *pbitmap; |
9535 |
{ |
{ |
9552 |
&& (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) |
&& (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) |
9553 |
{ |
{ |
9554 |
val = overlay_arrow_string_or_property (var, pbitmap); |
val = overlay_arrow_string_or_property (var, pbitmap); |
9555 |
if (FRAME_WINDOW_P (f)) |
if (FRAME_WINDOW_P (it->f) |
9556 |
|
&& WINDOW_LEFT_FRINGE_WIDTH (it->w) > 0) |
9557 |
return Qt; |
return Qt; |
9558 |
else if (STRINGP (val)) |
if (STRINGP (val)) |
9559 |
return val; |
return val; |
9560 |
break; |
break; |
9561 |
} |
} |
14076 |
Building Desired Matrix Rows |
Building Desired Matrix Rows |
14077 |
***********************************************************************/ |
***********************************************************************/ |
14078 |
|
|
14079 |
/* Return a temporary glyph row holding the glyphs of an overlay |
/* Return a temporary glyph row holding the glyphs of an overlay arrow. |
14080 |
arrow. Only used for non-window-redisplay windows. */ |
Used for non-window-redisplay windows, and for windows w/o left fringe. */ |
14081 |
|
|
14082 |
static struct glyph_row * |
static struct glyph_row * |
14083 |
get_overlay_arrow_glyph_row (w, overlay_arrow_string) |
get_overlay_arrow_glyph_row (w, overlay_arrow_string) |
14958 |
better to let it be displayed like cursors under X. */ |
better to let it be displayed like cursors under X. */ |
14959 |
if (! overlay_arrow_seen |
if (! overlay_arrow_seen |
14960 |
&& (overlay_arrow_string |
&& (overlay_arrow_string |
14961 |
= overlay_arrow_at_row (it->f, row, &overlay_arrow_bitmap), |
= overlay_arrow_at_row (it, row, &overlay_arrow_bitmap), |
14962 |
!NILP (overlay_arrow_string))) |
!NILP (overlay_arrow_string))) |
14963 |
{ |
{ |
14964 |
/* Overlay arrow in window redisplay is a fringe bitmap. */ |
/* Overlay arrow in window redisplay is a fringe bitmap. */ |
14965 |
if (!FRAME_WINDOW_P (it->f)) |
if (STRINGP (overlay_arrow_string)) |
14966 |
{ |
{ |
14967 |
struct glyph_row *arrow_row |
struct glyph_row *arrow_row |
14968 |
= get_overlay_arrow_glyph_row (it->w, overlay_arrow_string); |
= get_overlay_arrow_glyph_row (it->w, overlay_arrow_string); |
14987 |
row->used[TEXT_AREA] = p2 - row->glyphs[TEXT_AREA]; |
row->used[TEXT_AREA] = p2 - row->glyphs[TEXT_AREA]; |
14988 |
} |
} |
14989 |
} |
} |
14990 |
|
else |
14991 |
|
{ |
14992 |
|
it->w->overlay_arrow_bitmap = overlay_arrow_bitmap; |
14993 |
|
row->overlay_arrow_p = 1; |
14994 |
|
} |
14995 |
overlay_arrow_seen = 1; |
overlay_arrow_seen = 1; |
|
it->w->overlay_arrow_bitmap = overlay_arrow_bitmap; |
|
|
row->overlay_arrow_p = 1; |
|
14996 |
} |
} |
14997 |
|
|
14998 |
/* Compute pixel dimensions of this line. */ |
/* Compute pixel dimensions of this line. */ |