changeset 29513:dfb72889ff52

(kbd_buffer_get_event): Handle FOCUS_IN_EVENT by generating a switch-frame event if necessary.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 08 Jun 2000 20:57:01 +0000
parents e222720769a0
children e31f78844157
files src/keyboard.c
diffstat 1 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Thu Jun 08 20:56:24 2000 +0000
+++ b/src/keyboard.c	Thu Jun 08 20:57:01 2000 +0000
@@ -3315,10 +3315,28 @@
 	  obj = Fcons (Qhelp_echo, event->frame_or_window);
 	  kbd_fetch_ptr = event + 1;
 	}
-      /* If this event is on a different frame, return a switch-frame this
-	 time, and leave the event in the queue for next time.  */
+      else if (event->kind == FOCUS_IN_EVENT)
+	{
+	  /* Notification of a FocusIn event.  The frame receiving the
+	     focus is in event->frame_or_window.  Generate a
+	     switch-frame event if necessary.  */
+	  Lisp_Object frame, focus;
+
+	  frame = event->frame_or_window;
+	  focus = FRAME_FOCUS_FRAME (XFRAME (frame));
+	  if (FRAMEP (focus))
+	    frame = focus;
+
+	  if (!EQ (frame, internal_last_event_frame)
+	      && !EQ (frame, selected_frame))
+	    obj = make_lispy_switch_frame (frame);
+	  internal_last_event_frame = frame;
+	  kbd_fetch_ptr = event + 1;
+	}
       else
 	{
+	  /* If this event is on a different frame, return a switch-frame this
+	     time, and leave the event in the queue for next time.  */
 	  Lisp_Object frame;
 	  Lisp_Object focus;