summaryrefslogtreecommitdiff
path: root/src/frame.h
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2012-11-22 13:32:32 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2012-11-22 13:32:32 +0400
commit5c74767510841c8afc35f66f5cb068fe99f29615 (patch)
treebc21f52790ac994e4d635b5d13f1947e0f61fed3 /src/frame.h
parent0e70ce9335996bd21c6b7f4ae0bf6b2924b89d4f (diff)
* alloc.c (Fgarbage_collect): Unblock input after clearing
gc_in_progress to avoid note_mouse_highlight glitch with GC. * frame.h (FRAME_MOUSE_UPDATE): New macro. * msdos.c (IT_frame_up_to_date): Use it here... * w32term.c (w32_frame_up_to_date): ...here... * xterm.c (XTframe_up_to_date): ...and here... * nsterm.m (ns_frame_up_to_date): ...but not here. * lisp.h (Mouse_HLInfo): Remove mouse_face_deferred_gc member. Adjust users. * xdisp.c (message2_nolog, message3_nolog, note_mouse_highlight): Do not check whether GC is in progress.
Diffstat (limited to 'src/frame.h')
-rw-r--r--src/frame.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/frame.h b/src/frame.h
index 35cbc44bec..87c4fcb055 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -933,6 +933,21 @@ typedef struct frame *FRAME_PTR;
&& (frame_var = XCAR (list_var), 1)); \
list_var = XCDR (list_var))
+/* Reflect mouse movement when a complete frame update is performed. */
+
+#define FRAME_MOUSE_UPDATE(frame) \
+ do { \
+ Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (frame); \
+ if (frame == hlinfo->mouse_face_mouse_frame) \
+ { \
+ block_input (); \
+ if (hlinfo->mouse_face_mouse_frame) \
+ note_mouse_highlight (hlinfo->mouse_face_mouse_frame, \
+ hlinfo->mouse_face_mouse_x, \
+ hlinfo->mouse_face_mouse_y); \
+ unblock_input (); \
+ } \
+ } while (0)
extern Lisp_Object Qframep, Qframe_live_p;
extern Lisp_Object Qtty, Qtty_type;