changeset 5392:d8d5844c3ba6

Always include termhooks.h. [! MULTI_FRAME] (Fmouse_position): New definition. [! MULTI_FRAME] (syms_of_frame): Add mouse-position.
author Richard M. Stallman <rms@gnu.org>
date Fri, 31 Dec 1993 13:28:05 +0000
parents 0306cbfa87b7
children cfd16a1af914
files src/frame.c
diffstat 1 files changed, 31 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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 <config.h>
 #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 ()