changeset 7345:c107ec7641ec

(last_point_position_buffer): New variable. (command_loop_1): Set it. (make_lispy_movement): Don't call pixel_to_glyph_coords if FRAME is 0.
author Richard M. Stallman <rms@gnu.org>
date Fri, 06 May 1994 00:48:26 +0000
parents 17a251bf595b
children 777404b1718d
files src/keyboard.c
diffstat 1 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Fri May 06 00:32:58 1994 +0000
+++ b/src/keyboard.c	Fri May 06 00:48:26 1994 +0000
@@ -235,6 +235,9 @@
 /* The value of point when the last command was executed.  */
 int last_point_position;
 
+/* The buffer that was current when the last command was started.  */
+Lisp_Object last_point_position_buffer;
+
 #ifdef MULTI_FRAME
 /* The frame in which the last input event occurred, or Qmacro if the
    last event came from a macro.  We use this to determine when to
@@ -1048,6 +1051,7 @@
       prev_buffer = current_buffer;
       prev_modiff = MODIFF;
       last_point_position = PT;
+      XSET (last_point_position_buffer, Lisp_Buffer, prev_buffer);
 
       /* Execute the command.  */
 
@@ -2767,10 +2771,12 @@
       Lisp_Object posn;
       int column, row;
 
-      pixel_to_glyph_coords (frame, XINT (x), XINT (y), &column, &row, 0, 1);
-
       if (frame)
-	window = window_from_coordinates (frame, column, row, &area);
+	{
+	  /* It's in a frame; which window on that frame?  */
+	  pixel_to_glyph_coords (frame, XINT (x), XINT (y), &column, &row, 0, 1);
+	  window = window_from_coordinates (frame, column, row, &area);
+	}
       else
 	window = Qnil;