GNU bug report logs - #75931
31.0.50; mouse-face and pointer properties make pointer change back and forth

Previous Next

Package: emacs;

Reported by: Mauro Aranda <maurooaranda <at> gmail.com>

Date: Wed, 29 Jan 2025 18:23:01 UTC

Severity: normal

Found in version 31.0.50

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

Bug is archived. No further changes may be made.

Full log


Message #62 received at 75931 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Mauro Aranda <maurooaranda <at> gmail.com>
Cc: luangruo <at> yahoo.com, 75931 <at> debbugs.gnu.org
Subject: Re: bug#75931: 31.0.50; mouse-face and pointer properties make
 pointer change back and forth
Date: Sat, 01 Feb 2025 14:32:08 +0200
> Date: Sat, 1 Feb 2025 07:25:29 -0300
> Cc: 75931 <at> debbugs.gnu.org, luangruo <at> yahoo.com
> From: Mauro Aranda <maurooaranda <at> gmail.com>
> 
> Eli Zaretskii <eliz <at> gnu.org> writes:
> 
>  >> Date: Fri, 31 Jan 2025 05:52:07 -0300
>  >> Cc: 75931 <at> debbugs.gnu.org, luangruo <at> yahoo.com
>  >> From: Mauro Aranda <maurooaranda <at> gmail.com>
>  >>
>  >> Eli Zaretskii <eliz <at> gnu.org> writes:
>  >>
>  >>  >> Date: Thu, 30 Jan 2025 17:41:02 -0300
>  >>  >> Cc: 75931 <at> debbugs.gnu.org, luangruo <at> yahoo.com
>  >>  >> From: Mauro Aranda <maurooaranda <at> gmail.com>
>  >>  >>
>  >>  >> Eli Zaretskii <eliz <at> gnu.org> writes:
>  >>  >>
>  >>  >>  > Please try the patch below.
>  >>  >>
>  >>  >> Thanks, but the issue remains after applying the patch.
>  >>  >
>  >>  > That probably means that one or more other calls to show_mouse_face
>  >>  > need to be passed 'false' as the last argument. Since AFAIU only the
>  >>  > calls with DRAW_MOUSE_FACE can reset the mouse pointer back to the
>  >>  > hand shape, those are the calls that are the suspects.  So please
>  >>  > change each such call and see which additional one needs that.  I 
> hope
>  >>  > there's only one such call, so please change only one call at a time,
>  >>  > each time returning the other calls to their current state.
>  >>
>  >> It's the call at the end of mouse_face_from_buffer_pos.
>  >
>  > I'm confused: didn't you say earlier in this discussion that removing
>  > this call to show_mouse_face in erase_phys_cursor:
>  >
>  >   #ifdef HAVE_WINDOW_SYSTEM
>  >     /* Since erasing the phys cursor will probably lead to corruption of
>  >        the mouse face display if the glyph's pixel_width is not kept up
>  >        to date with the :box property of the mouse face, just redraw the
>  >        mouse face, but leave the mouse cursor as it was.  */
>  >     if (FRAME_WINDOW_P (WINDOW_XFRAME (w)) && mouse_face_here_p)
>  >       {
>  >     w->phys_cursor_on_p = false;
>  >     w->phys_cursor_type = NO_CURSOR;
>  >     show_mouse_face (MOUSE_HL_INFO (WINDOW_XFRAME (w)), DRAW_MOUSE_FACE,
>  >              false);
>  >     return;
>  >       }
>  >   #endif
>  > solves the problem?
> 
> No, I never tried removing it, I said:
> "Perhaps it is the call to show_mouse_face that was added to
> erase_phys_cursor."
> 
> That was because reverting the changes in dispnew.c solved the problem
> after your commit, but didn't solve it anymore after the commit by Po
> Lu, which added that call.

So removing both the two lines I added in dispnew.c and the above
snippet added by Po Lu (and leaving the rest of the code intact) does
solve the problem?

I'm flying blind here, so I need all the help I can get.




This bug report was last modified 108 days ago.

Previous Next


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