Subject: bug#11464: 24.1.50; pos-visible-in-window-p returns a false positive with bidi text

From: Eli Zaretskii <[email-masked]>
Date: Fri, 18 May 2012 14:32:29 +0300

> From: Ari Roponen <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Fri, 18 May 2012 13:47:26 +0300
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > And if that happens, the correction code below, viz.:
> >
> >       if (bottom_y <= it.last_visible_y
> > 	  && it.bidi_p && it.bidi_it.scan_dir == -1
> > 	  && IT_CHARPOS (it) < charpos)
> >
> > would evaluate to false, and visible_p would have stayed at its 1
> > value, which is wrong.
> >
> > So could you please clarify this case?
> 
> Yes, pos_visible_p indeed returns incorrect value (1), but it is called
> from Fpos_visible_in_window_p, which returns the correct value.  For
> longer description, see below.

OK, but pos_visible_p is called from other places, and needs to
produce a correct result by itself.

> > Also, what was the value of top_y in your first case, i.e.:
> >
> >> bottom_y = 300
> >> it.last_visible_y = 304
> 
> That case has the following values now (in emacs-24 rev. 108005):
> 
> bottom_y = 302
> it.last_visible_y = 304
> top_y = 285

Very strange, for both 300 and 302.  These values seem to imply that
the screen line where we wind up spans pixel coordinates [285..302],
which means move_it_to didn't get to its goal coordinate 303.

What are the values of it.max_ascent and it.max_descent in this case,
at the point where the move_it_to call on line 1287 returns?

> I'm not sure why bottom_y has changed its value.  I guess that is
> because I installed some new fonts.

That's okay, they both puzzle me alike.

Thanks.