Commit 3f5c9cad authored by Chong Yidong's avatar Chong Yidong
Browse files

* w32-fns.el (x-selection-owner-p): New function.

* mouse.el (mouse-drag-track): Call deactivate-mark earlier.
(mouse-yank-at-click): If select-active-regions is non-nil,
deactivate the mark before insertion.

* simple.el (deactivate-mark, set-mark): Only save selection if we
own it.
parent db170c74
2009-07-17 David De La Harpe Golden <david@harpegolden.net>
* w32-fns.el (x-selection-owner-p): New function.
* mouse.el (mouse-drag-track): Call deactivate-mark earlier.
(mouse-yank-at-click): If select-active-regions is non-nil,
deactivate the mark before insertion.
* simple.el (deactivate-mark, set-mark): Only save selection if we
own it.
2009-07-17 Kenichi Handa <handa@m17n.org>
* case-table.el (describe-buffer-case-table): Fix for the case
......
......@@ -927,6 +927,11 @@ will be deleted after return. DO-MOUSE-DRAG-REGION-POST-PROCESS
should only be used by mouse-drag-region."
(mouse-minibuffer-check start-event)
(setq mouse-selection-click-count-buffer (current-buffer))
;; We must call deactivate-mark before repositioning point.
;; Otherwise, for select-active-regions non-nil, we get the wrong
;; selection if the user drags a region, clicks elsewhere to
;; reposition point, then middle-clicks to paste the selection.
(deactivate-mark)
(let* ((original-window (selected-window))
;; We've recorded what we needed from the current buffer and
;; window, now let's jump to the place of the event, where things
......@@ -971,7 +976,6 @@ should only be used by mouse-drag-region."
(mouse-move-drag-overlay mouse-drag-overlay start-point start-point
click-count)
(overlay-put mouse-drag-overlay 'window start-window)
(deactivate-mark)
(let (event end end-point last-end-point)
(track-mouse
(while (progn
......@@ -1360,10 +1364,16 @@ Also move point to one end of the text thus inserted (normally the end),
and set mark at the beginning.
Prefix arguments are interpreted as with \\[yank].
If `mouse-yank-at-point' is non-nil, insert at point
regardless of where you click."
regardless of where you click.
If `select-active-regions' is non-nil, the mark is deactivated
before inserting the text."
(interactive "e\nP")
;; Give temporary modes such as isearch a chance to turn off.
(run-hooks 'mouse-leave-buffer-hook)
(when select-active-regions
;; Without this, confusing things happen upon e.g. inserting into
;; the middle of an active region.
(deactivate-mark t))
(or mouse-yank-at-point (mouse-set-point click))
(setq this-command 'yank)
(setq mouse-selection-click-count 0)
......
......@@ -3489,6 +3489,7 @@ This function also runs `deactivate-mark-hook'."
;; Copy the latest region into the primary selection, if desired.
(and select-active-regions
mark-active
(x-selection-owner-p 'PRIMARY)
(x-set-selection 'PRIMARY (buffer-substring-no-properties
(region-beginning) (region-end))))
(if (and (null force)
......@@ -3533,8 +3534,12 @@ store it in a Lisp variable. Example:
(progn
(setq mark-active t)
(run-hooks 'activate-mark-hook)
(when select-active-regions
(x-set-selection 'PRIMARY (current-buffer)))
(and select-active-regions
;; Only set the selection if we already own PRIMARY. The
;; initial selection grab happens in `activate-mark', but
;; it is necessary to update it here.
(x-selection-owner-p 'PRIMARY)
(x-set-selection 'PRIMARY (current-buffer)))
(set-marker (mark-marker) pos (current-buffer)))
;; Normally we never clear mark-active except in Transient Mark mode.
;; But when we actually clear out the mark value too, we must
......
......@@ -294,12 +294,15 @@ shell requires it (see `w32-shell-dos-semantics')."
;;; Fix interface to (X-specific) mouse.el
(defun x-set-selection (type data)
(or type (setq type 'PRIMARY))
(put 'x-selections type data))
(put 'x-selections (or type 'PRIMARY) data))
(defun x-get-selection (&optional type data-type)
(or type (setq type 'PRIMARY))
(get 'x-selections type))
(get 'x-selections (or type 'PRIMARY)))
;; x-selection-owner-p is used in simple.el
(defun x-selection-owner-p (&optional type)
(and (memq type '(nil PRIMARY SECONDARY))
(get 'x-selections (or type 'PRIMARY))))
(defun set-w32-system-coding-system (coding-system)
"Set the coding system used by the Windows system to CODING-SYSTEM.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment