[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xterm.c
From: |
Gerd Moellmann |
Subject: |
[Emacs-diffs] Changes to emacs/src/xterm.c |
Date: |
Thu, 15 Nov 2001 06:03:23 -0500 |
Index: emacs/src/xterm.c
diff -u emacs/src/xterm.c:1.681 emacs/src/xterm.c:1.682
--- emacs/src/xterm.c:1.681 Mon Nov 12 17:55:02 2001
+++ emacs/src/xterm.c Thu Nov 15 06:01:58 2001
@@ -11223,12 +11223,6 @@
{
struct frame *f = XFRAME (w->frame);
struct glyph *cursor_glyph;
- GC gc;
- int x;
- unsigned long mask;
- XGCValues xgcv;
- Display *dpy;
- Window window;
/* If cursor is out of bounds, don't draw garbage. This can happen
in mini-buffer windows when switching between echo area glyphs
@@ -11248,13 +11242,23 @@
}
else
{
- xgcv.background = f->output_data.x->cursor_pixel;
- xgcv.foreground = f->output_data.x->cursor_pixel;
+ Display *dpy = FRAME_X_DISPLAY (f);
+ Window window = FRAME_X_WINDOW (f);
+ GC gc = FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc;
+ unsigned long mask = GCForeground | GCBackground | GCGraphicsExposures;
+ struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id);
+ XGCValues xgcv;
+
+ /* If the glyph's background equals the color we normally draw
+ the bar cursor in, the bar cursor in its normal color is
+ invisible. Use the glyph's foreground color instead in this
+ case, on the assumption that the glyph's colors are chosen so
+ that the glyph is legible. */
+ if (face->background == f->output_data.x->cursor_pixel)
+ xgcv.background = xgcv.foreground = face->foreground;
+ else
+ xgcv.background = xgcv.foreground = f->output_data.x->cursor_pixel;
xgcv.graphics_exposures = 0;
- mask = GCForeground | GCBackground | GCGraphicsExposures;
- dpy = FRAME_X_DISPLAY (f);
- window = FRAME_X_WINDOW (f);
- gc = FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc;
if (gc)
XChangeGC (dpy, gc, mask, &xgcv);
@@ -11266,14 +11270,13 @@
if (width < 0)
width = f->output_data.x->cursor_width;
+ width = min (cursor_glyph->pixel_width, width);
- x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
x_clip_to_row (w, row, gc, 0);
XFillRectangle (dpy, window, gc,
- x,
+ WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x),
WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
- min (cursor_glyph->pixel_width, width),
- row->height);
+ width, row->height);
XSetClipMask (dpy, gc, None);
}
}
- [Emacs-diffs] Changes to emacs/src/xterm.c, Richard M. Stallman, 2001/11/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, Richard M. Stallman, 2001/11/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, Richard M. Stallman, 2001/11/12
- [Emacs-diffs] Changes to emacs/src/xterm.c, Gerd Moellmann, 2001/11/15
- [Emacs-diffs] Changes to emacs/src/xterm.c,
Gerd Moellmann <=
- [Emacs-diffs] Changes to emacs/src/xterm.c, Gerd Moellmann, 2001/11/15
- [Emacs-diffs] Changes to emacs/src/xterm.c, Kim F. Storm, 2001/11/16
- [Emacs-diffs] Changes to emacs/src/xterm.c, Pavel Janík, 2001/11/16
- [Emacs-diffs] Changes to emacs/src/xterm.c, Jason Rumney, 2001/11/17
- [Emacs-diffs] Changes to emacs/src/xterm.c, Jason Rumney, 2001/11/17
- [Emacs-diffs] Changes to emacs/src/xterm.c, Andreas Schwab, 2001/11/17
- [Emacs-diffs] Changes to emacs/src/xterm.c, Andreas Schwab, 2001/11/17
- [Emacs-diffs] Changes to emacs/src/xterm.c, Pavel Janík, 2001/11/24
- [Emacs-diffs] Changes to emacs/src/xterm.c, Gerd Moellmann, 2001/11/28
- [Emacs-diffs] Changes to emacs/src/xterm.c, Gerd Moellmann, 2001/11/28