summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2014-09-09 18:00:51 +0300
committerEli Zaretskii <eliz@gnu.org>2014-09-09 18:00:51 +0300
commitda604136b92764f159442496a9b18cb48204787e (patch)
tree2e7756156e7d31c78784b8a2f0a4a05f0f11fcfb
parentfeb7e20179471458b702ada2521272e913598314 (diff)
downloademacs-da604136b92764f159442496a9b18cb48204787e.tar.gz
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.
-rw-r--r--lisp/ChangeLog8
-rw-r--r--lisp/mouse.el17
2 files changed, 23 insertions, 2 deletions
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 <eliz@gnu.org>
+
+ * 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 <rgm@gnu.org>
* 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,