From 706ddb8f9a2b4817c60501b27de0af41844a2b4f Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Thu, 12 Dec 2002 19:56:41 +0000 Subject: [PATCH] (last_mousemove_x, last_mousemove_y): New variables. (w32_read_socket) : Use them to detect non-movement. Be more careful about when help_events are generated. --- src/ChangeLog | 6 ++++++ src/w32term.c | 25 +++++++++++++++++++++---- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 24970fa927f..ba7e2b9d486 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2002-12-12 Jason Rumney + + * w32term.c (last_mousemove_x, last_mousemove_y): New variables. + (w32_read_socket) : Use them to detect non-movement. + Be more careful about when help_events are generated. + 2002-12-12 Steven Tamm * macterm.c (mac_check_for_quit_char): Correctly set the diff --git a/src/w32term.c b/src/w32term.c index 84c9a3c1acd..73740b2555f 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -161,9 +161,11 @@ static Lisp_Object help_echo_window; static Lisp_Object help_echo_object; static int help_echo_pos; -/* Temporary variable for w32_read_socket. */ +/* Temporary variables for w32_read_socket. */ static Lisp_Object previous_help_echo; +static int last_mousemove_x = 0; +static int last_mousemove_y = 0; /* Non-zero means that a HELP_EVENT has been generated since Emacs start. */ @@ -8766,9 +8768,17 @@ w32_read_socket (sd, bufp, numchars, expected) break; case WM_MOUSEMOVE: + /* Ignore non-movement. */ + { + int x = LOWORD (msg.msg.lParam); + int y = HIWORD (msg.msg.lParam); + if (x == last_mousemove_x && y == last_mousemove_y) + break; + last_mousemove_x = x; + last_mousemove_y = y; + } + previous_help_echo = help_echo; - help_echo_object = help_echo_window = Qnil; - help_echo_pos = -1; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -8793,11 +8803,18 @@ w32_read_socket (sd, bufp, numchars, expected) /* If the contents of the global variable help_echo has changed, generate a HELP_EVENT. */ - if (help_echo != previous_help_echo) + if (help_echo != previous_help_echo || + (!NILP (help_echo) && !STRINGP (help_echo) && f->mouse_moved)) { Lisp_Object frame; int n; + if (help_echo == Qnil) + { + help_echo_object = help_echo_window = Qnil; + help_echo_pos = -1; + } + if (f) XSETFRAME (frame, f); else -- 2.39.2