From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: YAMAMOTO Mitsuharu Newsgroups: gmane.emacs.devel Subject: Re: Excessive redraw of overlapping/overlapped rows? Date: Thu, 23 Feb 2006 19:26:28 +0900 Organization: Faculty of Science, Chiba University Message-ID: References: <85wtl37i2j.fsf@lola.goethe.zz> NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII X-Trace: sea.gmane.org 1140831026 18080 80.91.229.2 (25 Feb 2006 01:30:26 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 25 Feb 2006 01:30:26 +0000 (UTC) Cc: emacs-devel@gnu.org, "Kim F. Storm" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Feb 25 02:30:23 2006 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by ciao.gmane.org with esmtp (Exim 4.43) id 1FCoGF-0002QJ-TX for ged-emacs-devel@m.gmane.org; Sat, 25 Feb 2006 02:30:16 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FCoGG-0007iY-5y for ged-emacs-devel@m.gmane.org; Fri, 24 Feb 2006 20:30:16 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1FCQiC-0001Pm-EE for emacs-devel@gnu.org; Thu, 23 Feb 2006 19:21:33 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1FCL7m-0008EQ-R9 for emacs-devel@gnu.org; Thu, 23 Feb 2006 13:23:41 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1FCDgA-0003S6-Ub for emacs-devel@gnu.org; Thu, 23 Feb 2006 05:26:36 -0500 Original-Received: from [133.82.132.2] (helo=mathmail.math.s.chiba-u.ac.jp) by monty-python.gnu.org with esmtp (Exim 4.52) id 1FCDmn-0006e8-MT; Thu, 23 Feb 2006 05:33:26 -0500 Original-Received: from church.math.s.chiba-u.ac.jp (church [133.82.132.36]) by mathmail.math.s.chiba-u.ac.jp (Postfix) with ESMTP id 9ED8D2CA3; Thu, 23 Feb 2006 19:26:28 +0900 (JST) Original-To: David Kastrup In-Reply-To: <85wtl37i2j.fsf@lola.goethe.zz> 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) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:50913 Archived-At: >>>>> On Mon, 26 Sep 2005 21:19:32 +0200, David Kastrup said: > storm@cua.dk (Kim F. Storm) writes: >> YAMAMOTO Mitsuharu 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 mituharu@math.s.chiba-u.ac.jp *** 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. */