[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Truncating scroll runs that copy to where we copied to
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: Truncating scroll runs that copy to where we copied to |
Date: |
Tue, 22 Nov 2011 15:22:48 +0900 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.3 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On Tue, 22 Nov 2011 01:04:45 -0500, Eli Zaretskii <address@hidden> said:
> FWIW, this code was not touched since Emacs 21.1 was released. So
> evidently the effects of this issue are quite subtle in practice.
That code had not taken effect for most cases (especially when there's
no partially visible row at the bottom) until I made the following
fix:
2011-05-21 YAMAMOTO Mitsuharu <address@hidden>
* dispnew.c (scrolling_window): Don't exclude the case that the
last enabled row in the desired matrix touches the bottom boundary.
=== modified file 'src/dispnew.c'
*** src/dispnew.c 2011-05-12 07:07:06 +0000
--- src/dispnew.c 2011-05-21 02:15:34 +0000
***************
*** 4330,4352 ****
first_old = first_new = i;
! /* Set last_new to the index + 1 of the last enabled row in the
! desired matrix. */
i = first_new + 1;
! while (i < desired_matrix->nrows - 1
! && MATRIX_ROW (desired_matrix, i)->enabled_p
! && MATRIX_ROW_BOTTOM_Y (MATRIX_ROW (desired_matrix, i)) <= yb)
! ++i;
! if (!MATRIX_ROW (desired_matrix, i)->enabled_p)
! return 0;
last_new = i;
! /* Set last_old to the index + 1 of the last enabled row in the
! current matrix. We don't look at the enabled flag here because
! we plan to reuse part of the display even if other parts are
! disabled. */
i = first_old + 1;
while (i < current_matrix->nrows - 1)
{
--- 4330,4358 ----
first_old = first_new = i;
! /* Set last_new to the index + 1 of the row that reaches the
! bottom boundary in the desired matrix. Give up if we find a
! disabled row before we reach the bottom boundary. */
i = first_new + 1;
! while (i < desired_matrix->nrows - 1)
! {
! int bottom;
! if (!MATRIX_ROW (desired_matrix, i)->enabled_p)
! return 0;
! bottom = MATRIX_ROW_BOTTOM_Y (MATRIX_ROW (desired_matrix, i));
! if (bottom <= yb)
! ++i;
! if (bottom >= yb)
! break;
! }
last_new = i;
! /* Set last_old to the index + 1 of the row that reaches the bottom
! boundary in the current matrix. We don't look at the enabled
! flag here because we plan to reuse part of the display even if
! other parts are disabled. */
i = first_old + 1;
while (i < current_matrix->nrows - 1)
{
That explains people (including I) did not notice the problem for a
long time.
YAMAMOTO Mitsuharu
address@hidden
- Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/20
- Re: Truncating scroll runs that copy to where we copied to, Eli Zaretskii, 2011/11/20
- Re: Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/22
- Re: Truncating scroll runs that copy to where we copied to, Eli Zaretskii, 2011/11/22
- Re: Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/22
- Re: Truncating scroll runs that copy to where we copied to, Eli Zaretskii, 2011/11/22
- Re: Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/22
- Re: Truncating scroll runs that copy to where we copied to, Eli Zaretskii, 2011/11/26
- Re: Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/27
Re: Truncating scroll runs that copy to where we copied to, YAMAMOTO Mitsuharu, 2011/11/21