Mercurial > emacs
changeset 28347:ce7dddf6dfb7
(x_specified_cursor_type): New function.
(x_set_cursor_type): Use it.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 27 Mar 2000 11:06:04 +0000 |
parents | 9ef17fa48577 |
children | 9c49407e708e |
files | src/xfns.c |
diffstat | 1 files changed, 31 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfns.c Mon Mar 27 09:51:45 2000 +0000 +++ b/src/xfns.c Mon Mar 27 11:06:04 2000 +0000 @@ -1609,31 +1609,51 @@ } } -void -x_set_cursor_type (f, arg, oldval) - FRAME_PTR f; - Lisp_Object arg, oldval; -{ + +/* Value is the internal representation of the specified cursor type + ARG. If type is BAR_CURSOR, return in *WIDTH the specified width + of the bar cursor. */ + +enum text_cursor_kinds +x_specified_cursor_type (arg, width) + Lisp_Object arg; + int *width; +{ + enum text_cursor_kinds type; + if (EQ (arg, Qbar)) { - FRAME_DESIRED_CURSOR (f) = BAR_CURSOR; - f->output_data.x->cursor_width = 2; + type = BAR_CURSOR; + *width = 2; } else if (CONSP (arg) && EQ (XCAR (arg), Qbar) && INTEGERP (XCDR (arg)) && XINT (XCDR (arg)) >= 0) { - FRAME_DESIRED_CURSOR (f) = BAR_CURSOR; - f->output_data.x->cursor_width = XINT (XCDR (arg)); + type = BAR_CURSOR; + *width = XINT (XCDR (arg)); } else if (NILP (arg)) - FRAME_DESIRED_CURSOR (f) = NO_CURSOR; + type = NO_CURSOR; else /* Treat anything unknown as "box cursor". It was bad to signal an error; people have trouble fixing .Xdefaults with Emacs, when it has something bad in it. */ - FRAME_DESIRED_CURSOR (f) = FILLED_BOX_CURSOR; + type = FILLED_BOX_CURSOR; + + return type; +} + +void +x_set_cursor_type (f, arg, oldval) + FRAME_PTR f; + Lisp_Object arg, oldval; +{ + int width; + + FRAME_DESIRED_CURSOR (f) = x_specified_cursor_type (arg, &width); + f->output_data.x->cursor_width = width; /* Make sure the cursor gets redrawn. This is overkill, but how often do people change cursor types? */