* xterm.c (x_detect_focus_change): Do not change focus frame for
authorJan Djärv <jan.h.d@swipnet.se>
Fri, 14 Nov 2003 19:13:02 +0000 (19:13 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Fri, 14 Nov 2003 19:13:02 +0000 (19:13 +0000)
Enter/LeaveNotify if the current focus frame has explicit focus.

src/ChangeLog
src/xterm.c

index 5071d54..41aa2cd 100644 (file)
@@ -1,3 +1,8 @@
+2003-11-14  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xterm.c (x_detect_focus_change): Do not change focus frame for
+       Enter/LeaveNotify if the current focus frame has explicit focus.
+
 2003-11-14  Kim F. Storm  <storm@cua.dk>
 
        * dispnew.c (update_text_area): Fix redisplay error when hscroll
index 638ce46..85beb00 100644 (file)
@@ -3209,16 +3209,22 @@ x_detect_focus_change (dpyinfo, event, bufp, numchars)
     {
     case EnterNotify:
     case LeaveNotify:
-      if (event->xcrossing.detail != NotifyInferior
-          && event->xcrossing.focus
-          && ! (frame->output_data.x->focus_state & FOCUS_EXPLICIT))
-        nr_events = x_focus_changed ((event->type == EnterNotify
-                                      ? FocusIn : FocusOut),
-                                     FOCUS_IMPLICIT,
-                                     dpyinfo,
-                                     frame,
-                                     bufp,
-                                     numchars);
+      {
+        struct frame *focus_frame = dpyinfo->x_focus_event_frame;
+        int focus_state
+          = focus_frame ? focus_frame->output_data.x->focus_state : 0;
+
+        if (event->xcrossing.detail != NotifyInferior
+            && event->xcrossing.focus
+            && ! (focus_state & FOCUS_EXPLICIT))
+          nr_events = x_focus_changed ((event->type == EnterNotify
+                                        ? FocusIn : FocusOut),
+                                       FOCUS_IMPLICIT,
+                                       dpyinfo,
+                                       frame,
+                                       bufp,
+                                       numchars);
+      }
       break;
 
     case FocusIn: