Mercurial > emacs
diff src/keyboard.c @ 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 | 1d74ff8abe23 |
| children | f276bf2f52f0 |
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;
