From 42e3a3615714b47d5ce96a79cf0d773d3266c825 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 26 May 2012 12:56:31 +0300 Subject: [PATCH] Refactor mouse highlight invocation for w32 console. src/w32inevt.c: Include termchar.h. (mouse_moved_to): Move the call to note_mouse_highlight from here... (do_mouse_event): ...to here. Call clear_mouse_face if mouse_face_hidden is set in the mouse highlight info. --- src/ChangeLog | 9 +++++++++ src/w32inevt.c | 26 ++++++++++++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 173ed04da73..1a90acbb23b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-05-26 Eli Zaretskii + + Refactor mouse highlight invocation for w32 console. + * w32inevt.c: Include termchar.h. + (mouse_moved_to): Move the call to note_mouse_highlight from here... + (do_mouse_event): ...to here. + Call clear_mouse_face if mouse_face_hidden is set in the mouse + highlight info. + 2012-05-26 Eli Zaretskii Support mouse highlight on w32 text-mode frames. diff --git a/src/w32inevt.c b/src/w32inevt.c index cd4a8dd1d49..da8ec0eadb7 100644 --- a/src/w32inevt.c +++ b/src/w32inevt.c @@ -37,6 +37,7 @@ along with GNU Emacs. If not, see . */ #include "dispextern.h" #include "blockinput.h" #include "termhooks.h" +#include "termchar.h" #include "w32heap.h" #include "w32term.h" @@ -562,17 +563,14 @@ w32_console_mouse_position (FRAME_PTR *f, UNBLOCK_INPUT; } -/* Remember mouse motion, notify emacs, and trigger mouse highlight. */ +/* Remember mouse motion and notify emacs. */ static void mouse_moved_to (int x, int y) { /* If we're in the same place, ignore it. */ if (x != movement_pos.X || y != movement_pos.Y) { - FRAME_PTR f = SELECTED_FRAME (); - - f->mouse_moved = 1; - note_mouse_highlight (f, x, y); + SELECTED_FRAME ()->mouse_moved = 1; movement_pos.X = x; movement_pos.Y = y; movement_time = GetTickCount (); @@ -607,10 +605,22 @@ do_mouse_event (MOUSE_EVENT_RECORD *event, if (event->dwEventFlags == MOUSE_MOVED) { - /* For movement events we just note that the mouse has moved so - that emacs will generate drag events and perhaps trigger - mouse highlighting. */ + FRAME_PTR f = SELECTED_FRAME (); + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); + mouse_moved_to (event->dwMousePosition.X, event->dwMousePosition.Y); + + if (f->mouse_moved) + { + if (hlinfo->mouse_face_hidden) + { + hlinfo->mouse_face_hidden = 0; + clear_mouse_face (hlinfo); + } + + note_mouse_highlight (f, event->dwMousePosition.X, + event->dwMousePosition.Y); + } return 0; } -- 2.39.2