]> git.eshelyaron.com Git - emacs.git/commitdiff
(mouse-drag-region): Fake up a mouse-motion event
authorRichard M. Stallman <rms@gnu.org>
Sun, 1 Nov 1998 18:17:40 +0000 (18:17 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 1 Nov 1998 18:17:40 +0000 (18:17 +0000)
if we did not get one for the final move.

lisp/mouse.el

index be760126499b0124d3466bc3e262b149c439d31c..b0044a4a991f562cd51c6d623d6e6ef83e7f1cea 100644 (file)
@@ -585,8 +585,27 @@ remains active.  Otherwise, it remains until the next input event."
                  (setq end-of-range (overlay-start mouse-drag-overlay)))
                 ((>= mouse-row bottom)
                  (mouse-scroll-subr start-window (1+ (- mouse-row bottom))
-                                    mouse-drag-overlay start-point)
+a                                   mouse-drag-overlay start-point)
                  (setq end-of-range (overlay-end mouse-drag-overlay))))))))))
+      ;; In case we did not get a mouse-motion event
+      ;; for the final move of the mouse before a drag event
+      ;; pretend that we did get one.
+      (when (and (memq 'drag (event-modifiers (car-safe event)))
+                (setq end (event-end event)
+                      end-point (posn-point end))
+                (eq (posn-window end) start-window)
+                (integer-or-marker-p end-point))
+
+       ;; Go to START-POINT first, so that when we move to END-POINT,
+       ;; if it's in the middle of intangible text,
+       ;; point jumps in the direction away from START-POINT.
+       (goto-char start-point)
+       (goto-char end-point)
+       (if (zerop (% click-count 3))
+           (setq end-of-range (point)))
+       (let ((range (mouse-start-end start-point (point) click-count)))
+         (move-overlay mouse-drag-overlay (car range) (nth 1 range))))
+
       (if (consp event)
          (let ((fun (key-binding (vector (car event)))))
            ;; Run the binding of the terminating up-event, if possible.