# HG changeset patch # User Richard M. Stallman # Date 757344485 0 # Node ID d8d5844c3ba6dde87a6dab878978bd2e82826897 # Parent 0306cbfa87b74835e92a76b02aaccfce4b0678e0 Always include termhooks.h. [! MULTI_FRAME] (Fmouse_position): New definition. [! MULTI_FRAME] (syms_of_frame): Add mouse-position. diff -r 0306cbfa87b7 -r d8d5844c3ba6 src/frame.c --- a/src/frame.c Fri Dec 31 13:06:33 1993 +0000 +++ b/src/frame.c Fri Dec 31 13:28:05 1993 +0000 @@ -22,12 +22,12 @@ #include #include "lisp.h" #include "frame.h" +#include "termhooks.h" #ifdef MULTI_FRAME #include "buffer.h" #include "window.h" -#include "termhooks.h" /* These help us bind and responding to switch-frame events. */ #include "commands.h" @@ -1715,6 +1715,35 @@ return Qnil; } +DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0, + "Return a list (FRAME X . Y) giving the current mouse frame and position.\n\ +The position is given in character cells, where (0, 0) is the\n\ +upper-left corner.\n\ +If Emacs is running on a mouseless terminal or hasn't been programmed\n\ +to read the mouse position, it returns the selected frame for FRAME\n\ +and nil for X and Y.") + () +{ + FRAME_PTR f; + Lisp_Object lispy_dummy; + enum scroll_bar_part party_dummy; + Lisp_Object x, y; + unsigned long long_dummy; + + f = selected_frame; + x = y = Qnil; + + /* It's okay for the hook to refrain from storing anything. */ + if (mouse_position_hook) + (*mouse_position_hook) (&f, + &lispy_dummy, &party_dummy, + &x, &y, + &long_dummy); + + /* Always return nil for frame. */ + return Fcons (Qnil, Fcons (x, y)); +} + syms_of_frame () { defsubr (&Sselected_frame); @@ -1732,6 +1761,7 @@ Ffset (intern ("screen-height"), intern ("frame-height")); defsubr (&Sframe_width); Ffset (intern ("screen-width"), intern ("frame-width")); + defsubr (&Smouse_position); } keys_of_frame ()