Mercurial > emacs
changeset 102983:945567648555
* subr.el (posn-col-row): Properly compute line spacing.
Suggested by Nikolaj Schumacher (Bug#2933).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Wed, 15 Apr 2009 22:41:20 +0000 |
parents | ab2250dc98c7 |
children | 3c287035dd2c |
files | lisp/subr.el |
diffstat | 1 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Wed Apr 15 22:39:51 2009 +0000 +++ b/lisp/subr.el Wed Apr 15 22:41:20 2009 +0000 @@ -930,13 +930,19 @@ (cons (scroll-bar-scale pair (window-width window)) 0)) (t (let* ((frame (if (framep window) window (window-frame window))) - (x (/ (car pair) (frame-char-width frame))) - (y (/ (cdr pair) (+ (frame-char-height frame) - (or (frame-parameter frame 'line-spacing) - ;; FIXME: Why the `default'? - (default-value 'line-spacing) - 0))))) - (cons x y)))))) + ;; FIXME: This should take line-spacing properties on + ;; newlines into account. + (spacing (when (display-graphic-p frame) + (or (with-current-buffer (window-buffer window) + line-spacing) + (frame-parameter frame 'line-spacing))))) + (cond ((floatp spacing) + (setq spacing (truncate (* spacing + (frame-char-height frame))))) + ((null spacing) + (setq spacing 0))) + (cons (/ (car pair) (frame-char-width frame)) + (/ (cdr pair) (+ (frame-char-height frame) spacing)))))))) (defun posn-actual-col-row (position) "Return the actual column and row in POSITION, measured in characters.