emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 257ae88d4e: Improve ruler-mode dragging


From: Lars Ingebrigtsen
Subject: master 257ae88d4e: Improve ruler-mode dragging
Date: Tue, 22 Feb 2022 09:23:42 -0500 (EST)

branch: master
commit 257ae88d4e58a9b9eebf536475c457db2fd0102e
Author: Andrea Rossetti <andrea.rossetti@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Improve ruler-mode dragging
    
    * lisp/ruler-mode.el (ruler-mode-mouse-drag-any-column)
    (ruler-mode-mouse-add-tab-stop, ruler-mode-mouse-del-tab-stop):
    Adjust callers.
    
    * lisp/ruler-mode.el (ruler-mode-window-col): Fix dragging when
    stepping outside the header line (bug#17788).
    
    Copyright-paperwork-exempt: yes
---
 lisp/ruler-mode.el | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el
index afe1cd4bfd..f0efc20f03 100644
--- a/lisp/ruler-mode.el
+++ b/lisp/ruler-mode.el
@@ -279,21 +279,24 @@ or remove a tab stop.  
\\[ruler-mode-toggle-show-tab-stops] or
   (let ((edges (window-edges)))
     (- (nth 2 edges) (nth 0 edges))))
 
-(defsubst ruler-mode-window-col (n)
+(defsubst ruler-mode-window-col (event)
   "Return a column number relative to the selected window.
-N is a column number relative to selected frame.
+EVENT is the mouse event that gives the current column.
 If required, account for screen estate taken by `display-line-numbers'."
-  (if display-line-numbers
+  (let ((n (car (posn-col-row event))))
+    (when display-line-numbers
       ;; FIXME: ruler-mode relies on N being an integer, so if the
       ;; 'line-number' face is customized to use a font that is larger
       ;; or smaller than that of the default face, the alignment might
       ;; be off by up to half a column, unless the font width is an
       ;; integral multiple or divisor of the default face's font.
       (setq n (- n (round (line-number-display-width 'columns)))))
-  (- n
-     (or (car (window-margins)) 0)
-     (fringe-columns 'left)
-     (scroll-bar-columns 'left)))
+    (- n
+       (if (eq (posn-area event) 'header-line)
+           (+ (or (car (window-margins)) 0)
+              (fringe-columns 'left)
+              (scroll-bar-columns 'left))
+         0))))
 
 (defun ruler-mode-mouse-set-left-margin (start-event)
   "Set left margin end to the graduation where the mouse pointer is on.
@@ -370,7 +373,7 @@ dragging.  See also the variable 
`ruler-mode-dragged-symbol'."
          col newc oldc)
     (save-selected-window
       (select-window (posn-window start))
-      (setq col  (ruler-mode-window-col (car (posn-col-row start)))
+      (setq col  (ruler-mode-window-col start)
             newc (+ col (ruler-mode-text-scaled-window-hscroll)))
       (and
        (>= col 0) (< col (ruler-mode-text-scaled-window-width))
@@ -455,7 +458,7 @@ Called on each mouse motion event START-EVENT."
          col newc)
     (save-selected-window
       (select-window (posn-window start))
-      (setq col  (ruler-mode-window-col (car (posn-col-row end)))
+      (setq col  (ruler-mode-window-col end)
             newc (+ col (ruler-mode-text-scaled-window-hscroll)))
       (when (and (>= col 0) (< col (ruler-mode-text-scaled-window-width)))
         (set ruler-mode-dragged-symbol newc)))))
@@ -471,7 +474,7 @@ START-EVENT is the mouse click event."
       (when (eq start end) ;; mouse click
         (save-selected-window
           (select-window (posn-window start))
-          (setq col (ruler-mode-window-col (car (posn-col-row start)))
+          (setq col (ruler-mode-window-col start)
                 ts  (+ col (ruler-mode-text-scaled-window-hscroll)))
           (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
                (not (member ts tab-stop-list))
@@ -492,7 +495,7 @@ START-EVENT is the mouse click event."
       (when (eq start end) ;; mouse click
         (save-selected-window
           (select-window (posn-window start))
-          (setq col (ruler-mode-window-col (car (posn-col-row start)))
+          (setq col (ruler-mode-window-col start)
                 ts  (+ col (ruler-mode-text-scaled-window-hscroll)))
           (and (>= col 0) (< col (ruler-mode-text-scaled-window-width))
                (member ts tab-stop-list)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]