From 945c5bb194ecdc4f3be4223dcfcd88077391975b Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Thu, 18 Jul 2013 18:50:05 +0200 Subject: [PATCH] Followup to 2013-07-16T11:41:06Z!jan.h.d@swipnet.se. * 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 | 5 +++++ lisp/frame.el | 6 +++--- src/ChangeLog | 6 ++++++ src/keyboard.c | 8 ++++---- src/w32term.c | 15 ++++++++++++--- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index fc38ef046a4..f56654af9ca 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-07-18 Juanma Barranquero + + * 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 * filenotify.el (file-notify--library): Renamed from diff --git a/lisp/frame.el b/lisp/frame.el index a37d1189552..ed47afa4b94 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -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) diff --git a/src/ChangeLog b/src/ChangeLog index 8a1c163998b..de80ac168bd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2013-07-18 Juanma Barranquero + + * 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 * filelock.c: Fix unlikely file descriptor leaks. diff --git a/src/keyboard.c b/src/keyboard.c index 07dce85ff29..f025d6c5dfa 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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; } diff --git a/src/w32term.c b/src/w32term.c index 732a4f4bfef..2fe3fe07462 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -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? */ } -- 2.11.4.GIT