# HG changeset patch # User Kim F. Storm # Date 1166142177 0 # Node ID 130738a27be75e164b2a6fcdb5998db323345fe9 # Parent 2d8b71da75dfb1bc2044228288bb6d3c35a80441 (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. diff -r 2d8b71da75df -r 130738a27be7 src/keyboard.c --- 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