# HG changeset patch # User Gerd Moellmann # Date 954155164 0 # Node ID ce7dddf6dfb75f8e8ca4def80c1e42f2c7dbedd7 # Parent 9ef17fa48577b89256d5d87ac9cb18a7dd67c0ad (x_specified_cursor_type): New function. (x_set_cursor_type): Use it. diff -r 9ef17fa48577 -r ce7dddf6dfb7 src/xfns.c --- 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? */