Function: menu-bar-item-at-x
menu-bar-item-at-x is a byte-compiled function defined in
menu-bar.el.gz.
Signature
(menu-bar-item-at-x X-POSITION)
Documentation
Return a cons of the form (KEY . X) for a menu item.
The returned X is the left X coordinate for that menu item.
X-POSITION is the X coordinate being queried. If nothing is clicked on, returns nil.
Source Code
;; Defined in /usr/src/emacs/lisp/menu-bar.el.gz
(defun menu-bar-item-at-x (x-position)
"Return a cons of the form (KEY . X) for a menu item.
The returned X is the left X coordinate for that menu item.
X-POSITION is the X coordinate being queried. If nothing is clicked on,
returns nil."
(let ((column 0)
(menu-bar (menu-bar-keymap))
prev-key
prev-column
keys-seen
found)
(catch 'done
(map-keymap
(lambda (key binding)
(unless (memq key keys-seen)
(push key keys-seen)
(when (> column x-position)
(setq found t)
(throw 'done nil))
(setq prev-key key)
(pcase binding
((or `(,(and (pred stringp) name) . ,_) ;Simple menu item.
`(menu-item ,name ,_cmd ;Extended menu item.
. ,(and props
(guard (let ((visible
(plist-get props :visible)))
(or (null visible)
(eval visible)))))))
(setq prev-column column
column (+ column (length name) 1))))))
menu-bar)
;; Check the last menu item.
(when (> column x-position)
(setq found t)))
(if found
(cons prev-key prev-column)
nil)))