*** ./src/keyboard.c 2011-08-15 16:25:02.516887000 -0700 --- ../copy2/trunk/src/keyboard.c 2011-08-17 08:58:01.792927000 -0700 *************** *** 5630,5637 **** event->modifiers |= click_modifier; ignore_mouse_drag_p = 0; } ! else if (EQ (Fcar (Fcdr (start_pos)), Fcar (Fcdr (position)))) ! /* Mouse has returned to its original position. */ event->modifiers |= click_modifier; else { --- 5630,5649 ---- 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 ! a click. */ ! /* FIXME: OTOH if the buffer position has changed ! because of a timer or process filter rather than ! because of mouse movement, it should be considered as ! a click. But mouse-drag-region completely ignores ! this case and it hasn't caused any real problem, so ! it's probably OK to ignore it as well. */ ! && EQ (Fcar (Fcdr (start_pos)), Fcar (Fcdr (position)))) ! /* Mouse hasn't moved (much). */ event->modifiers |= click_modifier; else {