[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Excessive redraw of overlapping/overlapped rows?
From: |
YAMAMOTO Mitsuharu |
Subject: |
Re: Excessive redraw of overlapping/overlapped rows? |
Date: |
Thu, 23 Feb 2006 19:26:28 +0900 |
User-agent: |
Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.6 (Marutamachi) APEL/10.6 Emacs/22.0.50 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI) |
>>>>> On Mon, 26 Sep 2005 21:19:32 +0200, David Kastrup <address@hidden> said:
> address@hidden (Kim F. Storm) writes:
>> YAMAMOTO Mitsuharu <address@hidden> writes:
>>
>>> Is it OK to not set `changed_p' for the case of mode/header line
>>> updates?
>>
>> I don't know for sure , but it seems ok.
> If mode line updates change the height of the mode line (because of
> descenders, or images or stuff like that), it is conceivable that
> something happens with the display, though likely not on all lines
> at once. Even for line number updates, if you use line numbers with
> a non-constant height (old-style numerals).
> So it seems like it would at least appear prudent to check whether
> the mode line dimensions changed or something like that, or check
> just what lines the mode line might overlap.
You mean the change like below? But I'm still not certain whether
this kind of mode/header line changes may affect overlapping in other
part of the text area.
YAMAMOTO Mitsuharu
address@hidden
*** dispnew.c.~1.360.~ Thu Feb 23 18:08:35 2006
--- dispnew.c Thu Feb 23 19:17:01 2006
***************
*** 4128,4135 ****
if (force_p || !input_pending || !NILP (do_mouse_tracking))
{
struct glyph_row *row, *end;
! struct glyph_row *mode_line_row;
! struct glyph_row *header_line_row;
int yb, changed_p = 0, mouse_face_overwritten_p = 0, n_updated;
rif->update_window_begin_hook (w);
--- 4128,4135 ----
if (force_p || !input_pending || !NILP (do_mouse_tracking))
{
struct glyph_row *row, *end;
! struct glyph_row *mode_line_row, *current_mode_line_row;
! struct glyph_row *header_line_row, *current_header_line_row;
int yb, changed_p = 0, mouse_face_overwritten_p = 0, n_updated;
rif->update_window_begin_hook (w);
***************
*** 4156,4162 ****
update_window_line (w, MATRIX_ROW_VPOS (mode_line_row,
desired_matrix),
&mouse_face_overwritten_p);
! changed_p = 1;
}
/* Find first enabled row. Optimizations in redisplay_internal
--- 4156,4166 ----
update_window_line (w, MATRIX_ROW_VPOS (mode_line_row,
desired_matrix),
&mouse_face_overwritten_p);
! current_mode_line_row = MATRIX_MODE_LINE_ROW (w->current_matrix);
! if (!(current_mode_line_row->mode_line_p
! && current_mode_line_row->enabled_p
! && mode_line_row->height == current_mode_line_row->height))
! changed_p = 1;
}
/* Find first enabled row. Optimizations in redisplay_internal
***************
*** 4226,4232 ****
{
header_line_row->y = 0;
update_window_line (w, 0, &mouse_face_overwritten_p);
! changed_p = 1;
}
/* Fix the appearance of overlapping/overlapped rows. */
--- 4230,4240 ----
{
header_line_row->y = 0;
update_window_line (w, 0, &mouse_face_overwritten_p);
! current_header_line_row = w->current_matrix->rows;
! if (!(current_header_line_row->mode_line_p
! && current_header_line_row->enabled_p
! && header_line_row->height == current_header_line_row->height))
! changed_p = 1;
}
/* Fix the appearance of overlapping/overlapped rows. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: Excessive redraw of overlapping/overlapped rows?,
YAMAMOTO Mitsuharu <=