changeset 81487:ec3f46cefb86

(mouse-drag-mode-line-1): Quit mouse tracking when event is not a cons cell. Do not unread drag-mouse-1 events. Select right window in check whether space was stolen from window above.
author Martin Rudalics <rudalics@gmx.at>
date Wed, 20 Jun 2007 07:55:25 +0000
parents 4fa637b72d35
children 43906bc5a394
files lisp/mouse.el
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/mouse.el	Wed Jun 20 07:54:01 2007 +0000
+++ b/lisp/mouse.el	Wed Jun 20 07:55:25 2007 +0000
@@ -433,9 +433,8 @@
 	  ;;   - there is a scroll-bar-movement event
 	  ;;     (same as mouse movement for our purposes)
 	  ;; quit if
-	  ;;   - there is a keyboard event or some other unknown event
-	  ;;     unknown event.
-	  (cond ((integerp event)
+	  ;;   - there is a keyboard event or some other unknown event.
+	  (cond ((not (consp event))
 		 (setq done t))
 
 		((memq (car event) '(switch-frame select-window))
@@ -443,7 +442,11 @@
 
 		((not (memq (car event) '(mouse-movement scroll-bar-movement)))
 		 (when (consp event)
-		   (push event unread-command-events))
+		   ;; Do not unread a drag-mouse-1 event since it will cause the
+		   ;; selection of the window above when dragging the modeline
+		   ;; above the selected window.
+		   (unless (eq (car event) 'drag-mouse-1)
+		     (push event unread-command-events)))
 		 (setq done t))
 
 		((not (eq (car mouse) start-event-frame))
@@ -498,7 +501,10 @@
 			   (and (not should-enlarge-minibuffer)
 				(> growth 0)
 				mode-line-p
-				(/= top (nth 1 (window-edges)))))
+				(/= top
+				    (nth 1 (window-edges
+					    ;; Choose right window.
+					    start-event-window)))))
 		   (set-window-configuration wconfig)))))))))
 
 (defun mouse-drag-mode-line (start-event)