# HG changeset patch # User Richard M. Stallman # Date 835373721 0 # Node ID 0236199fc5f192e30e307de9e9bb04d56bb13306 # Parent fc94c6fcee69efb7d965cebc3f436302977195cf (mouse-drag-region): Be smart about which end gets point and which end gets the mark. diff -r fc94c6fcee69 -r 0236199fc5f1 lisp/mouse.el --- a/lisp/mouse.el Fri Jun 21 15:33:46 1996 +0000 +++ b/lisp/mouse.el Fri Jun 21 16:15:21 1996 +0000 @@ -574,9 +574,22 @@ (cons event unread-command-events))) (if (not (= (overlay-start mouse-drag-overlay) (overlay-end mouse-drag-overlay))) - (let (last-command this-command) - (push-mark (overlay-start mouse-drag-overlay) t t) - (goto-char (overlay-end mouse-drag-overlay)) + (let* ((stop-point (posn-point (event-end event))) + ;; The end that comes from where we ended the drag. + ;; Point goes here. + (region-termination + (if (< stop-point start-point) + (overlay-start mouse-drag-overlay) + (overlay-end mouse-drag-overlay))) + ;; The end that comes from where we started the drag. + ;; Mark goes there. + (region-commencement + (- (+ (overlay-end mouse-drag-overlay) + (overlay-start mouse-drag-overlay)) + region-termination)) + last-command this-command) + (push-mark region-commencement t t) + (goto-char region-termination) (copy-region-as-kill (point) (mark t)) (mouse-show-mark) (mouse-set-region-1))