[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: window.c: suggested patch window_scroll_pixel_based
From: |
Martin Fredriksson |
Subject: |
Re: window.c: suggested patch window_scroll_pixel_based |
Date: |
Tue, 31 Dec 2002 07:27:10 +0100 |
On måndag, dec 30, 2002, at 16:27 Europe/Stockholm, Richard Stallman
wrote:
I suggest following patch to window.c (window_scroll_pixel_based),
to
make 'scroll-down' be able to reach the start of the buffer. This
patch partly backs out of 1.433 (rms, 2002/12/23). I apologize if
I
have misunderstood the issue. I have verified the patch on
OpenBSD/X11
and OSX/Carbon.
This problem does not happen for me, and your change reintroduces code
that seems to be entirely wrong as far as I can tell. Why do you
think it is right to test `start' here? It appears to me that BEGV
is correct.
Line 4151--4152:
if ((n > 0 && IT_CHARPOS (it) == ZV)
|| (n < 0 && IT_CHARPOS (it) == BEGV))
The comparison with ZV seems to be correct since the function
'move_it_to' (called on line 4144) never sets IT_CHARPOS(it) to ZV
unless ZV is visible in the same window.
For backwards movement, however, the function
'move_it_vertically_backword' (called on line 4142) sets
IT_CHARPOS(it) to BEGV when BEGV is less than a screenfull from
current position (as it should). The comparison "IT_CHARPOS(it) ==
BEGV" now becomes true, and the move is aborted (with
Fsignal(Qbeginning_of_buffer), even though IT_CHARPOS(it) is not
visible. Since the window is not set until 'set_marker_restricted',
etc, is called on line 4196--, the result is that the window is not
scrolled as it should be.
I believe that it is correct to test IT_CHARPOS(it) == CHARPOS(start)
instead, since that is true when the scroll should not be done (when the
new start position is the same as the current). From what I can see and
understand, it is perfectly ok for IT_CHARPOS(it) == BEGV, and scrolling
should still be done.
Note that I've only tested with scroll_preserve_screen_position
non-zero. I do not know if that complicates things. I must admit I
have a hard time understanding all the issues involved here.
/m