Subject: bug#70038: 29.3.50; Shift up/down in buffer with images on M-x other-window with some fonts

From: martin rudalics <[email-masked]>
Date: Wed, 17 Apr 2024 10:02:12 +0200

> I hope this is now more clear.

Thanks.  So when we enter the part headed by

   if ((w->optional_new_start || window_frozen_p (w))

then the single aim is apparently to make sure that the cursor line
remains fully visible.

When we enter that part because window_frozen_p (w) is set, we ignore
the scroll margins because we assume that preserving the window start
position is more important in this situation.

When we enter that part because w->optional_new_start was set, we assume
that the caller ('recenter', 'delete-other-windows-internal') has done
its part to obey the scroll margins but still might have failed to keep
the cursor visible.

Is that interpretation correct?  If so, it might make sense to put some
explanation into a comment for that part because, at least for me, it's
a priori not clear that the same treatment is wanted for keeping the
previous start position of a window and for one that has been explicitly
changed.  I've spent almost an hour to arrive at the conclusion above.
Things like this comment in 'delete-other-windows-internal'

	  /* We need to do this, so that the window-scroll-functions
	     get called.  */
	  w->optional_new_start = true;

were distracting even further.

martin