bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#6609: 23.2; Cursor becomes invisible when put over some faces


From: Eli Zaretskii
Subject: bug#6609: 23.2; Cursor becomes invisible when put over some faces
Date: Mon, 12 Jul 2010 13:35:16 +0300

> From: Deniz Dogan <deniz.a.m.dogan@gmail.com>
> Date: Mon, 12 Jul 2010 10:09:04 +0200
> Cc: 6609@debbugs.gnu.org
> 
> 2010/7/12 Eli Zaretskii <eliz@gnu.org>:
> >> From: Deniz Dogan <deniz.a.m.dogan@gmail.com>
> >> Date: Sun, 11 Jul 2010 21:49:12 +0200
> >> Cc: 6609@debbugs.gnu.org
> >>
> >> Terribly sorry about that. I did mean white foreground on black
> >> background in the original report!
> >
> > A world of difference.  I do see this problem on XP as well, then.
> >
> > Can someone try this on GNU/Linux in a GUI session, please?  I'd like
> > to know if this problem is specific to w32.
> >
> > To repeat the recipe:
> >
> >  emacs -Q
> >
> > Insert this in the *scratch* buffer:
> >
> >  (set-background-color "black")
> >  (set-foreground-color "white")
> >
> > Evaluate these two lines.  Your cursor will now become invisible.  You
> > can only see it (a) when it is on some text of a non-default color, or
> > (b) when the Emacs frame does not have focus, and the cursor is
> > displayed as a hollow rectangle.
> >
> > "M-x set-face-background RET cursor RET white RET" fixes the problem.
> > So my first guess would be that we don't do that automatically as part
> > of changing the default face, for some reason.
> >
> 
> I have tried this on GNU/Linux as well (Bazaar version from some time
> in June) and the problem does not appear there. I can't remember it
> ever happening on GNU/Linux actually.

Can you please try the patch below?  If it works for you, I will
commit it to the emacs-23 branch.

=== modified file 'src/w32fns.c'
--- src/w32fns.c        2010-07-10 18:52:53 +0000
+++ src/w32fns.c        2010-07-12 10:31:49 +0000
@@ -1333,7 +1333,10 @@ x_set_foreground_color (struct frame *f,
   if (FRAME_W32_WINDOW (f) != 0)
     {
       if (x->cursor_pixel == old_fg)
-       x->cursor_pixel = fg;
+       {
+         x->cursor_pixel = fg;
+         x->cursor_gc->background = fg;
+       }
 
       update_face_from_frame_parameter (f, Qforeground_color, arg);
       if (FRAME_VISIBLE_P (f))







reply via email to

[Prev in Thread] Current Thread [Next in Thread]