Mercurial > emacs
changeset 69426:46a8c3e0161d
(signal_user_input): New function.
(post_character_message): Use it for keyboard input.
(w32_msg_pump): Use it for mouse input.
author | Jason Rumney <jasonr@gnu.org> |
---|---|
date | Sat, 11 Mar 2006 23:46:27 +0000 |
parents | 9d5a725d84ee |
children | 656079a407fa |
files | src/w32fns.c |
diffstat | 1 files changed, 25 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/w32fns.c Sat Mar 11 23:45:44 2006 +0000 +++ b/src/w32fns.c Sat Mar 11 23:46:27 2006 +0000 @@ -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; }