mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-09 09:16:02 -08:00
Fix picture-mouse-set-point calculation (Bug#7390).
* lisp/textmodes/picture.el (picture-mouse-set-point): Don't use posn-col-row; explicitly compute the motion based on the posn at the window-start (Bug#7390).
This commit is contained in:
parent
4d613e98a7
commit
de02effd8d
2 changed files with 29 additions and 9 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2010-11-13 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* textmodes/picture.el (picture-mouse-set-point): Don't use
|
||||
posn-col-row; explicitly compute the motion based on the posn at
|
||||
the window-start (Bug#7390).
|
||||
|
||||
2010-11-13 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* net/tramp.el (tramp-remote-coding-commands): Add an alternative
|
||||
|
|
|
|||
|
|
@ -226,16 +226,30 @@ Do \\[command-apropos] picture-movement to see commands which control motion."
|
|||
(picture-motion (- arg)))
|
||||
|
||||
(defun picture-mouse-set-point (event)
|
||||
"Move point to the position clicked on, making whitespace if necessary."
|
||||
"Move point to the position of EVENT, making whitespace if necessary."
|
||||
(interactive "e")
|
||||
(let* ((pos (posn-col-row (event-start event)))
|
||||
(x (car pos))
|
||||
(y (cdr pos))
|
||||
(current-row (count-lines (window-start) (line-beginning-position))))
|
||||
(unless (equal x (current-column))
|
||||
(picture-forward-column (- x (current-column))))
|
||||
(unless (equal y current-row)
|
||||
(picture-move-down (- y current-row)))))
|
||||
(let ((position (event-start event)))
|
||||
(unless (posn-area position) ; Ignore EVENT unless in text area
|
||||
(let* ((window (posn-window position))
|
||||
(frame (if (framep window) window (window-frame window)))
|
||||
(pair (posn-x-y position))
|
||||
(start-pos (window-start window))
|
||||
(start-pair (posn-x-y (posn-at-point start-pos)))
|
||||
(dx (- (car pair) (car start-pair)))
|
||||
(dy (- (cdr pair) (cdr start-pair)))
|
||||
(char-ht (frame-char-height frame))
|
||||
(spacing (when (display-graphic-p frame)
|
||||
(or (with-current-buffer (window-buffer window)
|
||||
line-spacing)
|
||||
(frame-parameter frame 'line-spacing))))
|
||||
rows cols)
|
||||
(cond ((floatp spacing)
|
||||
(setq spacing (truncate (* spacing char-ht))))
|
||||
((null spacing)
|
||||
(setq spacing 0)))
|
||||
(goto-char start-pos)
|
||||
(picture-move-down (/ dy (+ char-ht spacing)))
|
||||
(picture-forward-column (/ dx (frame-char-width frame)))))))
|
||||
|
||||
|
||||
;; Picture insertion and deletion.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue