]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix a bug where the wrong menu would be triggered by mouse
authorJared Finder <jared@finder.org>
Mon, 12 Oct 2020 03:16:00 +0000 (20:16 -0700)
committerEli Zaretskii <eliz@gnu.org>
Sat, 24 Oct 2020 10:26:56 +0000 (13:26 +0300)
For layouts such as the following, clicking the "l" in Tools with the
right window focused would trigger the File menu, not the Tools menu.
This is because the event would have window coordinate (1 . 0).
Similarly, clicking the "p" in Help would trigger the Edit menu.

Example Emacs frame:
+--------------------------------------------------------+
|File Edit Options Buffers Tools Help                    |
|;; This buffer is for text$|;; This buffer is for text $|
|;; To create a file, visit$|;; To create a file, visit $|
|                           |                            |
|                           |                            |
|-UUU:----F1  *scratch*     |-UUU:----F1  *scratch*      |
|                                                        |
+--------------------------------------------------------+
* lisp/menu-bar.el (menu-bar-open-mouse): Reject clicks not on
the menu bar.
*lisp/xt-mouse.el (xterm-mouse-event): Pass the current frame to
'posn-at-x-y', to make the effect consistent with other mouse-handling
features.

lisp/menu-bar.el
lisp/xt-mouse.el

index e42602364d24fbb744432f33fa7d5c26ce64225d..f9afc8a5f31129b475ee8d9062010f81efb1fc27 100644 (file)
@@ -2672,6 +2672,12 @@ EVENT should be a mouse down or click event.
 Also see `menu-bar-open', which this calls.
 This command is to be used when you click the mouse in the menubar."
   (interactive "e")
+  ;; This only should be bound to clicks on the menu-bar, outside of
+  ;; any window.
+  (let ((window (posn-window (event-start event))))
+    (when window
+      (error "Event is inside window %s" window)))
+
   (let* ((x-position (car (posn-x-y (event-start event))))
          (menu-bar-item-cons (menu-bar-item-at-x x-position)))
     (menu-bar-open nil
index 3c0dfb65ecfe5b4341cce3e53c67067911a10d87..f9c08f9a17468122ce815172c565d67d600f29d7 100644 (file)
@@ -267,7 +267,7 @@ which is the \"1006\" extension implemented in Xterm >= 277."
                                                     (eq y 1)))
                                            'tab-bar
                                          'menu-bar))
-                             (nthcdr 2 (posn-at-x-y x y)))))
+                             (nthcdr 2 (posn-at-x-y x y (selected-frame))))))
              (event (list type posn)))
         (setcar (nthcdr 3 posn) timestamp)