GNU bug report logs - #63271
29.0.90; broken mouse-face

Previous Next

Package: emacs;

Reported by: Juri Linkov <juri <at> linkov.net>

Date: Thu, 4 May 2023 15:16:02 UTC

Severity: normal

Found in version 29.0.90

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Juri Linkov <juri <at> linkov.net>, Stephen Berman <stephen.berman <at> gmx.net>
Cc: luangruo <at> yahoo.com, 63271 <at> debbugs.gnu.org
Subject: bug#63271: 29.0.90; broken mouse-face
Date: Tue, 09 May 2023 11:36:01 +0300
> From: Juri Linkov <juri <at> linkov.net>
> Cc: luangruo <at> yahoo.com,  63271 <at> debbugs.gnu.org
> Date: Tue, 09 May 2023 09:45:16 +0300
> 
> > And what exactly is the manifestation of the problem in the image you
> > posted? that wide black part that hides the letters "ODO"? or
> > something else?
> 
> The letters turn into black boxes while moving the cursor over them
> when the mouse pointer is over the text.

Could you or Stephen please perform the following experiment, using
the latest emacs-29 branch, and report the results:

  $ gdb ./emacs
  ...
  (gdb) break xdisp.c:33519
  (gdb) run -Q

The breakpoint is here:

	  if (end_hpos > start_hpos)
	    {
	      draw_row_with_mouse_face (w, start_x, row,
					start_hpos, end_hpos, draw);

	      row->mouse_face_p   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
		= draw == DRAW_MOUSE_FACE || draw == DRAW_IMAGE_RAISED;
	    }

Once inside Emacs after "run -Q", first turn off blink-cursor-mode and
global-eldoc-mode, then evaluate the recipe:

  M-: (insert " " (propertize "TODO" 'face '(:inherit variable-pitch) 'mouse-face 'highlight)) RET

Then move the mouse pointer over the "TODO" text.  The breakpoint will
break, and GDB will kick in.  Then type:

  (gdb) pgrow
  (gdb) continue

The breakpoint will break again, and the display of Emacs you are
debugging will show the mouse highlight.  Then type again:

  (gdb) pgrow

And show everything that GDB displays as result of the two "pgrow"
commands.

Some notes:

  . the breakpoint might break before you evaluate the recipe, if you
    happen to move the mouse pointer above some mouse-sensitive
    portion of the display, like the tool bar or the mode line -- in
    that case just type "continue" at the GDB prompt until it no
    longer shows the prompt (meaning Emacs is running again);
  . the "pgrow" command is defined in src/.gdbinit file in the Emacs
    tree, so you need to start Emacs from the src directory for GDB to
    pick up that definition; alternatively, you could tell GDB to read
    that file explicitly by typing "source /path/to/emacs/src/.gdbinit"
    once inside GDB, before "run -Q";
  . if your Emacs is built with optimizations, the breakpoint might
    not break, or break not under the expected conditions; in that
    case, rebuild with CFLAGS='-O0 -g3' and repeat the above

Thanks.




This bug report was last modified 2 years and 9 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.