Mercurial > emacs
changeset 74621:130738a27be7
(ignore_mouse_drag_p): New global var.
(some_mouse_moved): Return 0 if it is non-zero.
(make_lispy_event): Generate click event on mouse up if
ignore_mouse_drag_p is non-zero, even if mouse moved.
Clear ignore_mouse_drag_p on mouse down/up.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 15 Dec 2006 00:22:57 +0000 |
parents | 2d8b71da75df |
children | 1d33c1199b82 |
files | src/keyboard.c |
diffstat | 1 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/keyboard.c Fri Dec 15 00:22:44 2006 +0000 +++ b/src/keyboard.c Fri Dec 15 00:22:57 2006 +0000 @@ -1438,13 +1438,25 @@ } /* If mouse has moved on some frame, return one of those frames. - Return 0 otherwise. */ + + Return 0 otherwise. + + If ignore_mouse_drag_p is non-zero, ignore (implicit) mouse movement + after resizing the tool-bar window. */ + +int ignore_mouse_drag_p; static FRAME_PTR some_mouse_moved () { Lisp_Object tail, frame; + if (ignore_mouse_drag_p) + { + //ignore_mouse_drag_p = 0; + return 0; + } + FOR_EACH_FRAME (tail, frame) { if (XFRAME (frame)->mouse_moved) @@ -5592,6 +5604,7 @@ double_click_count = 1; button_down_time = event->timestamp; *start_pos_ptr = Fcopy_alist (position); + ignore_mouse_drag_p = 0; } /* Now we're releasing a button - check the co-ordinates to @@ -5627,8 +5640,13 @@ ydiff = XINT (event->y) - XINT (XCDR (down)); } - if (xdiff < double_click_fuzz && xdiff > - double_click_fuzz - && ydiff < double_click_fuzz && ydiff > - double_click_fuzz + if (ignore_mouse_drag_p) + { + event->modifiers |= click_modifier; + ignore_mouse_drag_p = 0; + } + else if (xdiff < double_click_fuzz && xdiff > - double_click_fuzz + && ydiff < double_click_fuzz && ydiff > - double_click_fuzz /* Maybe the mouse has moved a lot, caused scrolling, and eventually ended up at the same screen position (but not buffer position) in which case it is a drag, not