From c0ed41e742fe65573a14eaa02ebba9687b8cfc5b Mon Sep 17 00:00:00 2001 From: Jared Finder Date: Sun, 11 Oct 2020 20:16:00 -0700 Subject: [PATCH] Fixing bug where the wrong menu would be triggered by mouse. 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 | 6 ++++++ lisp/xt-mouse.el | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 22fae028d3..3df72ea0f0 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -2669,6 +2669,12 @@ menu-bar-open-mouse 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 diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index e838219960..be261cebab 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -267,7 +267,7 @@ xterm-mouse-event (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) -- 2.20.1