summaryrefslogtreecommitdiff
path: root/src/xterm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xterm.c')
-rw-r--r--src/xterm.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/xterm.c b/src/xterm.c
index ab4da0cc3d3..2e057dac76f 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -4828,8 +4828,27 @@ x_display_bar_cursor (f, on, x, y)
&& x < current_glyphs->used[y])
? current_glyphs->glyphs[y][x]
: SPACEGLYPH);
+
+ {
+ XGCValues xgcv;
+ unsigned long mask;
+
+ xgcv.background = f->output_data.x->cursor_pixel;
+ xgcv.foreground = f->output_data.x->cursor_pixel;
+ xgcv.graphics_exposures = 0;
+ mask = GCForeground | GCBackground | GCGraphicsExposures;
+
+ if (FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc)
+ XChangeGC (FRAME_X_DISPLAY (f),
+ FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc,
+ mask, &xgcv);
+ else
+ FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc
+ = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), mask, &xgcv);
+ }
+
XFillRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
- f->output_data.x->cursor_gc,
+ FRAME_X_DISPLAY_INFO (f)->scratch_cursor_gc,
CHAR_TO_PIXEL_COL (f, x),
CHAR_TO_PIXEL_ROW (f, y),
max (f->output_data.x->cursor_width, 1),