Mercurial > emacs
changeset 45467:583ed47de245
(x_draw_bar_cursor): New argument KIND; callers changed.
Handle the `hbar' cursor type.
(x_display_and_set_cursor): Handle the HBAR_CURSOR case.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Wed, 22 May 2002 19:37:17 +0000 |
parents | 99208aa9226d |
children | 42c7dadf18d8 |
files | src/w32term.c |
diffstat | 1 files changed, 22 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32term.c Wed May 22 19:36:13 2002 +0000 +++ b/src/w32term.c Wed May 22 19:37:17 2002 +0000 @@ -9455,10 +9455,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; @@ -9488,6 +9489,7 @@ if (width < 0) width = f->output_data.w32->cursor_width; + width = min (cursor_glyph->pixel_width, width); /* If the glyph's background equals the color we normally draw the bar cursor in, the bar cursor in its normal color is @@ -9500,10 +9502,20 @@ x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); hdc = get_frame_dc (f); w32_clip_to_row (w, row, hdc, 0); - w32_fill_area (f, hdc, cursor_color, x, - WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), - min (cursor_glyph->pixel_width, width), - row->height); + + if (kind == BAR_CURSOR) + { + w32_fill_area (f, hdc, cursor_color, x, + WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y), + width, row->height); + } + else + { + w32_fill_area (f, hdc, cursor_color, x, + WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y + + row->height - width), + cursor_glyph->pixel_width, width); + } release_frame_dc (f, hdc); } } @@ -9872,7 +9884,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: