aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2004-10-27 17:44:59 +0000
committerRichard M. Stallman2004-10-27 17:44:59 +0000
commitd3d3d650eff1be4272aa06978a1e59c249e1e104 (patch)
tree328a9fb35a93db81c692c769339c30964aa0359b
parent4f8e58ec5f5762dcd79e944ee135c4bb150b425c (diff)
downloademacs-d3d3d650eff1be4272aa06978a1e59c249e1e104.tar.gz
emacs-d3d3d650eff1be4272aa06978a1e59c249e1e104.zip
(mouse-show-mark): Do most processing the same
regardless of transient-mark-mode.
-rw-r--r--lisp/mouse.el97
1 files changed, 49 insertions, 48 deletions
diff --git a/lisp/mouse.el b/lisp/mouse.el
index abf62a97836..8632cceb19e 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -1025,54 +1025,55 @@ If MODE is 2 then do the same for lines."
1025 "List of keys which shall cause the mouse region to be deleted.") 1025 "List of keys which shall cause the mouse region to be deleted.")
1026 1026
1027(defun mouse-show-mark () 1027(defun mouse-show-mark ()
1028 (if transient-mark-mode 1028 (let ((inhibit-quit t)
1029 (delete-overlay mouse-drag-overlay) 1029 (echo-keystrokes 0)
1030 (let ((inhibit-quit t) 1030 event events key ignore
1031 (echo-keystrokes 0) 1031 (x-lost-selection-hooks (copy-sequence x-lost-selection-hooks)))
1032 event events key ignore 1032 (add-hook 'x-lost-selection-hooks
1033 x-lost-selection-hooks) 1033 (lambda (seltype)
1034 (add-hook 'x-lost-selection-hooks 1034 (if (eq seltype 'PRIMARY)
1035 (lambda (seltype) 1035 (progn (setq ignore t)
1036 (if (eq seltype 'PRIMARY) 1036 (throw 'mouse-show-mark t)))))
1037 (progn (setq ignore t) 1037 (if transient-mark-mode
1038 (throw 'mouse-show-mark t))))) 1038 (delete-overlay mouse-drag-overlay)
1039 (move-overlay mouse-drag-overlay (point) (mark t)) 1039 (move-overlay mouse-drag-overlay (point) (mark t)))
1040 (catch 'mouse-show-mark 1040 (catch 'mouse-show-mark
1041 ;; In this loop, execute scroll bar and switch-frame events. 1041 ;; In this loop, execute scroll bar and switch-frame events.
1042 ;; Also ignore down-events that are undefined. 1042 ;; Also ignore down-events that are undefined.
1043 (while (progn (setq event (read-event)) 1043 (while (progn (setq event (read-event))
1044 (setq events (append events (list event))) 1044 (setq events (append events (list event)))
1045 (setq key (apply 'vector events)) 1045 (setq key (apply 'vector events))
1046 (or (and (consp event) 1046 (or (and (consp event)
1047 (eq (car event) 'switch-frame)) 1047 (eq (car event) 'switch-frame))
1048 (and (consp event) 1048 (and (consp event)
1049 (eq (posn-point (event-end event)) 1049 (eq (posn-point (event-end event))
1050 'vertical-scroll-bar)) 1050 'vertical-scroll-bar))
1051 (and (memq 'down (event-modifiers event)) 1051 (and (memq 'down (event-modifiers event))
1052 (not (key-binding key)) 1052 (not (key-binding key))
1053 (not (mouse-undouble-last-event events)) 1053 (not (mouse-undouble-last-event events))
1054 (not (member key mouse-region-delete-keys))))) 1054 (not (member key mouse-region-delete-keys)))))
1055 (and (consp event) 1055 (and (consp event)
1056 (or (eq (car event) 'switch-frame) 1056 (or (eq (car event) 'switch-frame)
1057 (eq (posn-point (event-end event)) 1057 (eq (posn-point (event-end event))
1058 'vertical-scroll-bar)) 1058 'vertical-scroll-bar))
1059 (let ((keys (vector 'vertical-scroll-bar event))) 1059 (let ((keys (vector 'vertical-scroll-bar event)))
1060 (and (key-binding keys) 1060 (and (key-binding keys)
1061 (progn 1061 (progn
1062 (call-interactively (key-binding keys) 1062 (call-interactively (key-binding keys)
1063 nil keys) 1063 nil keys)
1064 (setq events nil))))))) 1064 (setq events nil)))))))
1065 ;; If we lost the selection, just turn off the highlighting. 1065 ;; If we lost the selection, just turn off the highlighting.
1066 (if ignore 1066 (if ignore
1067 nil 1067 nil
1068 ;; For certain special keys, delete the region. 1068 ;; For certain special keys, delete the region.
1069 (if (member key mouse-region-delete-keys) 1069 (if (member key mouse-region-delete-keys)
1070 (delete-region (overlay-start mouse-drag-overlay) 1070 (delete-region (overlay-start mouse-drag-overlay)
1071 (overlay-end mouse-drag-overlay)) 1071 (overlay-end mouse-drag-overlay))
1072 ;; Otherwise, unread the key so it gets executed normally. 1072 ;; Otherwise, unread the key so it gets executed normally.
1073 (setq unread-command-events 1073 (setq unread-command-events
1074 (nconc events unread-command-events)))) 1074 (nconc events unread-command-events))))
1075 (setq quit-flag nil) 1075 (setq quit-flag nil)
1076 (unless transient-mark-mode
1076 (delete-overlay mouse-drag-overlay)))) 1077 (delete-overlay mouse-drag-overlay))))
1077 1078
1078(defun mouse-set-mark (click) 1079(defun mouse-set-mark (click)