diff lisp/mouse.el @ 487:54fa1a5c2d12

[xemacs-hg @ 2001-04-28 07:48:36 by ben] misc changes, some for 21.4 remove bogus lines setting zmacs_region_stays to 0. remove debug lines. Correct general info about init file. Fix up Cygwin section. More contributions. Fix spurious setting of zmacs-region-stays to t after a non-shift motion command. Sync up with FSF 20.7, to fix bugs handling some etags line formats. Move non-window-system specific code that was duplicated in all window systems into the generic code. * gutter.el (init-gutter): Removed. (unused) Clean up the rectangle code w.r.t. selections. You'll now get the right text copied into the primary selection (but not the clipboard yet, unfortunately -- that really requires defining our own rectangle type).
author ben
date Sat, 28 Apr 2001 07:48:46 +0000
parents 52626a2f02ef
children 7039e6323819
line wrap: on
line diff
--- a/lisp/mouse.el	Sat Apr 28 02:10:57 2001 +0000
+++ b/lisp/mouse.el	Sat Apr 28 07:48:46 2001 +0000
@@ -1039,30 +1039,34 @@
 	     ;;
 	     (and (eq (console-type) 'x)
 		  (sit-for 0.15 t))
+	     ;; zmacs-activate-region -> zmacs-activate-region-hook ->
+	     ;; activate-region-as-selection -> either own-selection or
+	     ;; mouse-track-activate-rectangular-selection
 	     (zmacs-activate-region)))
 	  ((console-on-window-system-p)
+	   ;; #### do we need this?  we don't do it when zmacs-regions = t
 	   (if (= start end)
 	       (disown-selection type)
-	     (if (consp default-mouse-track-extent)
-		 ;; own the rectangular region
-		 ;; this is a hack
-		 (let ((r default-mouse-track-extent))
-		   (save-excursion
-		     (set-buffer (get-buffer-create " *rect yank temp buf*"))
-		     (while r
-		       (insert (extent-string (car r)) "\n")
-		       (setq r (cdr r)))
-		     (own-selection (buffer-substring (point-min) (point-max)))
-		     (kill-buffer (current-buffer))))
-	       (own-selection (cons (set-marker (make-marker) start)
-				    (set-marker (make-marker) end))
-			      type)))))
+	     (activate-region-as-selection))))
     (if (and (eq 'x (console-type))
 	     (not (= start end)))
 	;; I guess cutbuffers should do something with rectangles too.
 	;; does anybody use them?
 	(x-store-cutbuffer (buffer-substring start end)))))
 
+(defun mouse-track-activate-rectangular-selection ()
+  (if (consp default-mouse-track-extent)
+      ;; own the rectangular region
+      ;; this is a hack
+      (let ((r default-mouse-track-extent))
+	(save-excursion
+	  (set-buffer (get-buffer-create " *rect yank temp buf*"))
+	  (erase-buffer)
+	  (while r
+	    (insert (extent-string (car r)) "\n")
+	    (setq r (cdr r)))
+	  (own-selection (buffer-substring (point-min) (point-max)))))))
+
 (defun default-mouse-track-deal-with-down-event (click-count)
   (let ((event default-mouse-track-down-event))
     (if (null event) nil