Mercurial > emacs
changeset 30711:1b27b74c2510
Include keyboard.h.
(XMenuActivate): Empty no_event events from the event buffer. If
no events are left after that, call clear_input_pending.
(mouse_clear_clicks): New function, code moved from mouse_init.
(mouse_init, XMenuActivate): Call mouse_clear_clicks to force the
mouse driver to ``forget'' any past clicks.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Wed, 09 Aug 2000 12:26:13 +0000 |
parents | 17973241c0d2 |
children | face4156ed29 |
files | src/msdos.c |
diffstat | 1 files changed, 21 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/msdos.c Wed Aug 09 12:24:57 2000 +0000 +++ b/src/msdos.c Wed Aug 09 12:26:13 2000 +0000 @@ -61,6 +61,7 @@ #include "buffer.h" #include "commands.h" #include "blockinput.h" +#include "keyboard.h" #include <go32.h> #include <pc.h> #include <ctype.h> @@ -309,11 +310,26 @@ mouse_last_y = y; } +/* Force the mouse driver to ``forget'' about any button clicks until + now. */ +static void +mouse_clear_clicks (void) +{ + int b; + + for (b = 0; b < mouse_button_count; b++) + { + int dummy_x, dummy_y; + + (void) mouse_pressed (b, &dummy_x, &dummy_y); + (void) mouse_released (b, &dummy_x, &dummy_y); + } +} + void mouse_init () { union REGS regs; - int b; if (termscript) fprintf (termscript, "<M_INIT>"); @@ -325,13 +341,7 @@ doesn't do that automatically when function 21h is called, which causes Emacs to ``remember'' the click that switched focus to the window just before Emacs was started from that window. */ - for (b = 0; b < mouse_button_count; b++) - { - int dummy_x, dummy_y; - - (void) mouse_pressed (b, &dummy_x, &dummy_y); - (void) mouse_released (b, &dummy_x, &dummy_y); - } + mouse_clear_clicks (); regs.x.ax = 0x0007; regs.x.cx = 0; @@ -3916,6 +3926,9 @@ (which invoked the menu) too quickly. If we don't remove these events, Emacs will process them after we return and surprise the user. */ discard_mouse_events (); + mouse_clear_clicks (); + if (!kbd_buffer_events_waiting (1)) + clear_input_pending (); /* Allow mouse events generation by dos_rawgetc. */ mouse_preempted--; return result;