From: Eli Zaretskii Date: Tue, 9 Sep 2014 15:00:51 +0000 (+0300) Subject: Fix mouse-dragging mode lines on text-mode terminals. X-Git-Tag: emacs-24.3.94~48 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=da604136b92764f159442496a9b18cb48204787e;p=emacs.git Fix mouse-dragging mode lines on text-mode terminals. lisp/mouse.el (mouse-drag-line): On text-mode frames, count the mode line and header line as 1 pixel. This fixes the 1-"pixel" (row) discrepancy between window-pixel-edges and mouse events, and avoids moving mode line up when the mouse click is on the modeline and no drag is attempted. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2bd234e12e0..9f31741a1c5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2014-09-09 Eli Zaretskii + + * mouse.el (mouse-drag-line): On text-mode frames, count the mode + line and header line as 1 pixel. This fixes the 1-"pixel" (row) + discrepancy between window-pixel-edges and mouse events, and + avoids moving mode line up when the mouse click is on the modeline + and no drag is attempted. + 2014-09-08 Glenn Morris * calendar/calendar.el (calendar-basic-setup): diff --git a/lisp/mouse.el b/lisp/mouse.el index 99407d9f9cf..d84c6c119ed 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -395,7 +395,16 @@ must be one of the symbols `header', `mode', or `vertical'." ;; Check whether header-line can be dragged at all. (if (window-at-side-p window 'top) (setq draggable nil) - (setq height (/ (window-header-line-height window) 2)) + ;; window-pixel-edges includes the header and mode lines, so + ;; we need to account for that when calculating window growth. + ;; On GUI frames, assume the mouse is approximately in the + ;; middle of the header/mode line, so we need only half the + ;; height in pixels. + (setq height + (cond + ((display-graphic-p frame) + (/ (window-header-line-height window) 2)) + (t (window-header-line-height window)))) (setq window (window-in-direction 'above window t)))) ((eq line 'mode) ;; Check whether mode-line can be dragged at all. @@ -410,7 +419,11 @@ must be one of the symbols `header', `mode', or `vertical'." (eq minibuffer-window (active-minibuffer-window)))))) (setq draggable nil) - (setq height (/ (window-mode-line-height window) 2)))) + (setq height + (cond + ((display-graphic-p frame) + (/ (window-mode-line-height window) 2)) + (t (window-mode-line-height window)))))) ((eq line 'vertical) ;; Get the window to adjust for the vertical case. If the scroll ;; bar is on the window's right or we drag a vertical divider,