Followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se.
authorJuanma Barranquero <lekktu@gmail.com>
Thu, 18 Jul 2013 16:50:05 +0000 (18:50 +0200)
committerJuanma Barranquero <lekktu@gmail.com>
Thu, 18 Jul 2013 16:50:05 +0000 (18:50 +0200)
* lisp/frame.el (blink-cursor-timer-function, blink-cursor-suspend):
  Add check for W32.
* src/keyboard.c (kbd_buffer_get_event):
* src/w32term.c (x_focus_changed): Port FOCUS_(IN|OUT)_EVENT changes to W32.

lisp/ChangeLog
lisp/frame.el
src/ChangeLog
src/keyboard.c
src/w32term.c

index fc38ef0..f56654a 100644 (file)
@@ -1,3 +1,8 @@
+2013-07-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * frame.el (blink-cursor-timer-function, blink-cursor-suspend):
+       Add check for W32 (followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se).
+
 2013-07-18  Michael Albinus  <michael.albinus@gmx.de>
 
        * filenotify.el (file-notify--library): Renamed from
index a37d118..ed47afa 100644 (file)
@@ -1709,7 +1709,7 @@ command starts, by installing a pre-command hook."
   "Timer function of timer `blink-cursor-timer'."
   (internal-show-cursor nil (not (internal-show-cursor-p)))
   ;; Each blink is two calls to this function.
-  (when (memq window-system '(x ns))
+  (when (memq window-system '(x ns w32))
     (setq blink-cursor-blinks-done (1+ blink-cursor-blinks-done))
     (when (and (> blink-cursor-blinks 0)
               (<= (* 2 blink-cursor-blinks) blink-cursor-blinks-done))
@@ -1729,11 +1729,11 @@ itself as a pre-command hook."
     (setq blink-cursor-timer nil)))
 
 (defun blink-cursor-suspend ()
-  "Suspend cursor blinking on NS and X.
+  "Suspend cursor blinking on NS, X and W32.
 This is called when no frame has focus and timers can be suspended.
 Timers are restarted by `blink-cursor-check', which is called when a
 frame receives focus."
-  (when (memq window-system '(x ns))
+  (when (memq window-system '(x ns w32))
     (blink-cursor-end)
     (when blink-cursor-idle-timer
       (cancel-timer blink-cursor-idle-timer)
index 8a1c163..de80ac1 100644 (file)
@@ -1,3 +1,9 @@
+2013-07-18  Juanma Barranquero  <lekktu@gmail.com>
+
+       * keyboard.c (kbd_buffer_get_event):
+       * w32term.c (x_focus_changed): Port FOCUS_(IN|OUT)_EVENT changes to W32.
+       Followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se.
+
 2013-07-18  Paul Eggert  <eggert@cs.ucla.edu>
 
        * filelock.c: Fix unlikely file descriptor leaks.
index 07dce85..f025d6c 100644 (file)
@@ -4066,7 +4066,7 @@ kbd_buffer_get_event (KBOARD **kbp,
         }
       else if (event->kind == FOCUS_OUT_EVENT)
         {
-#if defined(HAVE_NS) || defined (HAVE_X11)
+#if defined (HAVE_NS) || defined (HAVE_X11) || defined (WINDOWSNT)
 
 #ifdef HAVE_NS
           struct ns_display_info *di;
@@ -4076,11 +4076,11 @@ kbd_buffer_get_event (KBOARD **kbp,
           Lisp_Object frame = event->frame_or_window;
           bool focused = false;
 
-          for (di = x_display_list; di && ! focused; di = di->next)
-            focused = di->x_highlight_frame != 0;
+          for (di = x_display_list; di && ! focused; di = FRAME_X_DISPLAY_INFO (di)->next)
+            focused = FRAME_X_DISPLAY_INFO (di)->x_highlight_frame = 0;
 
           if (! focused) obj = make_lispy_focus_out (frame);
-#endif /* HAVE_NS || HAVE_X11 */
+#endif /* HAVE_NS || HAVE_X11 || WINDOWSNT */
 
           kbd_fetch_ptr = event + 1;
         }
index 732a4f4..2fe3fe0 100644 (file)
@@ -2912,9 +2912,15 @@ x_focus_changed (int type, int state, struct w32_display_info *dpyinfo,
               && CONSP (Vframe_list)
               && !NILP (XCDR (Vframe_list)))
             {
-              bufp->kind = FOCUS_IN_EVENT;
-              XSETFRAME (bufp->frame_or_window, frame);
+              bufp->arg = Qt;
             }
+          else
+            {
+              bufp->arg = Qnil;
+            }
+
+          bufp->kind = FOCUS_IN_EVENT;
+          XSETFRAME (bufp->frame_or_window, frame);
         }
 
       frame->output_data.x->focus_state |= state;
@@ -2929,7 +2935,10 @@ x_focus_changed (int type, int state, struct w32_display_info *dpyinfo,
         {
           dpyinfo->w32_focus_event_frame = 0;
           x_new_focus_frame (dpyinfo, 0);
-        }
+
+          bufp->kind = FOCUS_OUT_EVENT;
+          XSETFRAME (bufp->frame_or_window, frame);
+      }
 
       /* TODO: IME focus?  */
     }