[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/w32fns.c
From: |
Jason Rumney |
Subject: |
[Emacs-diffs] Changes to emacs/src/w32fns.c |
Date: |
Sat, 11 Mar 2006 23:46:27 +0000 |
Index: emacs/src/w32fns.c
diff -u emacs/src/w32fns.c:1.263 emacs/src/w32fns.c:1.264
--- emacs/src/w32fns.c:1.263 Sat Mar 11 16:31:39 2006
+++ emacs/src/w32fns.c Sat Mar 11 23:46:27 2006
@@ -2695,6 +2695,24 @@
}
static void
+signal_user_input ()
+{
+ /* Interrupt any lisp that wants to be interrupted by input. */
+ if (!NILP (Vthrow_on_input))
+ {
+ Vquit_flag = Vthrow_on_input;
+ /* If we're inside a function that wants immediate quits,
+ do it now. */
+ if (immediate_quit && NILP (Vinhibit_quit))
+ {
+ immediate_quit = 0;
+ QUIT;
+ }
+ }
+}
+
+
+static void
post_character_message (hwnd, msg, wParam, lParam, modifiers)
HWND hwnd;
UINT msg;
@@ -2751,6 +2769,8 @@
to receive C-g to interrupt the lisp thread. */
cancel_all_deferred_msgs ();
}
+ else
+ signal_user_input ();
}
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
@@ -3270,6 +3290,7 @@
wmsg.dwModifiers = w32_get_modifiers ();
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ signal_user_input ();
/* Need to return true for XBUTTON messages, false for others,
to indicate that we processed the message. */
@@ -3324,11 +3345,13 @@
case WM_MOUSEWHEEL:
wmsg.dwModifiers = w32_get_modifiers ();
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ signal_user_input ();
return 0;
case WM_DROPFILES:
wmsg.dwModifiers = w32_get_modifiers ();
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ signal_user_input ();
return 0;
case WM_TIMER:
@@ -3338,6 +3361,7 @@
if (saved_mouse_button_msg.msg.hwnd)
{
post_msg (&saved_mouse_button_msg);
+ signal_user_input ();
saved_mouse_button_msg.msg.hwnd = 0;
}
KillTimer (hwnd, mouse_button_timer);
@@ -3840,6 +3864,7 @@
{
wmsg.dwModifiers = w32_get_modifiers ();
my_post_msg (&wmsg, hwnd, msg, wParam, lParam);
+ signal_user_input ();
return 0;
}