aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Yen-Xun Lee2017-05-27 16:25:02 +0300
committerEli Zaretskii2017-05-27 16:25:02 +0300
commitb0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9 (patch)
tree76116654eb5130be80c2f84ba94b84c4c3b4a33c
parent704fea97e495b43e4bbd03f28d0ccc66b45e80a8 (diff)
downloademacs-b0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9.tar.gz
emacs-b0177da7fe51b267de6ffa84a38bd0ec3f6c0fa9.zip
Fix ruler-mode text-scaling issues
* lisp/ruler-mode.el (ruler-mode-text-scaled-width): New function for computing scaled text width. (ruler-mode-text-scaled-window-hscroll) (ruler-mode-text-scaled-window-width): Compute text scaled `window-width' value. (ruler-mode-mouse-grab-any-column, ruler-mode-mouse-add-tab-stop) (ruler-mode-ruler): Change `window-hscroll' into `ruler-mode-text-scaled-window-hscroll', and change `window-width' into `ruler-mode-text-scaled-window-width'.
-rw-r--r--lisp/ruler-mode.el34
1 files changed, 24 insertions, 10 deletions
diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index 4f09a1887f5..7b0588dfead 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -360,6 +360,20 @@ START-EVENT is the mouse click event."
360That is `fill-column', `comment-column', `goal-column', or nil when 360That is `fill-column', `comment-column', `goal-column', or nil when
361nothing is dragged.") 361nothing is dragged.")
362 362
363(defun ruler-mode-text-scaled-width (width)
364 "Compute scaled text width according to current font scaling.
365Convert a width of char units into a text-scaled char width units,
366Ex. `window-hscroll'."
367 (/ (* width (frame-char-width)) (default-font-width)))
368
369(defun ruler-mode-text-scaled-window-hscroll ()
370 "Text scaled `window-hscroll'."
371 (ruler-mode-text-scaled-width (window-hscroll)))
372
373(defun ruler-mode-text-scaled-window-width ()
374 "Text scaled `window-width'."
375 (ruler-mode-text-scaled-width (window-width)))
376
363(defun ruler-mode-mouse-grab-any-column (start-event) 377(defun ruler-mode-mouse-grab-any-column (start-event)
364 "Drag a column symbol on the ruler. 378 "Drag a column symbol on the ruler.
365Start dragging on mouse down event START-EVENT, and update the column 379Start dragging on mouse down event START-EVENT, and update the column
@@ -372,9 +386,9 @@ dragging. See also the variable `ruler-mode-dragged-symbol'."
372 (save-selected-window 386 (save-selected-window
373 (select-window (posn-window start)) 387 (select-window (posn-window start))
374 (setq col (ruler-mode-window-col (car (posn-col-row start))) 388 (setq col (ruler-mode-window-col (car (posn-col-row start)))
375 newc (+ col (window-hscroll))) 389 newc (+ col (ruler-mode-text-scaled-window-hscroll)))
376 (and 390 (and
377 (>= col 0) (< col (window-width)) 391 (>= col 0) (< col (ruler-mode-text-scaled-window-width))
378 (cond 392 (cond
379 393
380 ;; Handle the fill column. 394 ;; Handle the fill column.
@@ -457,8 +471,8 @@ Called on each mouse motion event START-EVENT."
457 (save-selected-window 471 (save-selected-window
458 (select-window (posn-window start)) 472 (select-window (posn-window start))
459 (setq col (ruler-mode-window-col (car (posn-col-row end))) 473 (setq col (ruler-mode-window-col (car (posn-col-row end)))
460 newc (+ col (window-hscroll))) 474 newc (+ col (ruler-mode-text-scaled-window-hscroll)))
461 (when (and (>= col 0) (< col (window-width))) 475 (when (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)))
462 (set ruler-mode-dragged-symbol newc))))) 476 (set ruler-mode-dragged-symbol newc)))))
463 477
464(defun ruler-mode-mouse-add-tab-stop (start-event) 478(defun ruler-mode-mouse-add-tab-stop (start-event)
@@ -473,8 +487,8 @@ START-EVENT is the mouse click event."
473 (save-selected-window 487 (save-selected-window
474 (select-window (posn-window start)) 488 (select-window (posn-window start))
475 (setq col (ruler-mode-window-col (car (posn-col-row start))) 489 (setq col (ruler-mode-window-col (car (posn-col-row start)))
476 ts (+ col (window-hscroll))) 490 ts (+ col (ruler-mode-text-scaled-window-hscroll)))
477 (and (>= col 0) (< col (window-width)) 491 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
478 (not (member ts tab-stop-list)) 492 (not (member ts tab-stop-list))
479 (progn 493 (progn
480 (message "Tab stop set to %d" ts) 494 (message "Tab stop set to %d" ts)
@@ -494,8 +508,8 @@ START-EVENT is the mouse click event."
494 (save-selected-window 508 (save-selected-window
495 (select-window (posn-window start)) 509 (select-window (posn-window start))
496 (setq col (ruler-mode-window-col (car (posn-col-row start))) 510 (setq col (ruler-mode-window-col (car (posn-col-row start)))
497 ts (+ col (window-hscroll))) 511 ts (+ col (ruler-mode-text-scaled-window-hscroll)))
498 (and (>= col 0) (< col (window-width)) 512 (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
499 (member ts tab-stop-list) 513 (member ts tab-stop-list)
500 (progn 514 (progn
501 (message "Tab stop at %d deleted" ts) 515 (message "Tab stop at %d deleted" ts)
@@ -648,11 +662,11 @@ Optional argument PROPS specifies other text properties to apply."
648 662
649(defun ruler-mode-ruler () 663(defun ruler-mode-ruler ()
650 "Compute and return a header line ruler." 664 "Compute and return a header line ruler."
651 (let* ((w (window-width)) 665 (let* ((w (ruler-mode-text-scaled-window-width))
652 (m (window-margins)) 666 (m (window-margins))
653 (f (window-fringes)) 667 (f (window-fringes))
654 (i 0) 668 (i 0)
655 (j (window-hscroll)) 669 (j (ruler-mode-text-scaled-window-hscroll))
656 ;; Setup the scrollbar, fringes, and margins areas. 670 ;; Setup the scrollbar, fringes, and margins areas.
657 (lf (ruler-mode-space 671 (lf (ruler-mode-space
658 'left-fringe 672 'left-fringe