GNU bug report logs - #75930
30.0.92; Setting default frame background color messes up mouse pointer

Previous Next

Package: emacs;

Reported by: Lars Rustand <rustand.lars <at> gmail.com>

Date: Wed, 29 Jan 2025 16:37:01 UTC

Severity: normal

Found in version 30.0.92

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: rustand.lars <at> gmail.com
Cc: luangruo <at> yahoo.com, 75930 <at> debbugs.gnu.org
Subject: bug#75930: 30.0.92; Setting default frame background color messes up mouse pointer
Date: Fri, 31 Jan 2025 09:11:15 +0200
> From: rustand.lars <at> gmail.com
> Cc: 75930 <at> debbugs.gnu.org
> Date: Thu, 30 Jan 2025 22:04:31 +0100
> 
> 
> Po Lu <luangruo <at> yahoo.com> writes:
> 
> > Eli Zaretskii <eliz <at> gnu.org> writes:
> >
> >> The thing is, I cannot find where this setting of the border happens
> >> in our code.  It seems to be the consequence of setting the frame's
> >> background mode, which happens when you set the background color, but
> >> that's where the track went cold for me, probably because I don't know
> >> enough about the X11 graphics.  I hope someone else will be able to
> >> point out where we cause that border to appear, and then a solution
> >> might be found.
> >>
> >> Po Lu, any suggestions or ideas?
> >
> > Set a breakpoint on x_set_mouse_color, perhaps?
> 
> I don't think a breakpoint will be necessary, I just popped in and had a
> look at x_set_mouse_color, and it shows quite clearly that it does
> explicitly do what I experience.
> 
> First it sets mask_color to the frame background near the start of the
> function:
> 
>   unsigned long pixel = x_decode_color (f, arg, BLACK_PIX_DEFAULT (f));
>   unsigned long mask_color = FRAME_BACKGROUND_PIXEL (f);
> 
> 
> Then a bit further down it does this:
> 
>     XColor colors[2]; /* 0=foreground, 1=background */
> 
>     colors[0].pixel = x->mouse_pixel;
>     colors[1].pixel = mask_color;
>     x_query_colors (f, colors, 2);
> 
>     for (i = 0; i < mouse_cursor_max; i++)
>       XRecolorCursor (dpy, cursor_data.cursor[i], &colors[0], &colors[1]);
> 
> 
> So it seems that x_set_mouse_color always sets the mouse pointer border
> color to the frame background. However, the foreground color defaults to
> BLACK_PIX_DEFAULT.

So now I'm confused: why is this a bug?




This bug report was last modified 120 days ago.

Previous Next


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