summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Pierresteguy <F.Pierresteguy@frcl.bull.fr>1994-04-08 16:00:13 +0000
committerFred Pierresteguy <F.Pierresteguy@frcl.bull.fr>1994-04-08 16:00:13 +0000
commite39cfa0481d2104fb6a94506080105cb4522a553 (patch)
treeae8ed623d0db836dd71e31771351405a61adf043
parent669de29c379a8cb929e2a516f7fadad34ee430b2 (diff)
downloademacs-e39cfa0481d2104fb6a94506080105cb4522a553.tar.gz
(syms_of_xfns): Define Vx_cross_pointer_shape.
(Vx_cross_pointer_shape): New variable. (Vx_cross_pointer_shape): Create a mouse face cursor for the mouse-face properties.
-rw-r--r--src/xfns.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/xfns.c b/src/xfns.c
index 45dce7661e7..362b509eb3e 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -103,6 +103,7 @@ extern char *x_id_name;
/* The background and shape of the mouse pointer, and shape when not
over text or in the modeline. */
Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
+Lisp_Object Vx_cross_pointer_shape;
/* Color of chars displayed in cursor box. */
Lisp_Object Vx_cursor_fore_pixel;
@@ -671,7 +672,7 @@ x_set_mouse_color (f, arg, oldval)
struct frame *f;
Lisp_Object arg, oldval;
{
- Cursor cursor, nontext_cursor, mode_cursor;
+ Cursor cursor, nontext_cursor, mode_cursor, cross_cursor;
int mask_color;
if (!EQ (Qnil, arg))
@@ -715,6 +716,16 @@ x_set_mouse_color (f, arg, oldval)
}
else
mode_cursor = XCreateFontCursor (x_current_display, XC_xterm);
+ x_check_errors ("bad modeline pointer cursor: %s");
+
+ if (!EQ (Qnil, Vx_cross_pointer_shape))
+ {
+ CHECK_NUMBER (Vx_cross_pointer_shape, 0);
+ cross_cursor = XCreateFontCursor (x_current_display,
+ XINT (Vx_cross_pointer_shape));
+ }
+ else
+ cross_cursor = XCreateFontCursor (x_current_display, XC_crosshair);
/* Check and report errors with the above calls. */
x_check_errors ("can't set cursor shape: %s");
@@ -739,6 +750,8 @@ x_set_mouse_color (f, arg, oldval)
&fore_color, &back_color);
XRecolorCursor (x_current_display, mode_cursor,
&fore_color, &back_color);
+ XRecolorCursor (x_current_display, cross_cursor,
+ &fore_color, &back_color);
}
#else /* X10 */
cursor = XCreateCursor (16, 16, MouseCursor, MouseMask,
@@ -766,6 +779,10 @@ x_set_mouse_color (f, arg, oldval)
&& f->display.x->modeline_cursor != 0)
XFreeCursor (XDISPLAY f->display.x->modeline_cursor);
f->display.x->modeline_cursor = mode_cursor;
+ if (cross_cursor != f->display.x->cross_cursor
+ && f->display.x->cross_cursor != 0)
+ XFreeCursor (XDISPLAY f->display.x->cross_cursor);
+ f->display.x->cross_cursor = cross_cursor;
#endif /* HAVE_X11 */
XFlushQueue ();
@@ -4150,6 +4167,8 @@ switches, if present.");
#endif
Vx_mode_pointer_shape = Qnil;
+ Vx_cross_pointer_shape = Qnil;
+
DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
"A string indicating the foreground color of the cursor box.");
Vx_cursor_fore_pixel = Qnil;