unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
To: 3347@emacsbugs.donarmstrong.com
Subject: bug#3347: 23.0.93; unnecessary display updates with mouse-drag-region
Date: Sat, 23 May 2009 11:00:13 +0900	[thread overview]
Message-ID: <wlzld4efyq.wl%mituharu@math.s.chiba-u.ac.jp> (raw)
In-Reply-To: <wl4ovd6e4d.wl%mituharu@math.s.chiba-u.ac.jp>

>>>>> On Fri, 22 May 2009 11:54:58 +0900, YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> said:

> Mouse dragging over a text in the default face causes unnecessary
> updates in other windows displaying the same buffer.

> Steps to reproduce:

>   1. Invoke "Quartz Debug.app" on Mac OS X and check the "Flash screen
>      updates" button.
>   2. $ emacs -Q -D
>   3. C-x 2
>   4. Drag the mouse over the *scratch* buffer text in the first
>      window.

> Result:

>   The text not only in the first window but also the other one is
>   flashed whereas the latter doesn't need updates.  The flashed area
>   corresponds to the extended/shrunken part of the region in the first
>   window.

> The updates in the second window do not happen if the text is in
> non-default face (e.g., start with "emacs -Q" instead of "emacs -Q
> -D").

> I can't observe this phenomenon on Emacs 22.3.

I tried some older versions and found that the change below made the
difference.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

2008-07-08  Chong Yidong  <cyd@stupidchicken.com>

	* xfaces.c (Finternal_merge_in_global_face): Save merged
	attributes for the default face back into the face vector.

--- xfaces.c	2008/07/06 03:51:06	1.404
+++ xfaces.c	2008/07/08 17:27:28	1.405
@@ -3966,7 +3966,7 @@
     else if (! UNSPECIFIEDP (gvec[i]))
       lvec[i] = gvec[i];
 
-  /* If the default face was changed, realize it again, and update the
+  /* If the default face was changed, update the face cache and the
      `font' frame parameter.  */
   if (EQ (face, Qdefault))
     {
@@ -3977,9 +3977,12 @@
       /* This can be NULL (e.g., in batch mode).  */
       if (oldface)
 	{
+	  /* Ensure that the face vector is fully specified by merging
+	     the previously-cached vector.  */
 	  bcopy (oldface->lface, attrs, sizeof attrs);
 	  merge_face_vectors (f, lvec, attrs, 0);
-	  newface = realize_face (c, attrs, DEFAULT_FACE_ID);
+	  bcopy (attrs, lvec, sizeof attrs);
+	  newface = realize_face (c, lvec, DEFAULT_FACE_ID);
 
 	  if ((! UNSPECIFIEDP (gvec[LFACE_FAMILY_INDEX])
 	       || ! UNSPECIFIEDP (gvec[LFACE_FOUNDRY_INDEX])





  reply	other threads:[~2009-05-23  2:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-22  2:54 bug#3347: 23.0.93; unnecessary display updates with mouse-drag-region YAMAMOTO Mitsuharu
2009-05-23  2:00 ` YAMAMOTO Mitsuharu [this message]
2020-09-14 14:44 ` Lars Ingebrigtsen
2020-09-16  4:25   ` YAMAMOTO Mitsuharu
2020-12-09 15:11   ` Lars Ingebrigtsen
2020-12-09 16:39     ` Lars Ingebrigtsen
  -- strict thread matches above, loose matches on Subject: below --
2009-06-10 16:50 Chong Yidong
2009-06-11  0:28 ` YAMAMOTO Mitsuharu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=wlzld4efyq.wl%mituharu@math.s.chiba-u.ac.jp \
    --to=mituharu@math.s.chiba-u.ac.jp \
    --cc=3347@emacsbugs.donarmstrong.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).