1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-25 23:10:47 -08:00

(x_draw_hollow_cursor): Sync with xterm.c

This commit is contained in:
Jason Rumney 2004-05-01 10:10:36 +00:00
parent 4ae73f87a0
commit 07c07cfe9a
2 changed files with 24 additions and 11 deletions

View file

@ -1,3 +1,7 @@
2004-05-01 Jason Rumney <jasonr@gnu.org>
* w32term.c (x_draw_hollow_cursor): Sync with xterm.c
2004-04-30 Kim F. Storm <storm@cua.dk>
* buffer.c (syms_of_buffer) <line-spacing>: Allow float value.

View file

@ -4177,8 +4177,7 @@ w32_read_socket (sd, expected, hold_quit)
/* So people can tell when we have read the available input. */
input_signal_count++;
/* TODO: tool-bars, ghostscript integration, mouse
cursors. */
/* TODO: ghostscript integration. */
while (get_next_msg (&msg, FALSE))
{
struct input_event inev;
@ -4934,28 +4933,38 @@ x_draw_hollow_cursor (w, row)
struct frame *f = XFRAME (WINDOW_FRAME (w));
HDC hdc;
RECT rect;
int wd;
int wd, h;
struct glyph *cursor_glyph;
HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel);
/* Compute frame-relative coordinates from window-relative
coordinates. */
rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y)
+ row->ascent - w->phys_cursor_ascent);
rect.bottom = rect.top + row->height;
/* Get the glyph the cursor is on. If we can't tell because
the current matrix is invalid or such, give up. */
cursor_glyph = get_phys_cursor_glyph (w);
if (cursor_glyph == NULL)
return;
/* Compute frame-relative coordinates from window-relative
coordinates. */
rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y)
+ row->ascent - w->phys_cursor_ascent);
/* Compute the proper height and ascent of the rectangle, based
on the actual glyph. Using the full height of the row looks
bad when there are tall images on that row. */
h = max (min (FRAME_LINE_HEIGHT (f), row->height),
cursor_glyph->ascent + cursor_glyph->descent);
if (h < row->height)
rect.top += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h;
h--;
rect.bottom = rect.top + h;
/* Compute the width of the rectangle to draw. If on a stretch
glyph, and `x-stretch-block-cursor' is nil, don't draw a
rectangle as wide as the glyph, but use a canonical character
width instead. */
wd = cursor_glyph->pixel_width;
wd = cursor_glyph->pixel_width; /* TODO: Why off by one compared with X? */
if (cursor_glyph->type == STRETCH_GLYPH
&& !x_stretch_cursor_p)
wd = min (FRAME_COLUMN_WIDTH (f), wd);