diff options
author | Eli Zaretskii <eliz@gnu.org> | 2012-05-26 12:56:31 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2012-05-26 12:56:31 +0300 |
commit | 42e3a3615714b47d5ce96a79cf0d773d3266c825 (patch) | |
tree | 80f882b5f2aa96818aeee922d5c5e8b3e5f79bc5 /src/w32inevt.c | |
parent | eb3f6f01890259b11fa72b21aee4bf900abd18a9 (diff) | |
download | emacs-42e3a3615714b47d5ce96a79cf0d773d3266c825.tar.gz |
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.
Diffstat (limited to 'src/w32inevt.c')
-rw-r--r-- | src/w32inevt.c | 26 |
1 files changed, 18 insertions, 8 deletions
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 <http://www.gnu.org/licenses/>. */ #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; } |