val = find_symbol_value (var);
+ ptrdiff_t arrow_marker_pos;
if (MARKERP (val)
&& current_buffer == XMARKER (val)->buffer
- && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val)))
+ && (arrow_marker_pos = marker_position (val),
+ /* Normally, the marker position will be at the row's
+ start charpos. But if the previous text lines are
+ invisible, the row's start charpos includes those
+ invisible lines, so we make a more general test that
+ the marker position is anywhere between the start and
+ the end character positions of this row. */
+ (MATRIX_ROW_START_CHARPOS (row) <= arrow_marker_pos
+ && arrow_marker_pos < MATRIX_ROW_END_CHARPOS (row))))
{
if (FRAME_WINDOW_P (it->f)
/* FIXME: if ROW->reversed_p is set, this should test