# HG changeset patch # User Eli Zaretskii # Date 1019216878 0 # Node ID 8826cd76618a2b656fb6d93898bfcae276d83e0f # Parent 63f15e84eed7dca7390172648f17e97dcd38a545 (x_draw_bar_cursor): New argument KIND; callers changed. Handle the `hbar' cursor type. (x_display_and_set_cursor): Handle the HBAR_CURSOR case. diff -r 63f15e84eed7 -r 8826cd76618a src/xterm.c --- a/src/xterm.c Fri Apr 19 11:45:27 2002 +0000 +++ b/src/xterm.c Fri Apr 19 11:47:58 2002 +0000 @@ -469,7 +469,8 @@ static void XTframe_rehighlight P_ ((struct frame *)); static void x_frame_rehighlight P_ ((struct x_display_info *)); static void x_draw_hollow_cursor P_ ((struct window *, struct glyph_row *)); -static void x_draw_bar_cursor P_ ((struct window *, struct glyph_row *, int)); +static void x_draw_bar_cursor P_ ((struct window *, struct glyph_row *, int, + enum text_cursor_kinds)); static int x_intersect_rectangles P_ ((XRectangle *, XRectangle *, XRectangle *)); static void expose_frame P_ ((struct frame *, int, int, int, int)); @@ -11333,10 +11334,11 @@ --gerd. */ static void -x_draw_bar_cursor (w, row, width) +x_draw_bar_cursor (w, row, width, kind) struct window *w; struct glyph_row *row; int width; + enum text_cursor_kinds kind; { struct frame *f = XFRAME (w->frame); struct glyph *cursor_glyph; @@ -11390,10 +11392,19 @@ width = min (cursor_glyph->pixel_width, width); x_clip_to_row (w, row, gc, 0); - XFillRectangle (dpy, window, gc, - WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x), - WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), - width, row->height); + if (kind == BAR_CURSOR) + XFillRectangle (dpy, window, gc, + WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x), + WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), + width, row->height); + else + XFillRectangle (dpy, window, gc, + WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x), + WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y + + row->height - width), + cursor_glyph->pixel_width, + width); + XSetClipMask (dpy, gc, None); } } @@ -11714,7 +11725,11 @@ break; case BAR_CURSOR: - x_draw_bar_cursor (w, glyph_row, new_cursor_width); + x_draw_bar_cursor (w, glyph_row, new_cursor_width, BAR_CURSOR); + break; + + case HBAR_CURSOR: + x_draw_bar_cursor (w, glyph_row, new_cursor_width, HBAR_CURSOR); break; case NO_CURSOR: