]> git.eshelyaron.com Git - emacs.git/commitdiff
(kbd_buffer_get_event): Handle FOCUS_IN_EVENT by
authorGerd Moellmann <gerd@gnu.org>
Thu, 8 Jun 2000 20:57:01 +0000 (20:57 +0000)
committerGerd Moellmann <gerd@gnu.org>
Thu, 8 Jun 2000 20:57:01 +0000 (20:57 +0000)
generating a switch-frame event if necessary.

src/keyboard.c

index a402b44f1c03a6a0ae7fc8ce2bb41c487d916dce..c5cc3e45a9655d712f927ae5299085d85d57c17c 100644 (file)
@@ -3315,10 +3315,28 @@ kbd_buffer_get_event (kbp, used_mouse_menu)
          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;